From f613aa06951762b75e3106f691223309a84cb4bf Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 24 Jun 2015 12:40:33 +0300 Subject: [PATCH 001/557] Remaining validation profiles for 6.2 Graphics Clauses 6.2.8, 6.2.9 and 6.2.10 --- .../verapdf-profile-6-2-10-t01.xml | 23 +++++++++++++++++++ .../verapdf-profile-6-2-8-t01.xml | 21 +++++++++++++++++ .../verapdf-profile-6-2-8-t02.xml | 21 +++++++++++++++++ .../verapdf-profile-6-2-9-t01.xml | 23 +++++++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml create mode 100644 PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t01.xml create mode 100644 PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml create mode 100644 PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml diff --git a/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml new file mode 100644 index 00000000..4442f8fd --- /dev/null +++ b/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml @@ -0,0 +1,23 @@ + + + ISO 19005-1:2005 - 6.2.10 Content streams + A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operators + veraPDF Consortium + 2015-06-23T22:35:56Z + sha-1 hash code + + + A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operators + false + + A content stream contains an operator not defined in PDF Reference + + + ISO19005-1 + 6.2.10 + + + + diff --git a/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t01.xml new file mode 100644 index 00000000..739cade0 --- /dev/null +++ b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.2.8 Extended graphics state - TR key + An ExtGState dictionary shall not contain the TR key + veraPDF Consortium + 2015-06-23T21:28:29Z + sha-1 hash code + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + ISO19005-1 + 6.2.8 + + + + diff --git a/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml new file mode 100644 index 00000000..7194ece8 --- /dev/null +++ b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.2.8 Extended graphics state - TR2 key + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + veraPDF Consortium + 2015-06-23T21:34:12Z + sha-1 hash code + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + ISO19005-1 + 6.2.8 + + + + diff --git a/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml new file mode 100644 index 00000000..ae8770c7 --- /dev/null +++ b/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml @@ -0,0 +1,23 @@ + + + ISO 19005-1:2005 - 6.2.9 Rendering intents + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + veraPDF Consortium + 2015-06-23T22:35:56Z + sha-1 hash code + + + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + + A rendering intent with non-standard value is used + + + ISO19005-1 + 6.2.9 + + + + From 7c656a73f4689fd968cade0f82ff6374e9c6ab86 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 24 Jun 2015 12:41:11 +0300 Subject: [PATCH 002/557] Validation profiles for PDF/A-1, 6.4 Transparency --- .../verapdf-profile-6-4-t01.xml | 21 +++++++++++++++++ .../verapdf-profile-6-4-t02.xml | 21 +++++++++++++++++ .../verapdf-profile-6-4-t03.xml | 23 +++++++++++++++++++ .../verapdf-profile-6-4-t04.xml | 21 +++++++++++++++++ .../verapdf-profile-6-4-t05.xml | 21 +++++++++++++++++ .../verapdf-profile-6-4-t06.xml | 21 +++++++++++++++++ 6 files changed, 128 insertions(+) create mode 100644 PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml create mode 100644 PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml create mode 100644 PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml create mode 100644 PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml create mode 100644 PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml create mode 100644 PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml new file mode 100644 index 00000000..c873070b --- /dev/null +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.4 Transparency - SMask + If an SMask key appears in an ExtGState dictionary, its value shall be None + veraPDF Consortium + 2015-06-23T22:56:38Z + sha-1 hash code + + + If an SMask key appears in an ExtGState dictionary, its value shall be None + SMask == null || SMask == "None" + + An ExtGState contains SMask key with a value other than None + + + ISO19005-1 + 6.4 + + + + diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml new file mode 100644 index 00000000..73d86b65 --- /dev/null +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.4 Transparency - SMask + An XObject dictionary shall not contain the SMask key + veraPDF Consortium + 2015-06-24T10:23:11Z + sha-1 hash code + + + An XObject dictionary shall not contain the SMask key + SMask_size == 0 + + An XObject contains an SMask key + + + ISO19005-1:2005/Cor.2:2011 + 6.4 + + + + diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml new file mode 100644 index 00000000..d3c315c8 --- /dev/null +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml @@ -0,0 +1,23 @@ + + + ISO 19005-1:2005 - 6.4 Transparency - Transparency group + A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionary + veraPDF Consortium + 2015-06-24T10:32:19Z + sha-1 hash code + + + A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionary + S != "Transparency" + + A transparency group is present in a form XObject or page dictionary + + + ISO19005-1:2005/Cor.2:2011 + 6.4 + + + + diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml new file mode 100644 index 00000000..24779ace --- /dev/null +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.4 Transparency - Blend mode + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible + veraPDF Consortium + 2015-06-24T10:44:51Z + sha-1 hash code + + + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible + BM == null || BM == "Normal" || BM == "Compatible" + + An ExtGState dictionary contains contains the BM key (blend mode) with a value other than Normal or Compatible + + + ISO19005-1 + 6.4 + + + + diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml new file mode 100644 index 00000000..baf346d8 --- /dev/null +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.4 Transparency - Stroke alpha + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + veraPDF Consortium + 2015-06-24T10:50:27Z + sha-1 hash code + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + CA == null || CA == 1.0 + + An ExtGState dictionary contains contains the CA key (stroke alpha) with a value other than 1.0 + + + ISO19005-1 + 6.4 + + + + diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml new file mode 100644 index 00000000..93f77227 --- /dev/null +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.4 Transparency - Fill alpha + The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0 + veraPDF Consortium + 2015-06-24T10:51:13Z + sha-1 hash code + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + ca == null || ca == 1.0 + + An ExtGState dictionary contains contains the ca key (fill alpha) with a value other than 1.0 + + + ISO19005-1 + 6.4 + + + + From 25a8e965c4dac9ee69151b48771a68b4e10f0048 Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Fri, 26 Jun 2015 15:21:56 +0300 Subject: [PATCH 003/557] 6.7.2 part of metadata validation completed --- .../6.7.2/verapdf-profile-6-7-2-t01.xml | 21 +++++++++++++++++++ .../6.7.2/verapdf-profile-6-7-2-t02.xml | 21 +++++++++++++++++++ .../6.7.2/verapdf-profile-6-7-2-t03.xml | 21 +++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t03.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml new file mode 100644 index 00000000..637a2608 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key + The document catalog dictionary of a conforming file shall contain the Metadata key. + veraPDF Consortium + 2015-06-26T14:30:10Z + sha-1 hash code + + + The document catalog dictionary of a conforming file shall contain the Metadata key. + metadata_size + + The document catalog dictionary doesn't contain metadata key. + + + ISO 19005-1:2005 + 6.7.2 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml new file mode 100644 index 00000000..084ddf6a --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.2 XMP Package - Conforms to XMP Specification. + The metadata stream shall conform to XMP Specification. + veraPDF Consortium + 2015-06-26T15:12:55Z + sha-1 hash code + + + The metadata stream shall conform to XMP Specification. + isMetadataValid + + The metadata stream isn't conform to XMP Specification. + + + ISO 19005-1:2005 + 6.7.2 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t03.xml new file mode 100644 index 00000000..2528f50d --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t03.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key + Metadata object stream dictionaries shall not contain the Filter key. + veraPDF Consortium + 2015-06-26T15:20:40Z + sha-1 hash code + + + Metadata object stream dictionaries shall not contain the Filter key. + Filter == null + + The metadata object stream dictionary contains the Filter key. + + + ISO 19005-1:2005 + 6.7.2 + + + + From aef4319b900e82801ae8fe82e1fc44a62cdff5b2 Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Mon, 29 Jun 2015 11:51:05 +0300 Subject: [PATCH 004/557] Validation profiles for XMP Metadata. TODO: make profiles for false friends properties and schemas and to think about corr property of pdfaid schema. --- .../6.7.11/verapdf-profile-6-7-11-t01.xml | 21 +++++++++++++++++ .../6.7.11/verapdf-profile-6-7-11-t02.xml | 22 ++++++++++++++++++ .../6.7.11/verapdf-profile-6-7-11-t03.xml | 22 ++++++++++++++++++ .../6.7.2/verapdf-profile-6-7-2-t01.xml | 2 +- .../6.7.2/verapdf-profile-6-7-2-t02.xml | 14 +++++------ .../6.7.2/verapdf-profile-6-7-2-t03.xml | 21 ----------------- .../6.7.3/verapdf-profile-6-7-3-t01.xml | 21 +++++++++++++++++ .../6.7.5/verapdf-profile-6-7-5-t01.xml | 21 +++++++++++++++++ .../6.7.5/verapdf-profile-6-7-5-t02.xml | 21 +++++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t01.xml | 22 ++++++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t02.xml | 22 ++++++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t03.xml | 22 ++++++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t04.xml | 21 +++++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t05.xml | 21 +++++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t06.xml | 21 +++++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t07.xml | 21 +++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t01.xml | 21 +++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t02.xml | 23 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t03.xml | 23 +++++++++++++++++++ 19 files changed, 353 insertions(+), 29 deletions(-) create mode 100644 PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t03.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml new file mode 100644 index 00000000..3294be5d --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + veraPDF Consortium + 2015-06-29T10:13:55Z + sha-1 hash code + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + ispdfaidNSPresent + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + ISO 19005-1:2005 + 6.7.11 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml new file mode 100644 index 00000000..d0ffde07 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml @@ -0,0 +1,22 @@ + + + ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + veraPDF Consortium + 2015-06-29T10:15:00Z + sha-1 hash code + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + part == 1 + + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + part + + + ISO 19005-1:2005 + 6.7.11 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml new file mode 100644 index 00000000..1190fc53 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml @@ -0,0 +1,22 @@ + + + ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + veraPDF Consortium + 2015-06-29T10:19:00Z + sha-1 hash code + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + conformance == "B" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. + conformance + + + ISO 19005-1:2005 + 6.7.11 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml index 637a2608..d9bff3d5 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml @@ -8,7 +8,7 @@ The document catalog dictionary of a conforming file shall contain the Metadata key. - metadata_size + metadata_size == 1 The document catalog dictionary doesn't contain metadata key. diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml index 084ddf6a..80e45559 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml @@ -1,16 +1,16 @@ - ISO 19005-1:2005 - 6.7.2 XMP Package - Conforms to XMP Specification. - The metadata stream shall conform to XMP Specification. + ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key + Metadata object stream dictionaries shall not contain the Filter key. veraPDF Consortium - 2015-06-26T15:12:55Z + 2015-06-26T15:20:40Z sha-1 hash code - - The metadata stream shall conform to XMP Specification. - isMetadataValid + + Metadata object stream dictionaries shall not contain the Filter key. + Filter == null - The metadata stream isn't conform to XMP Specification. + The metadata object stream dictionary contains the Filter key. ISO 19005-1:2005 diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t03.xml deleted file mode 100644 index 2528f50d..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t03.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key - Metadata object stream dictionaries shall not contain the Filter key. - veraPDF Consortium - 2015-06-26T15:20:40Z - sha-1 hash code - - - Metadata object stream dictionaries shall not contain the Filter key. - Filter == null - - The metadata object stream dictionary contains the Filter key. - - - ISO 19005-1:2005 - 6.7.2 - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml new file mode 100644 index 00000000..9f34ffda --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Document Information Dictionary entries embedded in XMP. + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + veraPDF Consortium + 2015-06-29T08:55:20Z + sha-1 hash code + + + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + doesInfoMatchXMP + + Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.3 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml new file mode 100644 index 00000000..785cb436 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.5 XMP Package - bytes attribute + The bytes attribute shall not be used in the header of an XMP packet. + veraPDF Consortium + 2015-06-29T09:02:30Z + sha-1 hash code + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + ISO 19005-1:2005 + 6.7.5 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml new file mode 100644 index 00000000..7ba86b9d --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.5 XMP Package - encoding attribute + The encoding attribute shall not be used in the header of an XMP packet. + veraPDF Consortium + 2015-06-29T09:04:30Z + sha-1 hash code + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + ISO 19005-1:2005 + 6.7.5 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml new file mode 100644 index 00000000..5b9b9103 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml @@ -0,0 +1,22 @@ + + + ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - Description + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + veraPDF Consortium + 2015-06-29T09:04:30Z + sha-1 hash code + + + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + isDefinitionCorrect + + Wrong definition of an extention schema with namespace URI: %1 + uri + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml new file mode 100644 index 00000000..77d84ad8 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml @@ -0,0 +1,22 @@ + + + ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - Definition + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + veraPDF Consortium + 2015-06-29T09:18:21Z + sha-1 hash code + + + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + isDefinedInThisPackage + + Missed definition of an extention schema with namespace URI: %1 + uri + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml new file mode 100644 index 00000000..c010895c --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml @@ -0,0 +1,22 @@ + + + ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - PDF/A Extension Schema + The required PDF/A Extension Schema namespace prefix is pdfaExtension. + veraPDF Consortium + 2015-06-29T09:25:21Z + sha-1 hash code + + + The required PDF/A Extension Schema namespace prefix is pdfaExtension. + prefix == "pdfaExtension" + + A PDF/A Extension Schema namespace prefix is %1, but shall be "pdfaExtension". + prefix + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml new file mode 100644 index 00000000..0b312551 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - PDF/A Field Schema + A PDF/A Field Schema namespace prefix is required to be "pdfaField". + veraPDF Consortium + 2015-06-29T09:27:41Z + sha-1 hash code + + + A PDF/A Field Schema namespace prefix is required to be "pdfaField". + isPDFAFieldPrefixCorrect + + A PDF/A Field Schema namespace prefix is not "pdfaField". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml new file mode 100644 index 00000000..20e17498 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - PDF/A Property Schema + A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". + veraPDF Consortium + 2015-06-29T09:36:41Z + sha-1 hash code + + + A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". + isPDFAPropertyPrefixCorrect + + A PDF/A Property Schema namespace prefix is not "pdfaProperty". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml new file mode 100644 index 00000000..6255e70e --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - PDF/A Schema Description Schema + A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". + veraPDF Consortium + 2015-06-29T09:38:41Z + sha-1 hash code + + + A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". + isPDFASchemaPrefixCorrect + + A PDF/A Schema Description Schema namespace prefix is not "pdfaSchema". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml new file mode 100644 index 00000000..41f5f743 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - PDF/A ValueType Schema + A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". + veraPDF Consortium + 2015-06-29T09:39:41Z + sha-1 hash code + + + A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". + isPDFATypePrefixCorrect + + A PDF/A ValueType Schema namespace prefix is not "pdfaType". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml new file mode 100644 index 00000000..370ccc4c --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Package - Conforms to XMP Specification. + The metadata stream shall conform to XMP Specification. + veraPDF Consortium + 2015-06-29T09:44:55Z + sha-1 hash code + + + The metadata stream shall conform to XMP Specification. + isMetadataValid + + The metadata stream doesn't conform to XMP Specification. + + + ISO 19005-1:2005 + 6.7.9 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml new file mode 100644 index 00000000..9171e78f --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml @@ -0,0 +1,23 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-29T09:44:55Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + unknownProperties == null + + The predefined schema with namespace URI: %1 has unknown properties %2. + uri + unknownProperties + + + ISO 19005-1:2005 + 6.7.9 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml new file mode 100644 index 00000000..66c1386b --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml @@ -0,0 +1,23 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-29T09:52:55Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + wrongValueTypeProperties == null + + The predefined schema with namespace URI: %1 has wrong value type properties %2. + uri + wrongValueTypeProperties + + + ISO 19005-1:2005 + 6.7.9 + + + + From b33b904df464d531982b5b3aa6d463dc538bbb7a Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Tue, 30 Jun 2015 16:22:48 +0300 Subject: [PATCH 005/557] "False friends" checking validation profiles for PDF/A-1b. --- .../6.7.11/verapdf-profile-6-7-11-t04.xml | 21 ++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t01.xml | 3 +++ .../6.7.9/verapdf-profile-6-7-9-t02.xml | 5 +++- .../6.7.9/verapdf-profile-6-7-9-t03.xml | 5 +++- .../6.7.9/verapdf-profile-6-7-9-t04.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t05.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t06.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t07.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t08.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t09.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t10.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t11.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t12.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t13.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t14.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t15.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t16.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t17.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t18.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t19.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t20.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t21.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t22.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t23.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t24.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t25.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t26.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t27.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t28.xml | 24 +++++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t29.xml | 24 +++++++++++++++++++ 30 files changed, 656 insertions(+), 2 deletions(-) create mode 100644 PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t04.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t05.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t06.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t07.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t08.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t09.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t10.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t11.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t12.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t13.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t14.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t15.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t16.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t17.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t18.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t19.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t20.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t21.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t22.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t23.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t24.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t25.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t26.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t27.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t28.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t29.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml new file mode 100644 index 00000000..72ebae34 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. + veraPDF Consortium + 2015-06-30T13:21:00Z + sha-1 hash code + + + The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. + corr == null + + The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. + + + ISO 19005-1:2005 + 6.7.11 + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml index 370ccc4c..2ff23150 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml @@ -15,6 +15,9 @@ ISO 19005-1:2005 6.7.9 + + XMP Specification January 2004 + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml index 9171e78f..aef854cc 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml @@ -10,13 +10,16 @@ All predefined schemas shall conform to XMP specification. unknownProperties == null - The predefined schema with namespace URI: %1 has unknown properties %2. + The predefined schema with namespace URI %1 has unknown properties: %2. uri unknownProperties ISO 19005-1:2005 6.7.9 + + XMP Specification January 2004 + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml index 66c1386b..2cc7c286 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml @@ -10,13 +10,16 @@ All predefined schemas shall conform to XMP specification. wrongValueTypeProperties == null - The predefined schema with namespace URI: %1 has wrong value type properties %2. + The predefined schema with namespace URI %1 has properties of wrong type: %2. uri wrongValueTypeProperties ISO 19005-1:2005 6.7.9 + + XMP Specification January 2004 + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t04.xml new file mode 100644 index 00000000..d482cf97 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t04.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T13:36:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + author == null + + The property "Author" did not present in XMP Basic schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t05.xml new file mode 100644 index 00000000..22e6059a --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t05.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T14:41:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + description == null + + The property "Description" did not present in XMP Basic schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t06.xml new file mode 100644 index 00000000..59d6d7d0 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t06.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T14:46:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + label == null + + The property "Label" did not present in XMP Basic schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t07.xml new file mode 100644 index 00000000..713046ae --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t07.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T14:49:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + rating == null + + The property "Rating" did not present in XMP Basic schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t08.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t08.xml new file mode 100644 index 00000000..27416638 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t08.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T14:44:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + title == null + + The property "Title" did not present in XMP Basic schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t09.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t09.xml new file mode 100644 index 00000000..798af595 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t09.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T14:50:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + copyright == null + + The property "Copyright" did not present in XMP Rights Management schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t10.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t10.xml new file mode 100644 index 00000000..de86f9e8 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t10.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:26:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + manifest == null + + The property "Manifest" did not present in XMP Media Management schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t11.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t11.xml new file mode 100644 index 00000000..0a6719c5 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t11.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:27:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + colorants == null + + The property "Colorants" did not present in XMP Paged-Text schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t12.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t12.xml new file mode 100644 index 00000000..97c3df53 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t12.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:29:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + fonts == null + + The property "Fonts" did not present in XMP Paged-Text schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t13.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t13.xml new file mode 100644 index 00000000..c4c834f1 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t13.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:27:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + plateNames == null + + The property "PlateNames" did not present in XMP Paged-Text schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t14.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t14.xml new file mode 100644 index 00000000..02633e90 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t14.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:27:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + author == null + + The property "Author" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t15.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t15.xml new file mode 100644 index 00000000..0b3a66dc --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t15.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:27:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + baseURL == null + + The property "BaseURL" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t16.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t16.xml new file mode 100644 index 00000000..a976afdb --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t16.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:27:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + creationDate == null + + The property "CreationDate" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t17.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t17.xml new file mode 100644 index 00000000..c66f8c59 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t17.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:27:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + creator == null + + The property "Creator" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t18.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t18.xml new file mode 100644 index 00000000..3d0c89cf --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t18.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:50:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + modDate == null + + The property "ModDate" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t19.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t19.xml new file mode 100644 index 00000000..bd968037 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t19.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:51:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + subject == null + + The property "Subject" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t20.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t20.xml new file mode 100644 index 00000000..fbf661a8 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t20.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:27:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + title == null + + The property "Title" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t21.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t21.xml new file mode 100644 index 00000000..96d19a96 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t21.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:27:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + trapped == null + + The property "Trapped" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t22.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t22.xml new file mode 100644 index 00000000..a03c52a7 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t22.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:58:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + author == null + + The property "Author" did not present in Photoshop Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t23.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t23.xml new file mode 100644 index 00000000..61e4d6ae --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t23.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:58:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + copyright == null + + The property "Copyright" did not present in Photoshop Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t24.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t24.xml new file mode 100644 index 00000000..bfa5e806 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t24.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:58:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + history == null + + The property "History" did not present in Photoshop Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t25.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t25.xml new file mode 100644 index 00000000..47117473 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t25.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T15:58:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + title == null + + The property "Title" did not present in Photoshop Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t26.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t26.xml new file mode 100644 index 00000000..e83daa3d --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t26.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T16:10:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + false + + The Camera Raw Schema did not present in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t27.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t27.xml new file mode 100644 index 00000000..1f1efb6a --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t27.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T16:10:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + false + + The EXIF Schema for Additional EXIF Properties did not present in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t28.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t28.xml new file mode 100644 index 00000000..9186084c --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t28.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T16:10:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + false + + The XMP Dynamic Media Schema did not present in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t29.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t29.xml new file mode 100644 index 00000000..0df090bb --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t29.xml @@ -0,0 +1,24 @@ + + + ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. + All predefined schemas shall conform to XMP specification. + veraPDF Consortium + 2015-06-30T16:10:00Z + sha-1 hash code + + + All predefined schemas shall conform to XMP specification. + false + + The XMP Support Schema did not present in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + From fb1f49c86bcf53199d0f27436885ff95b609cf7f Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Wed, 1 Jul 2015 11:10:10 +0300 Subject: [PATCH 006/557] PDF/A Identification Schema prefix check. --- .../6.7.11/verapdf-profile-6-7-11-t05.xml | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml new file mode 100644 index 00000000..46ee7ad4 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml @@ -0,0 +1,22 @@ + + + ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + The PDF/A Identification Schema has required prefix "pdfaid". + veraPDF Consortium + 2015-06-29T10:15:00Z + sha-1 hash code + + + The PDF/A Identification Schema has required prefix "pdfaid". + prefix == "pdfaid" + + A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". + prefix + + + ISO 19005-1:2005 + 6.7.11 + + + + From 34369195ad3c1a8fe950ce0f15cae720ee579885 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 2 Jul 2015 13:36:39 +0300 Subject: [PATCH 007/557] Added profiles for Annotations and Actions Validation profiles covering ISO 19005-1: - Section 6.5 Annotations - Section 6.6 Actions --- .../verapdf-profile-6-1-3-t04.xml | 2 +- .../verapdf-profile-6-5-2-t01.xml | 30 ++++++++++++++++++ .../verapdf-profile-6-5-3-t01.xml | 21 +++++++++++++ .../verapdf-profile-6-5-3-t02.xml | 23 ++++++++++++++ .../verapdf-profile-6-5-3-t03.xml | 23 ++++++++++++++ .../verapdf-profile-6-5-3-t04.xml | 23 ++++++++++++++ .../verapdf-profile-6-6-1-t01.xml | 31 +++++++++++++++++++ .../verapdf-profile-6-6-1-t02.xml | 25 +++++++++++++++ .../verapdf-profile-6-6-1-t03.xml | 21 +++++++++++++ .../verapdf-profile-6-6-2-t01.xml | 21 +++++++++++++ .../verapdf-profile-6-6-2-t02.xml | 21 +++++++++++++ .../verapdf-profile-6-6-2-t03.xml | 21 +++++++++++++ 12 files changed, 261 insertions(+), 1 deletion(-) create mode 100644 PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml create mode 100644 PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml create mode 100644 PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml create mode 100644 PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml create mode 100644 PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml create mode 100644 PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml create mode 100644 PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml create mode 100644 PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml create mode 100644 PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml create mode 100644 PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml create mode 100644 PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml index d6123bdb..c350d439 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml @@ -15,7 +15,7 @@ Last ID is present in the Linearized PDF and does not match the first page ID - ISO 19005-1:2005/Cor 2:2011 + ISO 19005-1:2005/Cor.2:2011 6.1.3 diff --git a/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml b/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml new file mode 100644 index 00000000..145452ef --- /dev/null +++ b/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml @@ -0,0 +1,30 @@ + + + ISO 19005-1:2005 - 6.5.2 Annotation types + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permitted + veraPDF Consortium + 2015-06-30T22:56:18Z + sha-1 hash code + + + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" + + Unknown or not permitted annotation type + + + ISO19005-1 + 6.5.2 + + PDF 1.4 Reference + 8.4.5 + + + + + diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml new file mode 100644 index 00000000..91e4e8a8 --- /dev/null +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Transparency + An annotation dictionary shall not contain the CA key with a value other than 1.0 + veraPDF Consortium + 2015-06-30T23:12:45Z + sha-1 hash code + + + An annotation dictionary shall not contain the CA key with a value other than 1.0 + CA == null || CA == 1.0 + + An annotation dictionary contains the CA key with value other than 1.0 + + + ISO19005-1 + 6.5.3 + + + + diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml new file mode 100644 index 00000000..f1cc6d77 --- /dev/null +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml @@ -0,0 +1,23 @@ + + + ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Flags + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0 + veraPDF Consortium + 2015-06-30T23:19:34Z + sha-1 hash code + + + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0 + F != null && (F & 4) == 1 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 + + Annotation flags are either missing or have forbidden values + + + ISO19005-1 + 6.5.3 + + + + diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml new file mode 100644 index 00000000..54c48cf1 --- /dev/null +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml @@ -0,0 +1,23 @@ + + + ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - RGB color + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + veraPDF Consortium + 2015-06-30T23:41:04Z + sha-1 hash code + + + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + (C_size == 0 && IC_size == 0) || gOutputCS = "RGB " + + Annotation's color or interior color is used without specifying RGB-based destination output profile + + + ISO19005-1 + 6.5.3 + + + + diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml new file mode 100644 index 00000000..a9f7aca4 --- /dev/null +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml @@ -0,0 +1,23 @@ + + + ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance + If an annotation dictionary contains the AP key, the appearance dictionary that it defines as its value shall contain only the N key, + whose value shall be a stream defining the appearance of the annotation. + veraPDF Consortium + 2015-06-30T23:44:18Z + sha-1 hash code + + + If an annotation dictionary contains the AP key, the appearance dictionary that it defines as its value shall contain only the N key, + whose value shall be a stream defining the appearance of the annotation + AP == null || ( AP == "N" && ( (FT != "Btn" && N_type == "Stream") || (FT = "Btn" && N_type = "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + ISO19005-1 + 6.5.3 + + + + diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml new file mode 100644 index 00000000..01e14fd7 --- /dev/null +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -0,0 +1,31 @@ + + + ISO 19005-1:2005 - 6.6.1 Actions General - Action types + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op + actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + veraPDF Consortium + 2015-07-01T00:08:33Z + sha-1 hash code + + + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + ISO19005-1 + 6.6.1 + + PDF 1.4 Reference + 8.5.3 - Table 8.34 + + + + ISO19005-1:2005/Cor.2:2011 + 6.6.1 + + + + diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml new file mode 100644 index 00000000..7c61aaf9 --- /dev/null +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml @@ -0,0 +1,25 @@ + + + ISO 19005-1:2005 - 6.6.1 Actions General - Named actions + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + veraPDF Consortium + 2015-07-01T00:08:33Z + sha-1 hash code + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted action type + + + ISO19005-1 + 6.6.1 + + PDF 1.4 Reference + 8.5.3 - Named Actions - Table 8.45 + + + + + diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml new file mode 100644 index 00000000..e3166d7e --- /dev/null +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.6.1 Actions General - Form fields + Interactive form fields shall not perform actions of any type. + veraPDF Consortium + 2015-07-01T00:22:56Z + sha-1 hash code + + + Interactive form fields shall not perform actions of any type + Subtype != "Widget" || A_size == 0 + + Interactive form field contains an action object ('A' key) + + + ISO19005-1 + 6.6.1 + + + + diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml new file mode 100644 index 00000000..59206ad5 --- /dev/null +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.6.2 Trigger events - Widgets + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + veraPDF Consortium + 2015-07-01T00:30:31Z + sha-1 hash code + + + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + Subtype != "Widget" || AA_size == 0 + + A Widget annotation contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml new file mode 100644 index 00000000..85783319 --- /dev/null +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.6.2 Trigger events - Form fields + A Field dictionary shall not include an AA entry for an additional-actions dictionary + veraPDF Consortium + 2015-07-01T00:30:31Z + sha-1 hash code + + + A Field dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + A Field dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml new file mode 100644 index 00000000..00c65d20 --- /dev/null +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.6.2 Trigger events - Document + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + veraPDF Consortium + 2015-07-01T00:45:12Z + sha-1 hash code + + + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + From d6fc0f8b2f3cc361fb1b4f3a6e70e57e4ecb5059 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 2 Jul 2015 17:13:02 +0300 Subject: [PATCH 008/557] Added interactive forms support --- .../verapdf-profile-6-6-2-t02.xml | 6 +++--- .../verapdf-profile-6-9-t01.xml | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t01.xml diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml index 85783319..a46adf02 100644 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml @@ -3,10 +3,10 @@ ISO 19005-1:2005 - 6.6.2 Trigger events - Form fields A Field dictionary shall not include an AA entry for an additional-actions dictionary veraPDF Consortium - 2015-07-01T00:30:31Z + 2015-07-02T17:05:31Z sha-1 hash code - + A Field dictionary shall not include an AA entry for an additional-actions dictionary AA_size == 0 @@ -14,7 +14,7 @@ ISO19005-1 - 6.6.2 + 6.6.2, 6.9 diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t01.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t01.xml new file mode 100644 index 00000000..d2bfec60 --- /dev/null +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.9 Interactive Forms - Need Appearances + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false + veraPDF Consortium + 2015-07-02T17:12:38Z + sha-1 hash code + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + ISO19005-1 + 6.9 + + + + From b2c99a70adff3c375ca84afa8b9c9b574791bd4c Mon Sep 17 00:00:00 2001 From: Timur Kamalov Date: Mon, 13 Jul 2015 10:00:09 +0300 Subject: [PATCH 009/557] Update verapdf-profile-6-2-3-t02.xml --- .../6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml index c79cfab8..62a895b4 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml @@ -23,7 +23,7 @@ null - colorSpace + S == "GTS_PDFA1" ? colorSpace : gOutputCS From fc0fd0196a52444ea5da8a01b7c7b03323042184 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Mon, 13 Jul 2015 12:58:12 +0300 Subject: [PATCH 010/557] Add support of version check for 6-2-2-t01 --- .../6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml index fe214548..9a63cd1f 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml @@ -10,7 +10,7 @@ A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 4.0 The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information From 90ae2364d99afdfd6bf5a662064e3f27005e1fdb Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Mon, 13 Jul 2015 13:03:40 +0300 Subject: [PATCH 011/557] Modify object in 6.7.8 profiles --- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml | 2 +- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml | 2 +- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml | 2 +- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml | 2 +- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml index c010895c..f7006635 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml @@ -6,7 +6,7 @@ 2015-06-29T09:25:21Z sha-1 hash code - + The required PDF/A Extension Schema namespace prefix is pdfaExtension. prefix == "pdfaExtension" diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml index 0b312551..477b571f 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml @@ -6,7 +6,7 @@ 2015-06-29T09:27:41Z sha-1 hash code - + A PDF/A Field Schema namespace prefix is required to be "pdfaField". isPDFAFieldPrefixCorrect diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml index 20e17498..41289f4c 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml @@ -6,7 +6,7 @@ 2015-06-29T09:36:41Z sha-1 hash code - + A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". isPDFAPropertyPrefixCorrect diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml index 6255e70e..0f4549c4 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml @@ -6,7 +6,7 @@ 2015-06-29T09:38:41Z sha-1 hash code - + A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". isPDFASchemaPrefixCorrect diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml index 41f5f743..dce2dba0 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml @@ -6,7 +6,7 @@ 2015-06-29T09:39:41Z sha-1 hash code - + A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". isPDFATypePrefixCorrect From ee90a3ef950cc62d087e022f5d2c8da2a116850c Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Mon, 13 Jul 2015 15:49:07 +0300 Subject: [PATCH 012/557] Modify profiles for 6.7.8 clause --- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml | 2 +- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml | 2 +- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml | 2 +- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml | 2 +- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml index f7006635..6948e9bd 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml @@ -6,7 +6,7 @@ 2015-06-29T09:25:21Z sha-1 hash code - + The required PDF/A Extension Schema namespace prefix is pdfaExtension. prefix == "pdfaExtension" diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml index 477b571f..167c9043 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml @@ -6,7 +6,7 @@ 2015-06-29T09:27:41Z sha-1 hash code - + A PDF/A Field Schema namespace prefix is required to be "pdfaField". isPDFAFieldPrefixCorrect diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml index 41289f4c..840faed2 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml @@ -6,7 +6,7 @@ 2015-06-29T09:36:41Z sha-1 hash code - + A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". isPDFAPropertyPrefixCorrect diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml index 0f4549c4..b1a3d5e3 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml @@ -6,7 +6,7 @@ 2015-06-29T09:38:41Z sha-1 hash code - + A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". isPDFASchemaPrefixCorrect diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml index dce2dba0..885102d5 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml @@ -6,7 +6,7 @@ 2015-06-29T09:39:41Z sha-1 hash code - + A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". isPDFATypePrefixCorrect From 54e049d76a4e850fe130eddf9cd14cbb4942bbc5 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 13 Jul 2015 16:31:14 +0300 Subject: [PATCH 013/557] Added font-related validation profiles This covers the following clauses from ISO 19005-1: - 6.3.2 Font types - 6.3.3 Composite fonts - 6.3.4 Embedded font programs - 6.3.5 Font subsets - 6.3.6 Font metrics --- .../verapdf-profile-6-3-2-t01.xml | 39 +++++++++++++++++ .../verapdf-profile-6-3-2-t02.xml | 42 +++++++++++++++++++ .../verapdf-profile-6-3-2-t03.xml | 39 +++++++++++++++++ .../verapdf-profile-6-3-2-t04.xml | 31 ++++++++++++++ .../verapdf-profile-6-3-2-t05.xml | 31 ++++++++++++++ .../verapdf-profile-6-3-2-t06.xml | 31 ++++++++++++++ .../verapdf-profile-6-3-3-t01.xml | 27 ++++++++++++ .../verapdf-profile-6-3-3-t02.xml | 27 ++++++++++++ .../verapdf-profile-6-3-3-t03.xml | 25 +++++++++++ .../verapdf-profile-6-3-4-t01.xml | 27 ++++++++++++ .../verapdf-profile-6-3-5-t01.xml | 21 ++++++++++ .../verapdf-profile-6-3-6-t01.xml | 23 ++++++++++ 12 files changed, 363 insertions(+) create mode 100644 PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t04.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t03.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml new file mode 100644 index 00000000..1bcadad9 --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml @@ -0,0 +1,39 @@ + + + ISO 19005-1:2005 - 6.3.2 Font types - Type entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + veraPDF Consortium + 2015-07-04T11:07:38Z + sha-1 hash code + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml new file mode 100644 index 00000000..fa333b13 --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml @@ -0,0 +1,42 @@ + + + ISO 19005-1:2005 - 6.3.2 Font types - Subtype entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + veraPDF Consortium + 2015-07-04T11:07:38Z + sha-1 hash code + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml new file mode 100644 index 00000000..7e6c5b74 --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml @@ -0,0 +1,39 @@ + + + ISO 19005-1:2005 - 6.3.2 Font types - BaseFont entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the font + veraPDF Consortium + 2015-07-04T11:26:11Z + sha-1 hash code + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || BaseFont != null + + A BaseFont entry is missing or has invalid type + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t04.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t04.xml new file mode 100644 index 00000000..d5520970 --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t04.xml @@ -0,0 +1,31 @@ + + + ISO 19005-1:2005 - 6.3.2 Font types - FirstChar entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + veraPDF Consortium + 2015-07-04T11:26:11Z + sha-1 hash code + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml new file mode 100644 index 00000000..f3966a4f --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml @@ -0,0 +1,31 @@ + + + ISO 19005-1:2005 - 6.3.2 Font types - LastChat entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + veraPDF Consortium + 2015-07-04T11:49:54Z + sha-1 hash code + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml new file mode 100644 index 00000000..83d0b9bd --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml @@ -0,0 +1,31 @@ + + + ISO 19005-1:2005 - 6.3.2 Font types - Widths entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + veraPDF Consortium + 2015-07-04T11:55:44Z + sha-1 hash code + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml new file mode 100644 index 00000000..ed7d38b8 --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml @@ -0,0 +1,27 @@ + + + ISO 19005-1:2005 - 6.3.3 Composite fonts - Registry and Ordering + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatible + veraPDF Consortium + 2015-07-04T12:13:03Z + sha-1 hash code + + + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatible + areRegistryOrderingCompatible == true + + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + ISO19005-1 + 6.3.3.1 + + PDF 1.4 Reference + 5.6.2 + + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml new file mode 100644 index 00000000..3f0ca696 --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml @@ -0,0 +1,27 @@ + + + ISO 19005-1:2005 - 6.3.3 Composite fonts - CIDToGIDMap + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 + veraPDF Consortium + 2015-07-04T12:20:18Z + sha-1 hash code + + + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + ISO19005-1 + 6.3.3.2 + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t03.xml new file mode 100644 index 00000000..371f045a --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t03.xml @@ -0,0 +1,25 @@ + + + ISO 19005-1:2005 - 6.3.3 Composite fonts - CMaps + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + veraPDF Consortium + 2015-07-04T12:37:11Z + sha-1 hash code + + + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + A CMap is different from "Identity-H" or "Identity-V" and is not embedded + + + ISO19005-1 + 6.3.3.3 + + PDF 1.4 Reference + 5.6.4 + + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml new file mode 100644 index 00000000..664e723b --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml @@ -0,0 +1,27 @@ + + + ISO 19005-1:2005 - 6.3.4 Embedded font programs + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3 + veraPDF Consortium + 2015-07-04T12:43:21Z + sha-1 hash code + + + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3 + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + ISO19005-1 + 6.3.4 + + PDF 1.4 Reference + 5.8 + + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml new file mode 100644 index 00000000..0e0aaaf5 --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.3.5 Font subsets + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + veraPDF Consortium + 2015-07-04T12:55:42Z + sha-1 hash code + + + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + areReferencedGlyphsPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + ISO19005-1 + 6.3.5 + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml new file mode 100644 index 00000000..7730f20d --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml @@ -0,0 +1,23 @@ + + + ISO 19005-1:2005 - 6.3.6 Font metrics + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistent + veraPDF Consortium + 2015-07-04T12:58:33Z + sha-1 hash code + + + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistent + areWidthsConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + ISO19005-1 + 6.3.6 + + + + From 28be1dfac332680876bc02a8cd80ce1b90634e51 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Mon, 13 Jul 2015 17:07:28 +0300 Subject: [PATCH 014/557] Fix for 6-2-2t02 profile --- .../6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml index 20c0b9bf..1285cf86 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml @@ -10,7 +10,7 @@ If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destProfile == null || gOutputProfileRef == null || destProfile == gOutputProfileRef + destOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles From 27eafb93439319befc52ee5f105ce07240f04474 Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Tue, 14 Jul 2015 14:45:26 +0300 Subject: [PATCH 015/557] Change 6.4-t02 profile --- PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml index 73d86b65..91e76d97 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml @@ -6,7 +6,7 @@ 2015-06-24T10:23:11Z sha-1 hash code - + An XObject dictionary shall not contain the SMask key SMask_size == 0 From 78cb1c5f18adaecdc5cc424fe172571333172710 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 14 Jul 2015 16:37:45 +0300 Subject: [PATCH 016/557] Added the validation profile on F, FFilter and FDecodeParms keys --- .../verapdf-profile-6-1-7-t03.xml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml diff --git a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml new file mode 100644 index 00000000..bd07abee --- /dev/null +++ b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml @@ -0,0 +1,25 @@ + + + ISO 19005-1:2005 - 6.1.7 Stream objects - File specification + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + veraPDF Consortium + 2015-07-14T16:16:22Z + sha-1 hash code + + + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + ISO19005-1 + 6.1.7 + + + 19005-1:2005/Cor.2:2011 + 6.1.7 + + + + From 437df4cbee3b6b1c68603b3610d175923a6d9525 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 14 Jul 2015 17:08:52 +0300 Subject: [PATCH 017/557] Added validation profile for embedded files --- .../verapdf-profile-6-1-11-t02.xml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml diff --git a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml new file mode 100644 index 00000000..8e23fe48 --- /dev/null +++ b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml @@ -0,0 +1,25 @@ + + + ISO 19005-1:2005 - 6.1.11 Embedded files + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + veraPDF Consortium + 2015-07-14T16:52:37Z + sha-1 hash code + + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 + + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + + + ISO19005-1 + 6.1.7 + + PDF 1.4 Reference + 3.6.3 + + + + + From 82353eaded25c2510bc8ca42d87a98fd5e89950c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 14 Jul 2015 17:28:37 +0300 Subject: [PATCH 018/557] Added validation profile for DeviceGray color spaces DeviceGray color spaces can be used only if the output ICC profile is present (CMYK- or -RGB-based) --- .../verapdf-profile-6-2-3-t02.xml | 6 ++--- .../verapdf-profile-6-2-3-t03.xml | 6 ++--- .../verapdf-profile-6-2-3-t04.xml | 27 +++++++++++++++++++ 3 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t04.xml diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml index c79cfab8..b172ec81 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml @@ -1,15 +1,13 @@ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceRGB - If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in - 6.2.2. DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space veraPDF Consortium 2015-06-15T22:46:23Z sha-1 hash code - If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in - 6.2.2. DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space gOutputCS != null && gOutputCS == "RGB " DeviceRGB colour space is used without RGB output intent profile diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml index bea3afda..1bfadd2d 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml @@ -1,15 +1,13 @@ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceRGB - If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in - 6.2.2. DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space veraPDF Consortium 2015-06-15T22:46:23Z sha-1 hash code - If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in - 6.2.2. DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space gOutputCS != null && gOutputCS == "CMYK" DeviceCMYK colour space is used without CMYK output intent profile diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t04.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t04.xml new file mode 100644 index 00000000..2fd0e2b1 --- /dev/null +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t04.xml @@ -0,0 +1,27 @@ + + + ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceGray + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 + veraPDF Consortium + 2015-07-14T17:24:18Z + sha-1 hash code + + + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + From e9f52044bdd7c0d4ca5ebaa1fafaeb9ae6d40e25 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 14 Jul 2015 17:41:37 +0300 Subject: [PATCH 019/557] Added validation profile for optional content --- .../verapdf-profile-6-1-13-t01.xml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 PDF_A/1b/6.1 File structure/6.1.13 Optional content/verapdf-profile-6-1-13-t01.xml diff --git a/PDF_A/1b/6.1 File structure/6.1.13 Optional content/verapdf-profile-6-1-13-t01.xml b/PDF_A/1b/6.1 File structure/6.1.13 Optional content/verapdf-profile-6-1-13-t01.xml new file mode 100644 index 00000000..dd2aa72d --- /dev/null +++ b/PDF_A/1b/6.1 File structure/6.1.13 Optional content/verapdf-profile-6-1-13-t01.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.1.13 Optional content + The document catalog dictionary shall not contain a key with the name OCProperties + veraPDF Consortium + 2015-07-14T17:40:19Z + sha-1 hash code + + + The document catalog dictionary shall not contain a key with the name OCProperties + isOptionalContentPresent == false + + The document catalog dictionary contains the OCProperties entry + + + ISO19005-1 + 6.1.13 + + + + From d91a2815b48fc552b2bb0e9145613a4468d2e5d9 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 14 Jul 2015 18:02:34 +0300 Subject: [PATCH 020/557] Added validation rules forbidding actions in Widget annotations and Form fields --- .../verapdf-profile-6-9-t02.xml | 21 +++++++++++++++++++ .../verapdf-profile-6-9-t03.xml | 21 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml create mode 100644 PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml new file mode 100644 index 00000000..af167fd2 --- /dev/null +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.9 Interactive Fields - Widget annotations + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + veraPDF Consortium + 2015-07-14T17:57:23Z + sha-1 hash code + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + ISO19005-1 + 6.9 + + + + diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml new file mode 100644 index 00000000..fee90ba8 --- /dev/null +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.9 Interactive Fields - Form fields + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + veraPDF Consortium + 2015-07-14T17:58:06Z + sha-1 hash code + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + AA_size == 0 + + A Form field dictionary contains the AA entry + + + ISO19005-1 + 6.9 + + + + From 2ee7ba33bfee9e47130f7689a8d88e1c48de8ed2 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Tue, 14 Jul 2015 18:04:32 +0300 Subject: [PATCH 021/557] Delete verapdf-profile-6-6-2-t03.xml This validation profile is replaced by verapdf-profile-6-9-t02.xml --- .../verapdf-profile-6-6-2-t03.xml | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml deleted file mode 100644 index 00c65d20..00000000 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - ISO 19005-1:2005 - 6.6.2 Trigger events - Document - The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - veraPDF Consortium - 2015-07-01T00:45:12Z - sha-1 hash code - - - The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 - - The document catalog dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2 - - - - From 0e2e0e9e0d776d529d5b588ee20baba96a651de6 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 14 Jul 2015 18:36:48 +0300 Subject: [PATCH 022/557] Restored incorrectly deleted profile --- .../verapdf-profile-6-6-2-t03.xml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml new file mode 100644 index 00000000..6901d1ab --- /dev/null +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.6.2 Trigger events - Document + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + veraPDF Consortium + 2015-07-01T00:45:12Z + sha-1 hash code + + + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + \ No newline at end of file From e854c220505a9c1ae35c2661bc0938af2b61110c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 15 Jul 2015 10:27:21 +0300 Subject: [PATCH 023/557] Added validation rule for the N entry in the ICC profile stream --- .../verapdf-profile-6-2-3-t05.xml | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml new file mode 100644 index 00000000..3e0479b9 --- /dev/null +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml @@ -0,0 +1,27 @@ + + + ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.2 ICCBased colour spaces - N key + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + veraPDF Consortium + 2015-07-14T10:18:39Z + sha-1 hash code + + + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile + + + ISO19005-1 + 6.2.2, 6.2.3.2 + + PDF 1.4 Reference + 4.5.4, Table 4.16 + + + + + From 9396dcdff2c4b8a9b108389eaf39206cc73c267f Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Wed, 15 Jul 2015 15:04:26 +0300 Subject: [PATCH 024/557] Change test condition for 6-1-10t01 profile --- .../6.1.10 Filters/verapdf-profile-6-1-10-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml index 47ac06d0..3394ee53 100644 --- a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml @@ -8,7 +8,7 @@ The LZWDecode filter shall not be permitted - filters.indexOf("LZWDecode") == -1 + filters != "LZWDecode" LZW compression is used From f914676fbb524d8f840bfed3dae90c4368468ed2 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 15 Jul 2015 17:02:49 +0300 Subject: [PATCH 025/557] Fixed misprint in the profile description --- .../6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml index 1bfadd2d..70f9cc2f 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml @@ -1,6 +1,6 @@ - ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceRGB + ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceCMYK/name> DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space veraPDF Consortium 2015-06-15T22:46:23Z From d410fccf702540f3e191751e8606a77b8e558f9c Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Wed, 15 Jul 2015 17:14:16 +0300 Subject: [PATCH 026/557] Change message in 6.2.5 profile --- .../6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml index 1fd1d66d..4afa7030 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml @@ -10,7 +10,7 @@ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 - The from XObject dictionary contains a PS key or Subtype2 key with value PS + The form XObject dictionary contains a PS key or Subtype2 key with value PS ISO19005-1 From a69910449b9e03c50e19202cc2ebe6f5f4ab8180 Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Wed, 15 Jul 2015 17:26:41 +0300 Subject: [PATCH 027/557] Change text message in 6.4-t05 profile --- PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml index baf346d8..4d5cf1cc 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml @@ -10,7 +10,7 @@ The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 CA == null || CA == 1.0 - An ExtGState dictionary contains contains the CA key (stroke alpha) with a value other than 1.0 + An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 ISO19005-1 From 269cd316cbd5c843fc5c91bc0cd5621745a69449 Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Wed, 15 Jul 2015 17:29:55 +0300 Subject: [PATCH 028/557] Change messages in 6.4 profiles --- PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml | 2 +- PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml index 24779ace..6fdeaf4b 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml @@ -10,7 +10,7 @@ The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible BM == null || BM == "Normal" || BM == "Compatible" - An ExtGState dictionary contains contains the BM key (blend mode) with a value other than Normal or Compatible + An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible ISO19005-1 diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml index 93f77227..c3072b4c 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml @@ -10,7 +10,7 @@ The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 ca == null || ca == 1.0 - An ExtGState dictionary contains contains the ca key (fill alpha) with a value other than 1.0 + An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 ISO19005-1 From bf98a53bd37a29432f240c611bcb3dfd47e8477c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 20 Jul 2015 18:04:01 +0300 Subject: [PATCH 029/557] Added validness and version limit to input and output ICC profiles --- .../6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml | 3 ++- .../6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml index fe214548..fbf6a664 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml @@ -10,7 +10,8 @@ A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") + isValid == true && (deviceClass == "prtr" || deviceClass == "mntr") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version <= 2.3 The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml index a82db55d..d6ea496e 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml @@ -8,8 +8,8 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") + isValid == true && (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version <= 2.3 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements From 05fa119f5ccdbd91623ee742983f521abe6deb5f Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Tue, 21 Jul 2015 15:59:40 +0300 Subject: [PATCH 030/557] Modify 6.2.3.3-t03 profile --- .../6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml index 70f9cc2f..886e64af 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml @@ -1,6 +1,6 @@ - ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceCMYK/name> + ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceCMYK DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space veraPDF Consortium 2015-06-15T22:46:23Z From 1c779b0f20d7d5f258c094020edf5dcadc7bd1f6 Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Tue, 21 Jul 2015 17:47:27 +0300 Subject: [PATCH 031/557] Modify 6.5.3-t02 profile --- .../6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml index f1cc6d77..e393215a 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml @@ -10,7 +10,7 @@ An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, Invisible and NoView flag bits shall be set to 0 - F != null && (F & 4) == 1 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 + F != null && (F & 4) == 1 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 Annotation flags are either missing or have forbidden values From 2351f1181937576e7c25e0a71893e927dba6a8aa Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Mon, 3 Aug 2015 11:22:55 +0300 Subject: [PATCH 032/557] PT-224: Fix equals symbol --- .../verapdf-profile-6-5-3-t03.xml | 8 +++++++- .../verapdf-profile-6-5-3-t04.xml | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml index 54c48cf1..0ac8a710 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml @@ -10,7 +10,7 @@ An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (C_size == 0 && IC_size == 0) || gOutputCS = "RGB " + (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " Annotation's color or interior color is used without specifying RGB-based destination output profile @@ -20,4 +20,10 @@ + + + null + colorSpace + + diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml index a9f7aca4..046e71cb 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml @@ -10,7 +10,7 @@ If an annotation dictionary contains the AP key, the appearance dictionary that it defines as its value shall contain only the N key, whose value shall be a stream defining the appearance of the annotation - AP == null || ( AP == "N" && ( (FT != "Btn" && N_type == "Stream") || (FT = "Btn" && N_type = "Dict") ) ) + AP == null || ( AP == "N" && ( (FT != "Btn" && N_type == "Stream") || (FT == "Btn" && N_type == "Dict") ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type From c5f001bb94be1dfff42a2466dd026bd48250236e Mon Sep 17 00:00:00 2001 From: Timur Kamalov Date: Thu, 6 Aug 2015 16:08:46 +0300 Subject: [PATCH 033/557] Fixed validation profiles for widths and glyphs consistency according to the model changes --- .../6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml | 4 ++-- .../6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml index 0e0aaaf5..5151d0db 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml @@ -6,9 +6,9 @@ 2015-07-04T12:55:42Z sha-1 hash code - + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - areReferencedGlyphsPresent == true + isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml index 7730f20d..e457bebc 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml @@ -7,10 +7,10 @@ 2015-07-04T12:58:33Z sha-1 hash code - + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the font dictionary and in the embedded font program shall be consistent - areWidthsConsistent == true + isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary From 130e4a886f2c8ee148fcf881576e554699acf87d Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 19 Aug 2015 18:59:32 +0300 Subject: [PATCH 034/557] Synced version requirements for input and output ICC profiles --- .../6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml | 2 +- .../6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml index e473184c..e63d7eb4 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml @@ -10,7 +10,7 @@ A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 2.3 + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version <= 2.3 The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml index d6ea496e..4c795fcf 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml @@ -8,7 +8,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - isValid == true && (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version <= 2.3 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements From 9252a1b92bf8fd30bd7cd182ece7efe16495f39c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 20 Aug 2015 12:30:06 +0300 Subject: [PATCH 035/557] Two more implementation limits profiles - maximum DeviceN components is 8 - maximum nesting level of graphics states is 28 --- .../verapdf-profile-6-1-12-t08.xml | 25 +++++++++++++++++++ .../verapdf-profile-6-1-12-t09.xml | 25 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml create mode 100644 PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml new file mode 100644 index 00000000..309af981 --- /dev/null +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml @@ -0,0 +1,25 @@ + + + ISO 19005-1:2005 - 6.1.12 Implementation limits - Graphics state nesting + Maximum depth of graphics state nesting by q and Q operators is 28 + veraPDF Consortium + 2015-08-20T12:21:56Z + sha-1 hash code + + + Maximum depth of graphics state nesting by q and Q operators is 28 + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml new file mode 100644 index 00000000..bb23de71 --- /dev/null +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml @@ -0,0 +1,25 @@ + + + ISO 19005-1:2005 - 6.1.12 Implementation limits - DeviceN components + Maximum number of DeviceN components is 8 + veraPDF Consortium + 2015-08-20T12:14:23Z + sha-1 hash code + + + Maximum number of DeviceN components is 8 + nrComponenets <= 8 + + Maximum number of DeviceN components is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + From c802443fefae3018f4102157369fbdb1b285deb2 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 20 Aug 2015 14:50:26 +0300 Subject: [PATCH 036/557] Added a new validation profile for CID implementation limit --- .../verapdf-profile-6-1-12-t10.xml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml new file mode 100644 index 00000000..a4266cbb --- /dev/null +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml @@ -0,0 +1,25 @@ + + + ISO 19005-1:2005 - 6.1.12 Implementation limits - CID + Maximum value of a CID (character identifier) is 65,535 + veraPDF Consortium + 2015-08-20T14:48:51Z + sha-1 hash code + + + Maximum value of a CID (character identifier) is 65,535 + CID <= 65535 + + Maximum value of a CID (65,535) is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + From cc8f0591469057dace1bb48fa3b035440cd7c96c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 20 Aug 2015 15:41:46 +0300 Subject: [PATCH 037/557] Added validation profile for LZW compression in inline images --- .../verapdf-profile-6-1-10-t01.xml | 2 +- .../verapdf-profile-6-1-10-t02.xml | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml diff --git a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml index 3394ee53..c8f629ba 100644 --- a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml @@ -8,7 +8,7 @@ The LZWDecode filter shall not be permitted - filters != "LZWDecode" + filters == null || filters.indexOf("LZWDecode") == -1 LZW compression is used diff --git a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml new file mode 100644 index 00000000..ff921e26 --- /dev/null +++ b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.1.10 Filters - LZW in inline images + The LZWDecode filter shall not be permitted + veraPDF Consortium + 2015-08-20T15:37:34Z + sha-1 hash code + + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 + + LZW compression is used in the inline image + + + ISO19005-1 + 6.1.10 + + + + From 52f7d35d79a14d06b786583a9223e16fc9f6a987 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Mon, 24 Aug 2015 16:26:15 +0300 Subject: [PATCH 038/557] Fix syntax error --- .../6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml index bb23de71..c8c75015 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml @@ -8,7 +8,7 @@ Maximum number of DeviceN components is 8 - nrComponenets <= 8 + nrComponents <= 8 Maximum number of DeviceN components is exceeded From b7a8c689f01e5ad7e3b1a8cbeab4b4dbfd62cfdd Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 25 Aug 2015 11:36:53 +0300 Subject: [PATCH 039/557] Finalized validation profiles for TrueType font encodings --- .../verapdf-profile-6-3-7-t01.xml | 6 +++--- .../verapdf-profile-6-3-7-t02.xml | 6 +++--- .../verapdf-profile-6-3-7-t03.xml | 21 +++++++++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml index b5bf275d..74d0eaa2 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml @@ -5,14 +5,14 @@ or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. veraPDF Consortium - 2015-08-19T17:58:12Z + 2015-08-25T11:25:12Z sha-1 hash code - + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - Subtype != "TrueType" || isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml index fdc1c900..abc7515a 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml @@ -3,12 +3,12 @@ ISO 19005-1:2005 - 6.3.7 Character encodings - Symbolic TrueType fonts All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary veraPDF Consortium - 2015-08-19T18:04:32Z + 2015-08-25T11:29:32Z sha-1 hash code - + All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary - Subtype != "TrueType" || isSymbolic == false || Encoding == null + isSymbolic == false || Encoding == null A symbolic TrueType font specifies an Encoding entry in its dictionary diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml new file mode 100644 index 00000000..fea7e295 --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml @@ -0,0 +1,21 @@ + + + ISO 19005-1:2005 - 6.3.7 Character encodings - Number of cmaps in the symbolic TrueType font program + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + veraPDF Consortium + 2015-08-25T11:33:12Z + sha-1 hash code + + + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + isSymbolic == false || nrCmaps == 1 + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + From 6499b5b8790da9584eced420b2fce89a6d181bb0 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Tue, 25 Aug 2015 16:03:07 +0300 Subject: [PATCH 040/557] Add chapter validation profiles --- .../6.1 File structure/6.1 File structure.xml | 379 ++-- PDF_A/PDFA-1B.xml | 1692 +++++++++++++++++ 2 files changed, 1956 insertions(+), 115 deletions(-) create mode 100644 PDF_A/PDFA-1B.xml diff --git a/PDF_A/1b/6.1 File structure/6.1 File structure.xml b/PDF_A/1b/6.1 File structure/6.1 File structure.xml index 8bc9c382..ff5a6962 100644 --- a/PDF_A/1b/6.1 File structure/6.1 File structure.xml +++ b/PDF_A/1b/6.1 File structure/6.1 File structure.xml @@ -1,109 +1,53 @@ - + File structure profile Requirements of PDF/A standard for File structure subsection - Evgeniy Muravitskiy - 2015-05-8T15:46:15Z + veraPDF Consortium + 2015-08-25T15-55-47Z+03 sha-1 hash code - - PDF header must comply PDF/A specification - pdfHeaderCompliesPDFA - - File header not compliant with PDF/A - - - ISO19005-1 - 6.1.2 - - - - Second line of the document is a comment with at least 4 symbols in the code range 128-255 as required by PDF/A standard - binaryHeaderCompliesPDFA + + The LZWDecode filter shall not be permitted + filters == null || filters.indexOf("LZWDecode") == -1 - File header not compliant with PDF/A - - - ISO19005-1 - 6.1.2 - - - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || origLength % 2 == 0 - - Hexadecimal string contains odd number of non-white-space characters - origLength - - - ISO19005-1 - 6.1.6 - - - - All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f. - (isHex != true) || isHexSymbols - - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f. - isHexSymbols + LZW compression is used ISO19005-1 - 6.1.6 + 6.1.10 - - Length of stream must match with value of the Length key - isLengthCorrect + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 - Length of the stream does not match the value of the Length key - length + LZW compression is used in the inline image ISO19005-1 - 6.1.7 + 6.1.10 - - Spacings for 'stream' and 'endstream' keywords must comply PDF/A specification - spacingComplyPDFA + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) ISO19005-1 6.1.7 + + PDF 1.4 Reference + 3.6.3 - - - Header of 'object' and 'endobj' tags must comply PDF/A - spacingComplyPDFA - - Spacings of keywords 'obj' and 'endobj' do not comply PDF/A specification - - - ISO19005-1 - 6.1.8 - - The LZWDecode filter shall not be permitted. - filters.indexOf("LZWDecode") == -1 - - LZW compression is used - filters - - - ISO19005-1 - 6.1.10 - - - - Max value of integer must be 2147483647 - intValue < 2147483648 + + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 + (intValue <= 2147483647) && (intValue >= -2147483648) Integer value out of range - intValue ISO19005-1 @@ -114,12 +58,11 @@ - - Min value of integer must be -2147483648 - intValue > -2147483649 + + Absolute real value must be less than or equal to 32767.0 + (realValue >= -32767.0) && (realValue <= 32767.0) - Integer value out of range - intValue + Real value out of range ISO19005-1 @@ -130,12 +73,11 @@ - - Absolute real value must be less than or equal to 32767 - realValue >= -32767 && realValue <= 32767 + + Maximum length of a string (in bytes) is 65535 + value.length() < 65536 - Real value out of range - realValue + Maximum length of a String (65535) exceeded ISO19005-1 @@ -146,12 +88,12 @@ - - Maximum length of string in bytes 65535 - origValue.length < 65536 + + Maximum length of a name (in bytes) is 127 + origLength <= 127 - Maximum length of a String (65535) is exceeded - origValue.length() + Maximum length of a Name (127) exceeded + origLength ISO19005-1 @@ -162,12 +104,41 @@ - - Length of name in bytes must be less than 128 - origLength < 128 + + Maximum capacity of an array (in elements) is 8191 + size <= 8191 - Maximum length of a Name (127) is exceeded - origLength + Maximum capacity of an array (8191) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum capacity of a dictionary (in entries) is 4095 + size <= 4095 + + Maximum capacity of a dictionary (4095) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum number of indirect objects in a PDF file is 8,388,607 + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded ISO19005-1 @@ -178,12 +149,11 @@ - - Maximum capacity of array in elements less than 8192 - size < 8192 + + Maximum depth of graphics state nesting by q and Q operators is 28 + nestingLevel <= 28 - Array contains more than 8192 elements - size + Maximum depth of graphics state nesting (q and Q operators) is exceeded ISO19005-1 @@ -194,12 +164,11 @@ - - Maximum capacity of dictionary in entries less than 4095 - size < 4096 + + Maximum number of DeviceN components is 8 + nrComponents <= 8 - Dictionary contains more than 4095 elements - size + Maximum number of DeviceN components is exceeded ISO19005-1 @@ -210,12 +179,11 @@ - - Maximum number of indirect objects must be less than 8388608 - nrIndirects < 8388608 + + Maximum value of a CID (character identifier) is 65,535 + CID <= 65535 - Maximum number of indirect objects (8,388,607) in PDF file is exceeded - nrIndirects + Maximum value of a CID (65,535) is exceeded ISO19005-1 @@ -226,5 +194,186 @@ - + + The document catalog dictionary shall not contain a key with the name OCProperties + isOptionalContentPresent == false + + The document catalog dictionary contains the OCProperties entry + + + ISO19005-1 + 6.1.13 + + + + The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + pdfHeaderCompliesPDFA + + File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + + + ISO19005-1 + 6.1.2 + + PDF 1.4 Reference + 3.4.1 + + + + + The file header line shall be immediately followed by a comment consisting of a % character followed by at + least four characters, each of whose encoded byte values shall have a decimal value greater than 127 + binaryHeaderComplyPDFA + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + ISO19005-1 + 6.1.2 + + + + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + + Missing ID in the document trailer + + + ISO19005-1:2005 + 6.1.3 + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + ISO19005-1:2005 + 6.1.3 + + + + No data shall follow the last end-of-file marker except a single optional end-of-line marker. + eofCompliesPDFA + + Data is present after the last end-of-file marker + + + ISO19005-1:2005 + 6.1.3 + + + + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + Last ID is present in the Linearized PDF and does not match the first page ID + + + ISO 19005-1:2005/Cor.2:2011 + 6.1.3 + + + + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + xrefHeaderSpacingsComplyPDFA + + Spacings of subsection headers in the cross reference table do not comply PDF/A specification + + + ISO19005-1:2005 + 6.1.4 + + + + The xref keyword and the cross reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + ISO19005-1:2005 + 6.1.4 + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + Hexadecimal string contains odd number of non-white-space characters + + + ISO19005-1 + 6.1.6 + + + + All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f + (isHex != true) || isHexSymbols + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + ISO19005-1 + 6.1.6 + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + ISO19005-1 + 6.1.7 + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + spacingCompliesPDFA + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + ISO19005-1 + 6.1.7 + + + + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + ISO19005-1 + 6.1.7 + + + 19005-1:2005/Cor.2:2011 + 6.1.7 + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + ISO19005-1 + 6.1.8 + + + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml new file mode 100644 index 00000000..1e10d9e1 --- /dev/null +++ b/PDF_A/PDFA-1B.xml @@ -0,0 +1,1692 @@ + + + PDF/A-1b validation profile + PDF/A-1b validation profile based on ISO 19005-1:2005, Cor.1:2011, and Cor.2:2012 + veraPDF Consortium + 2015-08-25T15-20-06Z+03 + sha-1 hash code + + + The LZWDecode filter shall not be permitted + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + ISO19005-1 + 6.1.10 + + + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 + + LZW compression is used in the inline image + + + ISO19005-1 + 6.1.10 + + + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 + + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + + + ISO19005-1 + 6.1.7 + + PDF 1.4 Reference + 3.6.3 + + + + + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Absolute real value must be less than or equal to 32767.0 + (realValue >= -32767.0) && (realValue <= 32767.0) + + Real value out of range + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum length of a string (in bytes) is 65535 + value.length() < 65536 + + Maximum length of a String (65535) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum length of a name (in bytes) is 127 + origLength <= 127 + + Maximum length of a Name (127) exceeded + origLength + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum capacity of an array (in elements) is 8191 + size <= 8191 + + Maximum capacity of an array (8191) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum capacity of a dictionary (in entries) is 4095 + size <= 4095 + + Maximum capacity of a dictionary (4095) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum number of indirect objects in a PDF file is 8,388,607 + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum depth of graphics state nesting by q and Q operators is 28 + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum number of DeviceN components is 8 + nrComponents <= 8 + + Maximum number of DeviceN components is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum value of a CID (character identifier) is 65,535 + CID <= 65535 + + Maximum value of a CID (65,535) is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + The document catalog dictionary shall not contain a key with the name OCProperties + isOptionalContentPresent == false + + The document catalog dictionary contains the OCProperties entry + + + ISO19005-1 + 6.1.13 + + + + The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + pdfHeaderCompliesPDFA + + File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + + + ISO19005-1 + 6.1.2 + + PDF 1.4 Reference + 3.4.1 + + + + + The file header line shall be immediately followed by a comment consisting of a % character followed by at + least four characters, each of whose encoded byte values shall have a decimal value greater than 127 + binaryHeaderComplyPDFA + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + ISO19005-1 + 6.1.2 + + + + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + + Missing ID in the document trailer + + + ISO19005-1:2005 + 6.1.3 + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + ISO19005-1:2005 + 6.1.3 + + + + No data shall follow the last end-of-file marker except a single optional end-of-line marker. + eofCompliesPDFA + + Data is present after the last end-of-file marker + + + ISO19005-1:2005 + 6.1.3 + + + + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + Last ID is present in the Linearized PDF and does not match the first page ID + + + ISO 19005-1:2005/Cor.2:2011 + 6.1.3 + + + + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + xrefHeaderSpacingsComplyPDFA + + Spacings of subsection headers in the cross reference table do not comply PDF/A specification + + + ISO19005-1:2005 + 6.1.4 + + + + The xref keyword and the cross reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + ISO19005-1:2005 + 6.1.4 + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + Hexadecimal string contains odd number of non-white-space characters + + + ISO19005-1 + 6.1.6 + + + + All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f + (isHex != true) || isHexSymbols + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + ISO19005-1 + 6.1.6 + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + ISO19005-1 + 6.1.7 + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + spacingCompliesPDFA + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + ISO19005-1 + 6.1.7 + + + + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + ISO19005-1 + 6.1.7 + + + 19005-1:2005/Cor.2:2011 + 6.1.7 + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + ISO19005-1 + 6.1.8 + + + + A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operators + false + + A content stream contains an operator not defined in PDF Reference + + + ISO19005-1 + 6.2.10 + + + + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version <= 2.3 + + The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information + + + ISO19005-1 + 6.2.2 + + PDF 1.4 Reference + 9.4.10 + + + + + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream + destOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + ISO19005-1 + 6.2.2 + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version <= 2.3 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements + + + ISO19005-1 + 6.2.3 + + PDF 1.4 Reference + 4.5.4, ICCBased Color Spaces + + + + + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile + + + ISO19005-1 + 6.2.2, 6.2.3.2 + + PDF 1.4 Reference + 4.5.4, Table 4.16 + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + ISO19005-1 + 6.2.4 + + + + An XObject dictionary (Image or Form) shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + ISO19005-1 + 6.2.4 + + + ISO19005-1 + 6.2.5 + + + + + If an Image dictionary contains the Interpolate key, its value shall be false + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + ISO19005-1 + 6.2.4 + + + + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + + The form XObject dictionary contains a PS key or Subtype2 key with value PS + + + ISO19005-1 + 6.2.5 + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + ISO19005-1 + 6.2.6 + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + ISO19005-1 + 6.2.7 + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + ISO19005-1 + 6.2.8 + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + ISO19005-1 + 6.2.8 + + + + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + + A rendering intent with non-standard value is used + + + ISO19005-1 + 6.2.9 + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || BaseFont != null + + A BaseFont entry is missing or has invalid type + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatible + areRegistryOrderingCompatible == true + + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + ISO19005-1 + 6.3.3.1 + + PDF 1.4 Reference + 5.6.2 + + + + + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + ISO19005-1 + 6.3.3.2 + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + + + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + A CMap is different from "Identity-H" or "Identity-V" and is not embedded + + + ISO19005-1 + 6.3.3.3 + + PDF 1.4 Reference + 5.6.4 + + + + + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3 + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + ISO19005-1 + 6.3.4 + + PDF 1.4 Reference + 5.8 + + + + + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + ISO19005-1 + 6.3.5 + + + + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistent + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + ISO19005-1 + 6.3.6 + + + + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") + + A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + isSymbolic == false || nrCmaps == 1 + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + If an SMask key appears in an ExtGState dictionary, its value shall be None + SMask == null || SMask == "None" + + An ExtGState contains SMask key with a value other than None + + + ISO19005-1 + 6.4 + + + + A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionary + S != "Transparency" + + A transparency group is present in a form XObject or page dictionary + + + ISO19005-1:2005/Cor.2:2011 + 6.4 + + + + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible + BM == null || BM == "Normal" || BM == "Compatible" + + An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible + + + ISO19005-1 + 6.4 + + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + ca == null || ca == 1.0 + + An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 + + + ISO19005-1 + 6.4 + + + + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" + + Unknown or not permitted annotation type + + + ISO19005-1 + 6.5.2 + + PDF 1.4 Reference + 8.4.5 + + + + + An annotation dictionary shall not contain the CA key with a value other than 1.0 + CA == null || CA == 1.0 + + An annotation dictionary contains the CA key with value other than 1.0 + + + ISO19005-1 + 6.5.3 + + + + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0 + F != null && (F & 4) == 1 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 + + Annotation flags are either missing or have forbidden values + + + ISO19005-1 + 6.5.3 + + + + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + + Annotation's color or interior color is used without specifying RGB-based destination output profile + + + ISO19005-1 + 6.5.3 + + + + If an annotation dictionary contains the AP key, the appearance dictionary that it defines as its value shall contain only the N key, + whose value shall be a stream defining the appearance of the annotation + AP == null || ( AP == "N" && ( (FT != "Btn" && N_type == "Stream") || (FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + ISO19005-1 + 6.5.3 + + + + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + ISO19005-1 + 6.6.1 + + PDF 1.4 Reference + 8.5.3 - Table 8.34 + + + + ISO19005-1:2005/Cor.2:2011 + 6.6.1 + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted action type + + + ISO19005-1 + 6.6.1 + + PDF 1.4 Reference + 8.5.3 - Named Actions - Table 8.45 + + + + + Interactive form fields shall not perform actions of any type + Subtype != "Widget" || A_size == 0 + + Interactive form field contains an action object ('A' key) + + + ISO19005-1 + 6.6.1 + + + + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + Subtype != "Widget" || AA_size == 0 + + A Widget annotation contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + A Field dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + A Field dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2, 6.9 + + + + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + ispdfaidNSPresent + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + ISO 19005-1:2005 + 6.7.11 + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + part == 1 + + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + part + + + ISO 19005-1:2005 + 6.7.11 + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + conformance == "B" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. + conformance + + + ISO 19005-1:2005 + 6.7.11 + + + + The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. + corr == null + + The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. + + + ISO 19005-1:2005 + 6.7.11 + + + + The PDF/A Identification Schema has required prefix "pdfaid". + prefix == "pdfaid" + + A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". + prefix + + + ISO 19005-1:2005 + 6.7.11 + + + + The document catalog dictionary of a conforming file shall contain the Metadata key. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + ISO 19005-1:2005 + 6.7.2 + + + + Metadata object stream dictionaries shall not contain the Filter key. + Filter == null + + The metadata object stream dictionary contains the Filter key. + + + ISO 19005-1:2005 + 6.7.2 + + + + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + doesInfoMatchXMP + + Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.3 + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + ISO 19005-1:2005 + 6.7.5 + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + ISO 19005-1:2005 + 6.7.5 + + + + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + isDefinitionCorrect + + Wrong definition of an extention schema with namespace URI: %1 + uri + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + isDefinedInThisPackage + + Missed definition of an extention schema with namespace URI: %1 + uri + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + The required PDF/A Extension Schema namespace prefix is pdfaExtension. + prefix == "pdfaExtension" + + A PDF/A Extension Schema namespace prefix is %1, but shall be "pdfaExtension". + prefix + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Field Schema namespace prefix is required to be "pdfaField". + isPDFAFieldPrefixCorrect + + A PDF/A Field Schema namespace prefix is not "pdfaField". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". + isPDFAPropertyPrefixCorrect + + A PDF/A Property Schema namespace prefix is not "pdfaProperty". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". + isPDFASchemaPrefixCorrect + + A PDF/A Schema Description Schema namespace prefix is not "pdfaSchema". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". + isPDFATypePrefixCorrect + + A PDF/A ValueType Schema namespace prefix is not "pdfaType". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + The metadata stream shall conform to XMP Specification. + isMetadataValid + + The metadata stream doesn't conform to XMP Specification. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + unknownProperties == null + + The predefined schema with namespace URI %1 has unknown properties: %2. + uri + unknownProperties + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + wrongValueTypeProperties == null + + The predefined schema with namespace URI %1 has properties of wrong type: %2. + uri + wrongValueTypeProperties + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + author == null + + The property "Author" did not present in XMP Basic schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + description == null + + The property "Description" did not present in XMP Basic schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + label == null + + The property "Label" did not present in XMP Basic schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + rating == null + + The property "Rating" did not present in XMP Basic schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + title == null + + The property "Title" did not present in XMP Basic schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + copyright == null + + The property "Copyright" did not present in XMP Rights Management schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + manifest == null + + The property "Manifest" did not present in XMP Media Management schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + colorants == null + + The property "Colorants" did not present in XMP Paged-Text schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + fonts == null + + The property "Fonts" did not present in XMP Paged-Text schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + plateNames == null + + The property "PlateNames" did not present in XMP Paged-Text schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + author == null + + The property "Author" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + baseURL == null + + The property "BaseURL" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + creationDate == null + + The property "CreationDate" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + creator == null + + The property "Creator" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + modDate == null + + The property "ModDate" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + subject == null + + The property "Subject" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + title == null + + The property "Title" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + trapped == null + + The property "Trapped" did not present in Adobe PDF Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + author == null + + The property "Author" did not present in Photoshop Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + copyright == null + + The property "Copyright" did not present in Photoshop Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + history == null + + The property "History" did not present in Photoshop Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + title == null + + The property "Title" did not present in Photoshop Schema in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + false + + The Camera Raw Schema did not present in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + false + + The EXIF Schema for Additional EXIF Properties did not present in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + false + + The XMP Dynamic Media Schema did not present in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + false + + The XMP Support Schema did not present in XMP 2004. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + ISO19005-1 + 6.9 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + ISO19005-1 + 6.9 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + AA_size == 0 + + A Form field dictionary contains the AA entry + + + ISO19005-1 + 6.9 + + + + + + null + gOutputProfileRef == null ? destOutputProfileRef : gOutputProfileRef + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + From 7cb88df66aad07b7b881e129c018b0aa73b57973 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Wed, 26 Aug 2015 15:16:46 +0300 Subject: [PATCH 041/557] Add html table --- PDF_A/PDFA-1B.html | 427 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 427 insertions(+) create mode 100644 PDF_A/PDFA-1B.html diff --git a/PDF_A/PDFA-1B.html b/PDF_A/PDFA-1B.html new file mode 100644 index 00000000..23d5a875 --- /dev/null +++ b/PDF_A/PDFA-1B.html @@ -0,0 +1,427 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDNameDescriptionTypeRule
16-1-10-t01The LZWDecode filter shall not be permittedCosStreamfilters == null || filters.indexOf("LZWDecode") == -1
26-1-10-t02The LZWDecode filter shall not be permittedPDInlineImageF == null || F.indexOf("LZW") == -1
36-1-11-t02A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles keyCosDocumentEmbeddedFiles_size == 0
46-1-12-t01Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648CosInteger(intValue <= 2147483647) && (intValue >= -2147483648)
56-1-12-t02Absolute real value must be less than or equal to 32767.0CosReal(realValue >= -32767.0) && (realValue <= 32767.0)
66-1-12-t03Maximum length of a string (in bytes) is 65535CosStringvalue.length() < 65536
76-1-12-t04Maximum length of a name (in bytes) is 127CosNameorigLength <= 127
86-1-12-t05Maximum capacity of an array (in elements) is 8191CosArraysize <= 8191
96-1-12-t06Maximum capacity of a dictionary (in entries) is 4095CosDictsize <= 4095
106-1-12-t07Maximum number of indirect objects in a PDF file is 8,388,607CosDocumentnrIndirects <= 8388607
116-1-12-t08Maximum depth of graphics state nesting by q and Q operators is 28Op_q_gsavenestingLevel <= 28
126-1-12-t09Maximum number of DeviceN components is 8PDDeviceNnrComponents <= 8
136-1-12-t10Maximum value of a CID (character identifier) is 65,535CIDGlyphCID <= 65535
146-1-13-t01The document catalog dictionary shall not contain a key with the name OCPropertiesCosDocumentisOptionalContentPresent == false
156-1-2-t01The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conformsCosDocumentpdfHeaderCompliesPDFA
166-1-2-t02The file header line shall be immediately followed by a comment consisting of a % character followed by at + least four characters, each of whose encoded byte values shall have a decimal value greater than 127CosDocumentbinaryHeaderComplyPDFA
176-1-3-t01The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2CosDocument(isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null)
186-1-3-t02The keyword Encrypt shall not be used in the trailer dictionaryCosTrailerisEncrypted != true
196-1-3-t03No data shall follow the last end-of-file marker except a single optional end-of-line marker.CosDocumenteofCompliesPDFA
206-1-3-t04In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identicalCosDocument(isLinearized != true)|| lastID == null || (firstPageID == lastID)
216-1-4-t01In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)CosXRefxrefHeaderSpacingsComplyPDFA
226-1-4-t02The xref keyword and the cross reference subsection header shall be separated by a single EOL markerCosXRefxrefEOLMarkersComplyPDFA
236-1-6-t01Hexadecimal strings shall contain an even number of non-white-space charactersCosString(isHex != true) || hexCount % 2 == 0
246-1-6-t02All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to fCosString(isHex != true) || isHexSymbols
256-1-7-t01The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keywordCosStreamisLengthCorrect
266-1-7-t02The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL markerCosStreamspacingCompliesPDFA
276-1-7-t03A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keysCosStreamF == null && FFilter == null && FDecodeParms == null
286-1-8-t01The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker.CosIndirectspacingCompliesPDFA
296-2-10-t01A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operatorsOp_Undefinedfalse
306-2-2-t01A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile keyICCOutputProfile(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version <= 2.3
316-2-2-t02If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef
326-2-3-t01All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version <= 2.3
336-2-3-t02DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour spacePDDeviceRGBgOutputCS != null && gOutputCS == "RGB "
346-2-3-t03DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour spacePDDeviceCMYKgOutputCS != null && gOutputCS == "CMYK"
356-2-3-t04If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2PDDeviceGraygOutputCS != null
366-2-3-t05The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4ICCProfileN != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK"))
376-2-4-t01An Image dictionary shall not contain the Alternates keyPDXImageAlternates_size == 0
386-2-4-t02An XObject dictionary (Image or Form) shall not contain the OPI keyPDXObjectOPI_size == 0
396-2-4-t03If an Image dictionary contains the Interpolate key, its value shall be falsePDXImageInterpolate == false
406-2-5-t01A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS keyPDXForm(Subtype2 == null || Subtype2 != "PS") && PS_size == 0
416-2-6-t01A conforming file shall not contain any reference XObjectsPDXFormRef_size == 0
426-2-7-t01A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS"
436-2-8-t01An ExtGState dictionary shall not contain the TR keyPDExtGStateTR == null
446-2-8-t02An ExtGState dictionary shall not contain the TR2 key with a value other than DefaultPDExtGStateTR2 == null || TR2 == "Default"
456-2-9-t01Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or SaturationCosRenderingIntentvalue == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation"
466-3-2-t01All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionaryPDFontType == "Font"
476-3-2-t02All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fontsPDFontSubtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
486-3-2-t03All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont != null
496-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null
506-3-2-t05All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null
516-3-2-t06All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
526-3-3-t01For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatiblePDType0FontareRegistryOrderingCompatible == true
536-3-3-t02For all Type 2 CIDFonts, 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 PDF Reference Table 5.13PDCIDFontSubtype != "CIDFontType2" || CIDToGIDMap != null
546-3-3-t03All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4PDCMapCMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1
556-3-4-t01The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3PDFontSubtype == "Type3" || Subtype == "Type0" || fontFile_size == 1
566-3-5-t01Embedded font programs shall define all font glyphs referenced for rendering with a conforming fileGlyphisGlyphPresent == true
576-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistentGlyphisWidthConsistent == true
586-3-7-t01All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding")
596-3-7-t02 All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null
606-3-7-t03Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encodingTrueTypeFontProgramisSymbolic == false || nrCmaps == 1
616-4-t01If an SMask key appears in an ExtGState dictionary, its value shall be NonePDExtGStateSMask == null || SMask == "None"
626-4-t03A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionaryPDGroupS != "Transparency"
636-4-t04The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or CompatiblePDExtGStateBM == null || BM == "Normal" || BM == "Compatible"
646-4-t06The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateca == null || ca == 1.0
656-5-2-t01Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permittedPDAnnotSubtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet"
666-5-3-t01An annotation dictionary shall not contain the CA key with a value other than 1.0PDAnnotCA == null || CA == 1.0
676-5-3-t02An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0PDAnnotF != null && (F & 4) == 1 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0
686-5-3-t03An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGBPDAnnot(C_size == 0 && IC_size == 0) || gOutputCS == "RGB "
696-5-3-t04If an annotation dictionary contains the AP key, the appearance dictionary that it defines as its value shall contain only the N key, + whose value shall be a stream defining the appearance of the annotationPDAnnotAP == null || ( AP == "N" && ( (FT != "Btn" && N_type == "Stream") || (FT == "Btn" && N_type == "Dict") ) )
706-6-1-t01The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)PDActionS == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
716-6-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permittedPDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
726-6-1-t03Interactive form fields shall not perform actions of any typePDAnnotSubtype != "Widget" || A_size == 0
736-6-2-t01A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionaryPDAnnotSubtype != "Widget" || AA_size == 0
746-6-2-t02A Field dictionary shall not include an AA entry for an additional-actions dictionaryPDFormFieldAA_size == 0
756-6-2-t03The document catalog dictionary shall not include an AA entry for an additional-actions dictionaryPDDocumentAA_size == 0
766-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent
776-7-11-t02The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1
786-7-11-t03The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B"
796-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null
806-7-11-t05The PDF/A Identification Schema has required prefix "pdfaid".PDFAIdSchemaprefix == "pdfaid"
816-7-2-t01The document catalog dictionary of a conforming file shall contain the Metadata key.PDDocumentmetadata_size == 1
826-7-2-t02Metadata object stream dictionaries shall not contain the Filter key.PDMetadataFilter == null
836-7-3-t01If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values.CosDocumentdoesInfoMatchXMP
846-7-5-t01The bytes attribute shall not be used in the header of an XMP packet.XMPPackagebytes == null
856-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null
866-7-8-t01All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinitionCorrect
876-7-8-t02All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinedInThisPackage
886-7-8-t03The required PDF/A Extension Schema namespace prefix is pdfaExtension.PDFAExtensionSchemaprefix == "pdfaExtension"
896-7-8-t04A PDF/A Field Schema namespace prefix is required to be "pdfaField".PDFAExtensionSchemaisPDFAFieldPrefixCorrect
906-7-8-t05A PDF/A Property Schema namespace prefix is required to be "pdfaProperty".PDFAExtensionSchemaisPDFAPropertyPrefixCorrect
916-7-8-t06A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema".PDFAExtensionSchemaisPDFASchemaPrefixCorrect
926-7-8-t07A PDF/A ValueType Schema namespace prefix is required to be "pdfaType".PDFAExtensionSchemaisPDFATypePrefixCorrect
936-7-9-t01The metadata stream shall conform to XMP Specification.XMPPackageisMetadataValid
946-7-9-t02All predefined schemas shall conform to XMP specification.XMPPredefinedSchemaunknownProperties == null
956-7-9-t03All predefined schemas shall conform to XMP specification.XMPPredefinedSchemawrongValueTypeProperties == null
966-7-9-t04All predefined schemas shall conform to XMP specification.XMPBasicSchemaauthor == null
976-7-9-t05All predefined schemas shall conform to XMP specification.XMPBasicSchemadescription == null
986-7-9-t06All predefined schemas shall conform to XMP specification.XMPBasicSchemalabel == null
996-7-9-t07All predefined schemas shall conform to XMP specification.XMPBasicSchemarating == null
1006-7-9-t08All predefined schemas shall conform to XMP specification.XMPBasicSchematitle == null
1016-7-9-t09All predefined schemas shall conform to XMP specification.XMPRightsSchemacopyright == null
1026-7-9-t10All predefined schemas shall conform to XMP specification.XMPMMSchemamanifest == null
1036-7-9-t11All predefined schemas shall conform to XMP specification.XMPTPgSchemacolorants == null
1046-7-9-t12All predefined schemas shall conform to XMP specification.XMPTPgSchemafonts == null
1056-7-9-t13All predefined schemas shall conform to XMP specification.XMPTPgSchemaplateNames == null
1066-7-9-t14All predefined schemas shall conform to XMP specification.PDFSchemaauthor == null
1076-7-9-t15All predefined schemas shall conform to XMP specification.PDFSchemabaseURL == null
1086-7-9-t16All predefined schemas shall conform to XMP specification.PDFSchemacreationDate == null
1096-7-9-t17All predefined schemas shall conform to XMP specification.PDFSchemacreator == null
1106-7-9-t18All predefined schemas shall conform to XMP specification.PDFSchemamodDate == null
1116-7-9-t19All predefined schemas shall conform to XMP specification.PDFSchemasubject == null
1126-7-9-t20All predefined schemas shall conform to XMP specification.PDFSchematitle == null
1136-7-9-t21All predefined schemas shall conform to XMP specification.PDFSchematrapped == null
1146-7-9-t22All predefined schemas shall conform to XMP specification.PhotoshopSchemaauthor == null
1156-7-9-t23All predefined schemas shall conform to XMP specification.PhotoshopSchemacopyright == null
1166-7-9-t24All predefined schemas shall conform to XMP specification.PhotoshopSchemahistory == null
1176-7-9-t25All predefined schemas shall conform to XMP specification.PhotoshopSchematitle == null
1186-7-9-t26All predefined schemas shall conform to XMP specification.CRSSchemafalse
1196-7-9-t27All predefined schemas shall conform to XMP specification.AUXSchemafalse
1206-7-9-t28All predefined schemas shall conform to XMP specification.XMPDMSchemafalse
1216-7-9-t29All predefined schemas shall conform to XMP specification.XAPSSchemafalse
1226-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false
1236-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0)
1246-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0
+ + From dcd39dfd75e7b5675cdcea6240ea58bed690ca41 Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Thu, 27 Aug 2015 10:25:47 +0300 Subject: [PATCH 042/557] deleted profiles for false friend for xmp --- .../6.7.9/verapdf-profile-6-7-9-t04.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t05.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t06.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t07.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t08.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t09.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t10.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t11.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t12.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t13.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t14.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t15.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t16.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t17.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t18.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t19.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t20.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t21.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t22.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t23.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t24.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t25.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t26.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t27.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t28.xml | 24 ------------------- .../6.7.9/verapdf-profile-6-7-9-t29.xml | 24 ------------------- 26 files changed, 624 deletions(-) delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t04.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t05.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t06.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t07.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t08.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t09.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t10.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t11.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t12.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t13.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t14.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t15.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t16.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t17.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t18.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t19.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t20.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t21.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t22.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t23.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t24.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t25.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t26.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t27.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t28.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t29.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t04.xml deleted file mode 100644 index d482cf97..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t04.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T13:36:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - author == null - - The property "Author" did not present in XMP Basic schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t05.xml deleted file mode 100644 index 22e6059a..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t05.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T14:41:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - description == null - - The property "Description" did not present in XMP Basic schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t06.xml deleted file mode 100644 index 59d6d7d0..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t06.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T14:46:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - label == null - - The property "Label" did not present in XMP Basic schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t07.xml deleted file mode 100644 index 713046ae..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t07.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T14:49:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - rating == null - - The property "Rating" did not present in XMP Basic schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t08.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t08.xml deleted file mode 100644 index 27416638..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t08.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T14:44:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - title == null - - The property "Title" did not present in XMP Basic schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t09.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t09.xml deleted file mode 100644 index 798af595..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t09.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T14:50:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - copyright == null - - The property "Copyright" did not present in XMP Rights Management schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t10.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t10.xml deleted file mode 100644 index de86f9e8..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t10.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:26:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - manifest == null - - The property "Manifest" did not present in XMP Media Management schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t11.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t11.xml deleted file mode 100644 index 0a6719c5..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t11.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:27:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - colorants == null - - The property "Colorants" did not present in XMP Paged-Text schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t12.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t12.xml deleted file mode 100644 index 97c3df53..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t12.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:29:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - fonts == null - - The property "Fonts" did not present in XMP Paged-Text schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t13.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t13.xml deleted file mode 100644 index c4c834f1..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t13.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:27:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - plateNames == null - - The property "PlateNames" did not present in XMP Paged-Text schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t14.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t14.xml deleted file mode 100644 index 02633e90..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t14.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:27:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - author == null - - The property "Author" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t15.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t15.xml deleted file mode 100644 index 0b3a66dc..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t15.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:27:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - baseURL == null - - The property "BaseURL" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t16.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t16.xml deleted file mode 100644 index a976afdb..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t16.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:27:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - creationDate == null - - The property "CreationDate" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t17.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t17.xml deleted file mode 100644 index c66f8c59..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t17.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:27:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - creator == null - - The property "Creator" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t18.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t18.xml deleted file mode 100644 index 3d0c89cf..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t18.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:50:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - modDate == null - - The property "ModDate" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t19.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t19.xml deleted file mode 100644 index bd968037..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t19.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:51:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - subject == null - - The property "Subject" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t20.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t20.xml deleted file mode 100644 index fbf661a8..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t20.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:27:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - title == null - - The property "Title" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t21.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t21.xml deleted file mode 100644 index 96d19a96..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t21.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:27:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - trapped == null - - The property "Trapped" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t22.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t22.xml deleted file mode 100644 index a03c52a7..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t22.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:58:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - author == null - - The property "Author" did not present in Photoshop Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t23.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t23.xml deleted file mode 100644 index 61e4d6ae..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t23.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:58:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - copyright == null - - The property "Copyright" did not present in Photoshop Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t24.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t24.xml deleted file mode 100644 index bfa5e806..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t24.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:58:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - history == null - - The property "History" did not present in Photoshop Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t25.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t25.xml deleted file mode 100644 index 47117473..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t25.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T15:58:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - title == null - - The property "Title" did not present in Photoshop Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t26.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t26.xml deleted file mode 100644 index e83daa3d..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t26.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T16:10:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - false - - The Camera Raw Schema did not present in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t27.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t27.xml deleted file mode 100644 index 1f1efb6a..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t27.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T16:10:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - false - - The EXIF Schema for Additional EXIF Properties did not present in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t28.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t28.xml deleted file mode 100644 index 9186084c..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t28.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T16:10:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - false - - The XMP Dynamic Media Schema did not present in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t29.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t29.xml deleted file mode 100644 index 0df090bb..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t29.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-30T16:10:00Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - false - - The XMP Support Schema did not present in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - From 25bc83f7d9d75465f537369f70a4851037fa4cf0 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Thu, 27 Aug 2015 12:04:41 +0300 Subject: [PATCH 043/557] Fixes for profiles changes --- PDF_A/PDFA-1B.html | 84 +--------- PDF_A/PDFA-1B.xml | 370 +-------------------------------------------- 2 files changed, 6 insertions(+), 448 deletions(-) diff --git a/PDF_A/PDFA-1B.html b/PDF_A/PDFA-1B.html index 23d5a875..82dc56fb 100644 --- a/PDF_A/PDFA-1B.html +++ b/PDF_A/PDFA-1B.html @@ -336,91 +336,13 @@ 956-7-9-t03All predefined schemas shall conform to XMP specification.XMPPredefinedSchemawrongValueTypeProperties == null -966-7-9-t04All predefined schemas shall conform to XMP specification.XMPBasicSchemaauthor == null +966-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false -976-7-9-t05All predefined schemas shall conform to XMP specification.XMPBasicSchemadescription == null +976-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) -986-7-9-t06All predefined schemas shall conform to XMP specification.XMPBasicSchemalabel == null - - -996-7-9-t07All predefined schemas shall conform to XMP specification.XMPBasicSchemarating == null - - -1006-7-9-t08All predefined schemas shall conform to XMP specification.XMPBasicSchematitle == null - - -1016-7-9-t09All predefined schemas shall conform to XMP specification.XMPRightsSchemacopyright == null - - -1026-7-9-t10All predefined schemas shall conform to XMP specification.XMPMMSchemamanifest == null - - -1036-7-9-t11All predefined schemas shall conform to XMP specification.XMPTPgSchemacolorants == null - - -1046-7-9-t12All predefined schemas shall conform to XMP specification.XMPTPgSchemafonts == null - - -1056-7-9-t13All predefined schemas shall conform to XMP specification.XMPTPgSchemaplateNames == null - - -1066-7-9-t14All predefined schemas shall conform to XMP specification.PDFSchemaauthor == null - - -1076-7-9-t15All predefined schemas shall conform to XMP specification.PDFSchemabaseURL == null - - -1086-7-9-t16All predefined schemas shall conform to XMP specification.PDFSchemacreationDate == null - - -1096-7-9-t17All predefined schemas shall conform to XMP specification.PDFSchemacreator == null - - -1106-7-9-t18All predefined schemas shall conform to XMP specification.PDFSchemamodDate == null - - -1116-7-9-t19All predefined schemas shall conform to XMP specification.PDFSchemasubject == null - - -1126-7-9-t20All predefined schemas shall conform to XMP specification.PDFSchematitle == null - - -1136-7-9-t21All predefined schemas shall conform to XMP specification.PDFSchematrapped == null - - -1146-7-9-t22All predefined schemas shall conform to XMP specification.PhotoshopSchemaauthor == null - - -1156-7-9-t23All predefined schemas shall conform to XMP specification.PhotoshopSchemacopyright == null - - -1166-7-9-t24All predefined schemas shall conform to XMP specification.PhotoshopSchemahistory == null - - -1176-7-9-t25All predefined schemas shall conform to XMP specification.PhotoshopSchematitle == null - - -1186-7-9-t26All predefined schemas shall conform to XMP specification.CRSSchemafalse - - -1196-7-9-t27All predefined schemas shall conform to XMP specification.AUXSchemafalse - - -1206-7-9-t28All predefined schemas shall conform to XMP specification.XMPDMSchemafalse - - -1216-7-9-t29All predefined schemas shall conform to XMP specification.XAPSSchemafalse - - -1226-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false - - -1236-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) - - -1246-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 +986-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 1e10d9e1..97ef42bf 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,9 +1,9 @@ - PDF/A-1b validation profile - PDF/A-1b validation profile based on ISO 19005-1:2005, Cor.1:2011, and Cor.2:2012 + ISO 19005-1:2005 + Rules for validation PDF files veraPDF Consortium - 2015-08-25T15-20-06Z+03 + 2015-08-27T11-55-06Z+03 sha-1 hash code @@ -1281,370 +1281,6 @@ - - All predefined schemas shall conform to XMP specification. - author == null - - The property "Author" did not present in XMP Basic schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - description == null - - The property "Description" did not present in XMP Basic schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - label == null - - The property "Label" did not present in XMP Basic schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - rating == null - - The property "Rating" did not present in XMP Basic schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - title == null - - The property "Title" did not present in XMP Basic schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - copyright == null - - The property "Copyright" did not present in XMP Rights Management schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - manifest == null - - The property "Manifest" did not present in XMP Media Management schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - colorants == null - - The property "Colorants" did not present in XMP Paged-Text schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - fonts == null - - The property "Fonts" did not present in XMP Paged-Text schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - plateNames == null - - The property "PlateNames" did not present in XMP Paged-Text schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - author == null - - The property "Author" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - baseURL == null - - The property "BaseURL" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - creationDate == null - - The property "CreationDate" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - creator == null - - The property "Creator" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - modDate == null - - The property "ModDate" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - subject == null - - The property "Subject" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - title == null - - The property "Title" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - trapped == null - - The property "Trapped" did not present in Adobe PDF Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - author == null - - The property "Author" did not present in Photoshop Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - copyright == null - - The property "Copyright" did not present in Photoshop Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - history == null - - The property "History" did not present in Photoshop Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - title == null - - The property "Title" did not present in Photoshop Schema in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - false - - The Camera Raw Schema did not present in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - false - - The EXIF Schema for Additional EXIF Properties did not present in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - false - - The XMP Dynamic Media Schema did not present in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - false - - The XMP Support Schema did not present in XMP 2004. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false From aab2d5758a94215f8823ad0ce0326d139075e00c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 1 Sep 2015 18:36:19 +0300 Subject: [PATCH 044/557] Added two validation profiles on CharSet and CIDSet entries in font subsets --- .../verapdf-profile-6-3-5-t02.xml | 27 +++++++++++++++++++ .../verapdf-profile-6-3-5-t03.xml | 27 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml create mode 100644 PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml new file mode 100644 index 00000000..b3fd776c --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml @@ -0,0 +1,27 @@ + + + ISO 19005-1:2005 - 6.3.5 Font subsets - CIDSet entry in Type1 subsets + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + veraPDF Consortium + 2015-09-01T18:25:27Z + sha-1 hash code + + + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + BaseFont.search(/[A-Z]{6}\+/) != 0 || ChatSet != null + + A Type1 font subset does not define CharSet entry in its Descriptor dictionary + + + ISO19005-1 + 6.3.5 + + PDF 1.4 Reference + 5.5.3 + + + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml new file mode 100644 index 00000000..7996228d --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml @@ -0,0 +1,27 @@ + + + ISO 19005-1:2005 - 6.3.5 Font subsets - CIDSet entry in CID Font subsets + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + veraPDF Consortium + 2015-09-01T18:29:02Z + sha-1 hash code + + + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + BaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + ISO19005-1 + 6.3.5 + + PDF 1.4 Reference + 5.5.3 + + + + + From b519c7bf11dac0b952d6f19477ce96d8da9af26d Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 1 Sep 2015 18:41:15 +0300 Subject: [PATCH 045/557] Minor name fix --- .../6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml index b3fd776c..659f7037 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml @@ -1,6 +1,6 @@ - ISO 19005-1:2005 - 6.3.5 Font subsets - CIDSet entry in Type1 subsets + ISO 19005-1:2005 - 6.3.5 Font subsets - CharSet entry in Type1 subsets For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 veraPDF Consortium From b025d24f6811bd942e4b3907104cfc67925e202e Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 1 Sep 2015 18:44:49 +0300 Subject: [PATCH 046/557] Test misprint fix --- .../6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml index 659f7037..94827f38 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml @@ -10,7 +10,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - BaseFont.search(/[A-Z]{6}\+/) != 0 || ChatSet != null + BaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null A Type1 font subset does not define CharSet entry in its Descriptor dictionary From 36417f572e88855dad2578b5c96364884f31c429 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Wed, 2 Sep 2015 16:34:16 +0300 Subject: [PATCH 047/557] Update README.md --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e56c8145..73983a8c 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,8 @@ # veraPDF validation profiles ## PDF/A-1 (ISO 19005-1:2005 + Cor 1:2007 + Cor 2:2011) -6.1.2. File header (partial)
-6.1.6. String objects
-6.1.7. Stream objects (partial)
-6.1.8. Indirect objects
-6.1.10. Filters
-6.1.12. Implementation limits (except q/Q nesting and DeviceN components) + +The folder contains the full set of atomic validation rules covering the PDF/A-1B standard. *** From db3d47f6e4a02ee3b1c197645d5eee5a6fd9fef5 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Thu, 3 Sep 2015 14:20:29 +0300 Subject: [PATCH 048/557] Add new profiles to result profile --- PDF_A/PDFA-1B.html | 88 ++++++++++++++++++++++++---------------------- PDF_A/PDFA-1B.xml | 18 +++++++++- 2 files changed, 63 insertions(+), 43 deletions(-) diff --git a/PDF_A/PDFA-1B.html b/PDF_A/PDFA-1B.html index 82dc56fb..d4d872c2 100644 --- a/PDF_A/PDFA-1B.html +++ b/PDF_A/PDFA-1B.html @@ -207,142 +207,146 @@ 566-3-5-t01Embedded font programs shall define all font glyphs referenced for rendering with a conforming fileGlyphisGlyphPresent == true -576-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the +576-3-5-t02For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontBaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + + +586-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the font dictionary and in the embedded font program shall be consistentGlyphisWidthConsistent == true -586-3-7-t01All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary +596-3-7-t01All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") -596-3-7-t02 All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null +606-3-7-t02 All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null -606-3-7-t03Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encodingTrueTypeFontProgramisSymbolic == false || nrCmaps == 1 +616-3-7-t03Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encodingTrueTypeFontProgramisSymbolic == false || nrCmaps == 1 -616-4-t01If an SMask key appears in an ExtGState dictionary, its value shall be NonePDExtGStateSMask == null || SMask == "None" +626-4-t01If an SMask key appears in an ExtGState dictionary, its value shall be NonePDExtGStateSMask == null || SMask == "None" -626-4-t03A Group object with an S key with a value of Transparency shall not be included in a form XObject. +636-4-t03A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionaryPDGroupS != "Transparency" -636-4-t04The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or CompatiblePDExtGStateBM == null || BM == "Normal" || BM == "Compatible" +646-4-t04The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or CompatiblePDExtGStateBM == null || BM == "Normal" || BM == "Compatible" -646-4-t06The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateca == null || ca == 1.0 +656-4-t06The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateca == null || ca == 1.0 -656-5-2-t01Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, +666-5-2-t01Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, Sound and Movie types shall not be permittedPDAnnotSubtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" -666-5-3-t01An annotation dictionary shall not contain the CA key with a value other than 1.0PDAnnotCA == null || CA == 1.0 +676-5-3-t01An annotation dictionary shall not contain the CA key with a value other than 1.0PDAnnotCA == null || CA == 1.0 -676-5-3-t02An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, +686-5-3-t02An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, Invisible and NoView flag bits shall be set to 0PDAnnotF != null && (F & 4) == 1 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 -686-5-3-t03An annotation dictionary shall not contain the C array or the IC array unless the colour space of the +696-5-3-t03An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGBPDAnnot(C_size == 0 && IC_size == 0) || gOutputCS == "RGB " -696-5-3-t04If an annotation dictionary contains the AP key, the appearance dictionary that it defines as its value shall contain only the N key, +706-5-3-t04If an annotation dictionary contains the AP key, the appearance dictionary that it defines as its value shall contain only the N key, whose value shall be a stream defining the appearance of the annotationPDAnnotAP == null || ( AP == "N" && ( (FT != "Btn" && N_type == "Stream") || (FT == "Btn" && N_type == "Dict") ) ) -706-6-1-t01The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. +716-6-1-t01The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)PDActionS == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" -716-6-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permittedPDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" +726-6-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permittedPDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" -726-6-1-t03Interactive form fields shall not perform actions of any typePDAnnotSubtype != "Widget" || A_size == 0 +736-6-1-t03Interactive form fields shall not perform actions of any typePDAnnotSubtype != "Widget" || A_size == 0 -736-6-2-t01A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionaryPDAnnotSubtype != "Widget" || AA_size == 0 +746-6-2-t01A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionaryPDAnnotSubtype != "Widget" || AA_size == 0 -746-6-2-t02A Field dictionary shall not include an AA entry for an additional-actions dictionaryPDFormFieldAA_size == 0 +756-6-2-t02A Field dictionary shall not include an AA entry for an additional-actions dictionaryPDFormFieldAA_size == 0 -756-6-2-t03The document catalog dictionary shall not include an AA entry for an additional-actions dictionaryPDDocumentAA_size == 0 +766-6-2-t03The document catalog dictionary shall not include an AA entry for an additional-actions dictionaryPDDocumentAA_size == 0 -766-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent +776-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent -776-7-11-t02The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 +786-7-11-t02The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 -786-7-11-t03The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B" +796-7-11-t03The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B" -796-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null +806-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null -806-7-11-t05The PDF/A Identification Schema has required prefix "pdfaid".PDFAIdSchemaprefix == "pdfaid" +816-7-11-t05The PDF/A Identification Schema has required prefix "pdfaid".PDFAIdSchemaprefix == "pdfaid" -816-7-2-t01The document catalog dictionary of a conforming file shall contain the Metadata key.PDDocumentmetadata_size == 1 +826-7-2-t01The document catalog dictionary of a conforming file shall contain the Metadata key.PDDocumentmetadata_size == 1 -826-7-2-t02Metadata object stream dictionaries shall not contain the Filter key.PDMetadataFilter == null +836-7-2-t02Metadata object stream dictionaries shall not contain the Filter key.PDMetadataFilter == null -836-7-3-t01If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values.CosDocumentdoesInfoMatchXMP +846-7-3-t01If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values.CosDocumentdoesInfoMatchXMP -846-7-5-t01The bytes attribute shall not be used in the header of an XMP packet.XMPPackagebytes == null +856-7-5-t01The bytes attribute shall not be used in the header of an XMP packet.XMPPackagebytes == null -856-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null +866-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null -866-7-8-t01All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinitionCorrect +876-7-8-t01All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinitionCorrect -876-7-8-t02All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinedInThisPackage +886-7-8-t02All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinedInThisPackage -886-7-8-t03The required PDF/A Extension Schema namespace prefix is pdfaExtension.PDFAExtensionSchemaprefix == "pdfaExtension" +896-7-8-t03The required PDF/A Extension Schema namespace prefix is pdfaExtension.PDFAExtensionSchemaprefix == "pdfaExtension" -896-7-8-t04A PDF/A Field Schema namespace prefix is required to be "pdfaField".PDFAExtensionSchemaisPDFAFieldPrefixCorrect +906-7-8-t04A PDF/A Field Schema namespace prefix is required to be "pdfaField".PDFAExtensionSchemaisPDFAFieldPrefixCorrect -906-7-8-t05A PDF/A Property Schema namespace prefix is required to be "pdfaProperty".PDFAExtensionSchemaisPDFAPropertyPrefixCorrect +916-7-8-t05A PDF/A Property Schema namespace prefix is required to be "pdfaProperty".PDFAExtensionSchemaisPDFAPropertyPrefixCorrect -916-7-8-t06A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema".PDFAExtensionSchemaisPDFASchemaPrefixCorrect +926-7-8-t06A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema".PDFAExtensionSchemaisPDFASchemaPrefixCorrect -926-7-8-t07A PDF/A ValueType Schema namespace prefix is required to be "pdfaType".PDFAExtensionSchemaisPDFATypePrefixCorrect +936-7-8-t07A PDF/A ValueType Schema namespace prefix is required to be "pdfaType".PDFAExtensionSchemaisPDFATypePrefixCorrect -936-7-9-t01The metadata stream shall conform to XMP Specification.XMPPackageisMetadataValid +946-7-9-t01The metadata stream shall conform to XMP Specification.XMPPackageisMetadataValid -946-7-9-t02All predefined schemas shall conform to XMP specification.XMPPredefinedSchemaunknownProperties == null +956-7-9-t02All predefined schemas shall conform to XMP specification.XMPPredefinedSchemaunknownProperties == null -956-7-9-t03All predefined schemas shall conform to XMP specification.XMPPredefinedSchemawrongValueTypeProperties == null +966-7-9-t03All predefined schemas shall conform to XMP specification.XMPPredefinedSchemawrongValueTypeProperties == null -966-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false +976-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false -976-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) +986-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) -986-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 +996-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 97ef42bf..e74ddc35 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -3,7 +3,7 @@ ISO 19005-1:2005 Rules for validation PDF files veraPDF Consortium - 2015-08-27T11-55-06Z+03 + 2015-09-03T14-19-36Z+03 sha-1 hash code @@ -805,6 +805,22 @@ 6.3.5 + + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + BaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + + A Type1 font subset does not define CharSet entry in its Descriptor dictionary + + + ISO19005-1 + 6.3.5 + + PDF 1.4 Reference + 5.5.3 + + + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the font dictionary and in the embedded font program shall be consistent From ebee26781dd763a88650b2e5f6806d07af7d150c Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Thu, 3 Sep 2015 16:03:20 +0300 Subject: [PATCH 049/557] Fix mistake --- PDFA-1B.xml | 1360 +++++++++++++++++ .../verapdf-profile-6-3-5-t03.xml | 2 +- PDF_A/PDFA-1B.html | 93 +- PDF_A/PDFA-1B.xml | 22 +- 4 files changed, 1430 insertions(+), 47 deletions(-) create mode 100644 PDFA-1B.xml diff --git a/PDFA-1B.xml b/PDFA-1B.xml new file mode 100644 index 00000000..319f3ee1 --- /dev/null +++ b/PDFA-1B.xml @@ -0,0 +1,1360 @@ + + + PDF/A-1B validation profile + Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 + veraPDF Consortium + 2015-09-03T16-06-44Z+03 + sha-1 hash code + + + The LZWDecode filter shall not be permitted + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + ISO19005-1 + 6.1.10 + + + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 + + LZW compression is used in the inline image + + + ISO19005-1 + 6.1.10 + + + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 + + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + + + ISO19005-1 + 6.1.7 + + PDF 1.4 Reference + 3.6.3 + + + + + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Absolute real value must be less than or equal to 32767.0 + (realValue >= -32767.0) && (realValue <= 32767.0) + + Real value out of range + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum length of a string (in bytes) is 65535 + value.length() < 65536 + + Maximum length of a String (65535) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum length of a name (in bytes) is 127 + origLength <= 127 + + Maximum length of a Name (127) exceeded + origLength + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum capacity of an array (in elements) is 8191 + size <= 8191 + + Maximum capacity of an array (8191) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum capacity of a dictionary (in entries) is 4095 + size <= 4095 + + Maximum capacity of a dictionary (4095) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum number of indirect objects in a PDF file is 8,388,607 + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum depth of graphics state nesting by q and Q operators is 28 + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum number of DeviceN components is 8 + nrComponents <= 8 + + Maximum number of DeviceN components is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum value of a CID (character identifier) is 65,535 + CID <= 65535 + + Maximum value of a CID (65,535) is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + The document catalog dictionary shall not contain a key with the name OCProperties + isOptionalContentPresent == false + + The document catalog dictionary contains the OCProperties entry + + + ISO19005-1 + 6.1.13 + + + + The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + pdfHeaderCompliesPDFA + + File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + + + ISO19005-1 + 6.1.2 + + PDF 1.4 Reference + 3.4.1 + + + + + The file header line shall be immediately followed by a comment consisting of a % character followed by at + least four characters, each of whose encoded byte values shall have a decimal value greater than 127 + binaryHeaderComplyPDFA + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + ISO19005-1 + 6.1.2 + + + + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + + Missing ID in the document trailer + + + ISO19005-1:2005 + 6.1.3 + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + ISO19005-1:2005 + 6.1.3 + + + + No data shall follow the last end-of-file marker except a single optional end-of-line marker. + eofCompliesPDFA + + Data is present after the last end-of-file marker + + + ISO19005-1:2005 + 6.1.3 + + + + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + Last ID is present in the Linearized PDF and does not match the first page ID + + + ISO 19005-1:2005/Cor.2:2011 + 6.1.3 + + + + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + xrefHeaderSpacingsComplyPDFA + + Spacings of subsection headers in the cross reference table do not comply PDF/A specification + + + ISO19005-1:2005 + 6.1.4 + + + + The xref keyword and the cross reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + ISO19005-1:2005 + 6.1.4 + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + Hexadecimal string contains odd number of non-white-space characters + + + ISO19005-1 + 6.1.6 + + + + All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f + (isHex != true) || isHexSymbols + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + ISO19005-1 + 6.1.6 + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + ISO19005-1 + 6.1.7 + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + spacingCompliesPDFA + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + ISO19005-1 + 6.1.7 + + + + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + ISO19005-1 + 6.1.7 + + + 19005-1:2005/Cor.2:2011 + 6.1.7 + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + ISO19005-1 + 6.1.8 + + + + A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operators + false + + A content stream contains an operator not defined in PDF Reference + + + ISO19005-1 + 6.2.10 + + + + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version <= 2.3 + + The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information + + + ISO19005-1 + 6.2.2 + + PDF 1.4 Reference + 9.4.10 + + + + + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream + destOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + ISO19005-1 + 6.2.2 + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version <= 2.3 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements + + + ISO19005-1 + 6.2.3 + + PDF 1.4 Reference + 4.5.4, ICCBased Color Spaces + + + + + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile + + + ISO19005-1 + 6.2.2, 6.2.3.2 + + PDF 1.4 Reference + 4.5.4, Table 4.16 + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + ISO19005-1 + 6.2.4 + + + + An XObject dictionary (Image or Form) shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + ISO19005-1 + 6.2.4 + + + ISO19005-1 + 6.2.5 + + + + + If an Image dictionary contains the Interpolate key, its value shall be false + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + ISO19005-1 + 6.2.4 + + + + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + + The form XObject dictionary contains a PS key or Subtype2 key with value PS + + + ISO19005-1 + 6.2.5 + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + ISO19005-1 + 6.2.6 + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + ISO19005-1 + 6.2.7 + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + ISO19005-1 + 6.2.8 + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + ISO19005-1 + 6.2.8 + + + + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + + A rendering intent with non-standard value is used + + + ISO19005-1 + 6.2.9 + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || BaseFont != null + + A BaseFont entry is missing or has invalid type + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatible + areRegistryOrderingCompatible == true + + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + ISO19005-1 + 6.3.3.1 + + PDF 1.4 Reference + 5.6.2 + + + + + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + ISO19005-1 + 6.3.3.2 + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + + + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + A CMap is different from "Identity-H" or "Identity-V" and is not embedded + + + ISO19005-1 + 6.3.3.3 + + PDF 1.4 Reference + 5.6.4 + + + + + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3 + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + ISO19005-1 + 6.3.4 + + PDF 1.4 Reference + 5.8 + + + + + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + ISO19005-1 + 6.3.5 + + + + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + BaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + + A Type1 font subset does not define CharSet entry in its Descriptor dictionary + + + ISO19005-1 + 6.3.5 + + PDF 1.4 Reference + 5.5.3 + + + + + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + BaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + ISO19005-1 + 6.3.5 + + PDF 1.4 Reference + 5.5.3 + + + + + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistent + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + ISO19005-1 + 6.3.6 + + + + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") + + A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + isSymbolic == false || nrCmaps == 1 + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + If an SMask key appears in an ExtGState dictionary, its value shall be None + SMask == null || SMask == "None" + + An ExtGState contains SMask key with a value other than None + + + ISO19005-1 + 6.4 + + + + A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionary + S != "Transparency" + + A transparency group is present in a form XObject or page dictionary + + + ISO19005-1:2005/Cor.2:2011 + 6.4 + + + + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible + BM == null || BM == "Normal" || BM == "Compatible" + + An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible + + + ISO19005-1 + 6.4 + + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + ca == null || ca == 1.0 + + An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 + + + ISO19005-1 + 6.4 + + + + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" + + Unknown or not permitted annotation type + + + ISO19005-1 + 6.5.2 + + PDF 1.4 Reference + 8.4.5 + + + + + An annotation dictionary shall not contain the CA key with a value other than 1.0 + CA == null || CA == 1.0 + + An annotation dictionary contains the CA key with value other than 1.0 + + + ISO19005-1 + 6.5.3 + + + + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0 + F != null && (F & 4) == 1 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 + + Annotation flags are either missing or have forbidden values + + + ISO19005-1 + 6.5.3 + + + + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + + Annotation's color or interior color is used without specifying RGB-based destination output profile + + + ISO19005-1 + 6.5.3 + + + + If an annotation dictionary contains the AP key, the appearance dictionary that it defines as its value shall contain only the N key, + whose value shall be a stream defining the appearance of the annotation + AP == null || ( AP == "N" && ( (FT != "Btn" && N_type == "Stream") || (FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + ISO19005-1 + 6.5.3 + + + + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + ISO19005-1 + 6.6.1 + + PDF 1.4 Reference + 8.5.3 - Table 8.34 + + + + ISO19005-1:2005/Cor.2:2011 + 6.6.1 + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted action type + + + ISO19005-1 + 6.6.1 + + PDF 1.4 Reference + 8.5.3 - Named Actions - Table 8.45 + + + + + Interactive form fields shall not perform actions of any type + Subtype != "Widget" || A_size == 0 + + Interactive form field contains an action object ('A' key) + + + ISO19005-1 + 6.6.1 + + + + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + Subtype != "Widget" || AA_size == 0 + + A Widget annotation contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + A Field dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + A Field dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2, 6.9 + + + + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + ispdfaidNSPresent + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + ISO 19005-1:2005 + 6.7.11 + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + part == 1 + + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + part + + + ISO 19005-1:2005 + 6.7.11 + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + conformance == "B" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. + conformance + + + ISO 19005-1:2005 + 6.7.11 + + + + The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. + corr == null + + The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. + + + ISO 19005-1:2005 + 6.7.11 + + + + The PDF/A Identification Schema has required prefix "pdfaid". + prefix == "pdfaid" + + A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". + prefix + + + ISO 19005-1:2005 + 6.7.11 + + + + The document catalog dictionary of a conforming file shall contain the Metadata key. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + ISO 19005-1:2005 + 6.7.2 + + + + Metadata object stream dictionaries shall not contain the Filter key. + Filter == null + + The metadata object stream dictionary contains the Filter key. + + + ISO 19005-1:2005 + 6.7.2 + + + + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + doesInfoMatchXMP + + Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.3 + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + ISO 19005-1:2005 + 6.7.5 + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + ISO 19005-1:2005 + 6.7.5 + + + + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + isDefinitionCorrect + + Wrong definition of an extention schema with namespace URI: %1 + uri + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + isDefinedInThisPackage + + Missed definition of an extention schema with namespace URI: %1 + uri + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + The required PDF/A Extension Schema namespace prefix is pdfaExtension. + prefix == "pdfaExtension" + + A PDF/A Extension Schema namespace prefix is %1, but shall be "pdfaExtension". + prefix + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Field Schema namespace prefix is required to be "pdfaField". + isPDFAFieldPrefixCorrect + + A PDF/A Field Schema namespace prefix is not "pdfaField". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". + isPDFAPropertyPrefixCorrect + + A PDF/A Property Schema namespace prefix is not "pdfaProperty". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". + isPDFASchemaPrefixCorrect + + A PDF/A Schema Description Schema namespace prefix is not "pdfaSchema". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". + isPDFATypePrefixCorrect + + A PDF/A ValueType Schema namespace prefix is not "pdfaType". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + The metadata stream shall conform to XMP Specification. + isMetadataValid + + The metadata stream doesn't conform to XMP Specification. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + unknownProperties == null + + The predefined schema with namespace URI %1 has unknown properties: %2. + uri + unknownProperties + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + wrongValueTypeProperties == null + + The predefined schema with namespace URI %1 has properties of wrong type: %2. + uri + wrongValueTypeProperties + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + ISO19005-1 + 6.9 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + ISO19005-1 + 6.9 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + AA_size == 0 + + A Form field dictionary contains the AA entry + + + ISO19005-1 + 6.9 + + + + + + null + gOutputProfileRef == null ? destOutputProfileRef : gOutputProfileRef + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml index 7996228d..cef4134b 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml @@ -7,7 +7,7 @@ 2015-09-01T18:29:02Z sha-1 hash code - + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 BaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 diff --git a/PDF_A/PDFA-1B.html b/PDF_A/PDFA-1B.html index d4d872c2..45ea8bbf 100644 --- a/PDF_A/PDFA-1B.html +++ b/PDF_A/PDFA-1B.html @@ -2,7 +2,10 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDNameDescriptionTypeRule
16-7-11-t03The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "A"
26-8-2-t01The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of trueCosDocumentMarked == true
36-8-3-t01The 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 PDF Reference 9.6PDDocumentStructTreeRoot_size == 1
46-8-3-t02Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElemPDStructElemType == "StructElem"
56-1-10-t01The LZWDecode filter shall not be permittedCosStreamfilters == null || filters.indexOf("LZWDecode") == -1
66-1-10-t02The LZWDecode filter shall not be permittedPDInlineImageF == null || F.indexOf("LZW") == -1
76-1-11-t01A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF keyCosFileSpecificationEF == null
86-1-11-t02A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles keyCosDocumentEmbeddedFiles_size == 0
96-1-12-t01Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648CosInteger(intValue <= 2147483647) && (intValue >= -2147483648)
106-1-12-t02Absolute real value must be less than or equal to 32767.0CosReal(realValue >= -32767.0) && (realValue <= 32767.0)
116-1-12-t03Maximum length of a string (in bytes) is 65535CosStringvalue.length() < 65536
126-1-12-t04Maximum length of a name (in bytes) is 127CosNameinternalRepresentation.length() <= 127
136-1-12-t05Maximum capacity of an array (in elements) is 8191CosArraysize <= 8191
146-1-12-t06Maximum capacity of a dictionary (in entries) is 4095CosDictsize <= 4095
156-1-12-t07Maximum number of indirect objects in a PDF file is 8,388,607CosDocumentnrIndirects <= 8388607
166-1-12-t08Maximum depth of graphics state nesting by q and Q operators is 28Op_q_gsavenestingLevel <= 28
176-1-12-t09Maximum number of DeviceN components is 8PDDeviceNnrComponents <= 8
186-1-12-t10Maximum value of a CID (character identifier) is 65,535CIDGlyphCID <= 65535
196-1-13-t01The document catalog dictionary shall not contain a key with the name OCPropertiesCosDocumentisOptionalContentPresent == false
206-1-2-t01The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conformsCosDocumentheaderOffset == 0 && /%PDF-\d\.\d/.test(header)
216-1-2-t02The file header line shall be immediately followed by a comment consisting of a % character followed by at + least four characters, each of whose encoded byte values shall have a decimal value greater than 127CosDocumentheaderByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
226-1-3-t01The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2CosDocument(isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null)
236-1-3-t02The keyword Encrypt shall not be used in the trailer dictionaryCosTrailerisEncrypted != true
246-1-3-t03No data shall follow the last end-of-file marker except a single optional end-of-line marker.CosDocumentpostEOFDataSize == 0
256-1-3-t04In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identicalCosDocument(isLinearized != true)|| lastID == null || (firstPageID == lastID)
266-1-4-t01In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)CosXRefsubsectionHeaderSpaceSeparated == true
276-1-4-t02The xref keyword and the cross reference subsection header shall be separated by a single EOL markerCosXRefxrefEOLMarkersComplyPDFA
286-1-6-t01Hexadecimal strings shall contain an even number of non-white-space charactersCosString(isHex != true) || hexCount % 2 == 0
296-1-6-t02All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to fCosString(isHex != true) || containsOnlyHex
306-1-7-t01The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keywordCosStreamisLengthCorrect
316-1-7-t02The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL markerCosStreamstreamKeywordCRLFCompliant && endstreamKeywordEOLCompliant
326-1-7-t03A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keysCosStreamF == null && FFilter == null && FDecodeParms == null
336-1-8-t01The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker.CosIndirectspacingCompliesPDFA
346-2-10-t01A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operatorsOp_Undefinedfalse
356-2-2-t01A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile keyICCOutputProfile(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0
366-2-2-t02If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef
376-2-3-t01All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0
386-2-3-t02DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour spacePDDeviceRGBgOutputCS != null && gOutputCS == "RGB "
396-2-3-t03DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour spacePDDeviceCMYKgOutputCS != null && gOutputCS == "CMYK"
406-2-3-t04If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2PDDeviceGraygOutputCS != null
416-2-3-t05All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4ICCProfileN != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK"))
426-2-4-t01An Image dictionary shall not contain the Alternates keyPDXImageAlternates_size == 0
436-2-4-t02An XObject dictionary (Image or Form) shall not contain the OPI keyPDXObjectOPI_size == 0
446-2-4-t03If an Image dictionary contains the Interpolate key, its value shall be falsePDXImageInterpolate == false
456-2-5-t01A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS keyPDXForm(Subtype2 == null || Subtype2 != "PS") && PS_size == 0
466-2-6-t01A conforming file shall not contain any reference XObjectsPDXFormRef_size == 0
476-2-7-t01A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS"
486-2-8-t01An ExtGState dictionary shall not contain the TR keyPDExtGStateTR == null
496-2-8-t02An ExtGState dictionary shall not contain the TR2 key with a value other than DefaultPDExtGStateTR2 == null || TR2 == "Default"
506-2-9-t01Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or SaturationCosRenderingIntentvalue == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation"
516-3-2-t01All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionaryPDFontType == "Font"
526-3-2-t02All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fontsPDFontSubtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
536-3-2-t03All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont != null
546-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null
556-3-2-t05All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null
566-3-2-t06All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
576-3-3-t01For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatiblePDType0FontareRegistryOrderingCompatible == true
586-3-3-t02For all Type 2 CIDFonts, 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 PDF Reference Table 5.13PDCIDFontSubtype != "CIDFontType2" || CIDToGIDMap != null
596-3-3-t03All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4PDCMapCMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1
606-3-3-t04For 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 streamCMapFileWMode == dictWMode
616-3-4-t01The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3PDFontSubtype == "Type3" || Subtype == "Type0" || fontFile_size == 1
626-3-5-t01Embedded font programs shall define all font glyphs referenced for rendering with a conforming fileGlyphisGlyphPresent == true
636-3-5-t02For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontBaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null
646-3-5-t03For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontBaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1
656-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistentGlyphisWidthConsistent == true
666-3-7-t01All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding")
676-3-7-t02 All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null
686-3-7-t03Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encodingTrueTypeFontProgramisSymbolic == false || nrCmaps == 1
696-4-t01If an SMask key appears in an ExtGState dictionary, its value shall be NonePDExtGStateSMask == null || SMask == "None"
706-4-t02An XObject dictionary shall not contain the SMask keyPDXObjectSMask_size == 0
716-4-t03A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionaryPDGroupS != "Transparency"
726-4-t04The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or CompatiblePDExtGStateBM == null || BM == "Normal" || BM == "Compatible"
736-4-t05The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateCA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001
746-4-t06The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001
756-5-2-t01Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permittedPDAnnotSubtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet"
766-5-3-t01An annotation dictionary shall not contain the CA key with a value other than 1.0PDAnnotCA == null || CA == 1.0
776-5-3-t02An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0PDAnnotF != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0
786-5-3-t03An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGBPDAnnot(C_size == 0 && IC_size == 0) || gOutputCS == "RGB "
796-5-3-t04For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + subdictionary; otherwise the value of the N key shall be an appearance stream.PDAnnotAP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) )
806-6-1-t01The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)PDActionS == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
816-6-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permittedPDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
826-6-1-t03Interactive form fields shall not perform actions of any typePDAnnotSubtype != "Widget" || A_size == 0
836-6-2-t01A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionaryPDAnnotSubtype != "Widget" || AA_size == 0
846-6-2-t02A Field dictionary shall not include an AA entry for an additional-actions dictionaryPDFormFieldAA_size == 0
856-6-2-t03The document catalog dictionary shall not include an AA entry for an additional-actions dictionaryPDDocumentAA_size == 0
866-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent
876-7-11-t02The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1
886-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null
896-7-11-t05The PDF/A Identification Schema has required prefix "pdfaid".PDFAIdSchemaprefix == "pdfaid"
906-7-2-t01The document catalog dictionary of a conforming file shall contain the Metadata key.PDDocumentmetadata_size == 1
916-7-2-t02Metadata object stream dictionaries shall not contain the Filter key.PDMetadataFilter == null
926-7-3-t01If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values.CosDocumentdoesInfoMatchXMP
936-7-5-t01The bytes attribute shall not be used in the header of an XMP packet.XMPPackagebytes == null
946-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null
956-7-8-t01All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinitionCorrect
966-7-8-t02All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinedInThisPackage
976-7-8-t03The required PDF/A Extension Schema namespace prefix is pdfaExtension.PDFAExtensionSchemaprefix == "pdfaExtension"
986-7-8-t04A PDF/A Field Schema namespace prefix is required to be "pdfaField".PDFAExtensionSchemaisPDFAFieldPrefixCorrect
996-7-8-t05A PDF/A Property Schema namespace prefix is required to be "pdfaProperty".PDFAExtensionSchemaisPDFAPropertyPrefixCorrect
1006-7-8-t06A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema".PDFAExtensionSchemaisPDFASchemaPrefixCorrect
1016-7-8-t07A PDF/A ValueType Schema namespace prefix is required to be "pdfaType".PDFAExtensionSchemaisPDFATypePrefixCorrect
1026-7-9-t01The metadata stream shall conform to XMP Specification.XMPPackageisMetadataValid
1036-7-9-t02All predefined schemas shall conform to XMP specification.XMPPredefinedSchemaunknownProperties == null
1046-7-9-t03All predefined schemas shall conform to XMP specification.XMPPredefinedSchemawrongValueTypeProperties == null
1056-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false
1066-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0)
1076-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0
+ + diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml new file mode 100644 index 00000000..53633830 --- /dev/null +++ b/PDF_A/PDFA-1A.xml @@ -0,0 +1,1455 @@ + + + PDF/A-1B validation profile + Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 + veraPDF Consortium + 2015-10-27T10-25-19Z+02 + sha-1 hash code + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1A conforming file. + conformance + + + ISO 19005-1:2005 + 6.7.11 + + + + The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true + Marked == true + + /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false + + + ISO19005-1 + 6.8.2.2 + + PDF 1.4 Reference + 9.7.1 + + + + + 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 PDF Reference 9.6 + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + ISO19005-1 + 6.8.3.3 + + PDF 1.4 Reference + 9.6.1 + + + + + Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem + Type == "StructElem" + + Missing or invalid Type entry in the structure element dictionary + + + ISO19005-1 + 6.8.3.3 + + PDF 1.4 Reference + 9.6.1 + + + + + The LZWDecode filter shall not be permitted + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + ISO19005-1 + 6.1.10 + + + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 + + LZW compression is used in the inline image + + + ISO19005-1 + 6.1.10 + + + + A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key + EF == null + + A file specification dictionary contains the EF key + + + ISO19005-1 + 6.1.11 + + PDF 1.4 Reference + 3.10.2 + + + + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 + + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + + + ISO19005-1 + 6.1.11 + + PDF 1.4 Reference + 3.6.3 + + + + + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Absolute real value must be less than or equal to 32767.0 + (realValue >= -32767.0) && (realValue <= 32767.0) + + Real value out of range + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum length of a string (in bytes) is 65535 + value.length() < 65536 + + Maximum length of a String (65535) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum length of a name (in bytes) is 127 + internalRepresentation.length() <= 127 + + Maximum length of a Name (127) exceeded + internalRepresentation.length() + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum capacity of an array (in elements) is 8191 + size <= 8191 + + Maximum capacity of an array (8191) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum capacity of a dictionary (in entries) is 4095 + size <= 4095 + + Maximum capacity of a dictionary (4095) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum number of indirect objects in a PDF file is 8,388,607 + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum depth of graphics state nesting by q and Q operators is 28 + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum number of DeviceN components is 8 + nrComponents <= 8 + + Maximum number of DeviceN components is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum value of a CID (character identifier) is 65,535 + CID <= 65535 + + Maximum value of a CID (65,535) is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + The document catalog dictionary shall not contain a key with the name OCProperties + isOptionalContentPresent == false + + The document catalog dictionary contains the OCProperties entry + + + ISO19005-1 + 6.1.13 + + + + The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + headerOffset == 0 && /%PDF-\d\.\d/.test(header) + + File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + + + ISO19005-1 + 6.1.2 + + PDF 1.4 Reference + 3.4.1 + + + + + The file header line shall be immediately followed by a comment consisting of a % character followed by at + least four characters, each of whose encoded byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + ISO19005-1 + 6.1.2 + + + + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + + Missing ID in the document trailer + + + ISO19005-1:2005 + 6.1.3 + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + ISO19005-1:2005 + 6.1.3 + + + + No data shall follow the last end-of-file marker except a single optional end-of-line marker. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + ISO19005-1:2005 + 6.1.3 + + + + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + Last ID is present in the Linearized PDF and does not match the first page ID + + + ISO 19005-1:2005/Cor.2:2011 + 6.1.3 + + + + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + subsectionHeaderSpaceSeparated == true + + Spacings of subsection headers in the cross reference table do not comply PDF/A specification + + + ISO19005-1:2005 + 6.1.4 + + + + The xref keyword and the cross reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + ISO19005-1:2005 + 6.1.4 + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + Hexadecimal string contains odd number of non-white-space characters + + + ISO19005-1 + 6.1.6 + + + + All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + ISO19005-1 + 6.1.6 + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + ISO19005-1 + 6.1.7 + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + ISO19005-1 + 6.1.7 + + + + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + ISO19005-1 + 6.1.7 + + + 19005-1:2005/Cor.2:2011 + 6.1.7 + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + ISO19005-1 + 6.1.8 + + + + A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operators + false + + A content stream contains an operator not defined in PDF Reference + + + ISO19005-1 + 6.2.10 + + + + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 + + The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information + + + ISO19005-1 + 6.2.2 + + PDF 1.4 Reference + 9.4.10 + + + + + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream + destOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + ISO19005-1 + 6.2.2 + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements + + + ISO19005-1 + 6.2.3 + + PDF 1.4 Reference + 4.5.4, ICCBased Color Spaces + + + + + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile + + + ISO19005-1 + 6.2.3.2 + + PDF 1.4 Reference + 4.5.4, Table 4.16 + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + ISO19005-1 + 6.2.4 + + + + An XObject dictionary (Image or Form) shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + ISO19005-1 + 6.2.4 + + + ISO19005-1 + 6.2.5 + + + + + If an Image dictionary contains the Interpolate key, its value shall be false + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + ISO19005-1 + 6.2.4 + + + + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + + The form XObject dictionary contains a PS key or Subtype2 key with value PS + + + ISO19005-1 + 6.2.5 + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + ISO19005-1 + 6.2.6 + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + ISO19005-1 + 6.2.7 + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + ISO19005-1 + 6.2.8 + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + ISO19005-1 + 6.2.8 + + + + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + + A rendering intent with non-standard value is used + + + ISO19005-1 + 6.2.9 + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || BaseFont != null + + A BaseFont entry is missing or has invalid type + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatible + areRegistryOrderingCompatible == true + + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + ISO19005-1 + 6.3.3.1 + + PDF 1.4 Reference + 5.6.2 + + + + + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + ISO19005-1 + 6.3.3.2 + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + + + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + A CMap is different from "Identity-H" or "Identity-V" and is not embedded + + + ISO19005-1 + 6.3.3.3 + + PDF 1.4 Reference + 5.6.4 + + + + + 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 + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + ISO19005-1 + 6.3.3.3 + + + + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3 + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + ISO19005-1 + 6.3.4 + + PDF 1.4 Reference + 5.8 + + + + + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + ISO19005-1 + 6.3.5 + + + + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + BaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + + A Type1 font subset does not define CharSet entry in its Descriptor dictionary + + + ISO19005-1 + 6.3.5 + + PDF 1.4 Reference + 5.5.3 + + + + + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + BaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + ISO19005-1 + 6.3.5 + + PDF 1.4 Reference + 5.5.3 + + + + + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistent + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + ISO19005-1 + 6.3.6 + + + + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") + + A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + isSymbolic == false || nrCmaps == 1 + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + If an SMask key appears in an ExtGState dictionary, its value shall be None + SMask == null || SMask == "None" + + An ExtGState contains SMask key with a value other than None + + + ISO19005-1 + 6.4 + + + + An XObject dictionary shall not contain the SMask key + SMask_size == 0 + + An XObject contains an SMask key + + + ISO19005-1:2005/Cor.2:2011 + 6.4 + + + + A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionary + S != "Transparency" + + A transparency group is present in a form XObject or page dictionary + + + ISO19005-1:2005/Cor.2:2011 + 6.4 + + + + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible + BM == null || BM == "Normal" || BM == "Compatible" + + An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible + + + ISO19005-1 + 6.4 + + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 + + An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 + + + ISO19005-1 + 6.4 + + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 + + An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 + + + ISO19005-1 + 6.4 + + + + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" + + Unknown or not permitted annotation type + + + ISO19005-1 + 6.5.2 + + PDF 1.4 Reference + 8.4.5 + + + + + An annotation dictionary shall not contain the CA key with a value other than 1.0 + CA == null || CA == 1.0 + + An annotation dictionary contains the CA key with value other than 1.0 + + + ISO19005-1 + 6.5.3 + + + + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0 + F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 + + Annotation flags are either missing or have forbidden values + + + ISO19005-1 + 6.5.3 + + + + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + + Annotation's color or interior color is used without specifying RGB-based destination output profile + + + ISO19005-1 + 6.5.3 + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + subdictionary; otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + ISO19005-1/Cor.2:2011 + 6.5.3 + + + + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + ISO19005-1 + 6.6.1 + + PDF 1.4 Reference + 8.5.3 - Table 8.34 + + + + ISO19005-1:2005/Cor.2:2011 + 6.6.1 + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted action type + + + ISO19005-1 + 6.6.1 + + PDF 1.4 Reference + 8.5.3 - Named Actions - Table 8.45 + + + + + Interactive form fields shall not perform actions of any type + Subtype != "Widget" || A_size == 0 + + Interactive form field contains an action object ('A' key) + + + ISO19005-1 + 6.6.1 + + + + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + Subtype != "Widget" || AA_size == 0 + + A Widget annotation contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + A Field dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + A Field dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2, 6.9 + + + + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + ispdfaidNSPresent + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + ISO 19005-1:2005 + 6.7.11 + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + part == 1 + + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + part + + + ISO 19005-1:2005 + 6.7.11 + + + + The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. + corr == null + + The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. + + + ISO 19005-1:2005 + 6.7.11 + + + + The PDF/A Identification Schema has required prefix "pdfaid". + prefix == "pdfaid" + + A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". + prefix + + + ISO 19005-1:2005 + 6.7.11 + + + + The document catalog dictionary of a conforming file shall contain the Metadata key. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + ISO 19005-1:2005 + 6.7.2 + + + + Metadata object stream dictionaries shall not contain the Filter key. + Filter == null + + The metadata object stream dictionary contains the Filter key. + + + ISO 19005-1:2005 + 6.7.2 + + + + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + doesInfoMatchXMP + + Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.3 + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + ISO 19005-1:2005 + 6.7.5 + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + ISO 19005-1:2005 + 6.7.5 + + + + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + isDefinitionCorrect + + Wrong definition of an extention schema with namespace URI: %1 + uri + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + isDefinedInThisPackage + + Missed definition of an extention schema with namespace URI: %1 + uri + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + The required PDF/A Extension Schema namespace prefix is pdfaExtension. + prefix == "pdfaExtension" + + A PDF/A Extension Schema namespace prefix is %1, but shall be "pdfaExtension". + prefix + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Field Schema namespace prefix is required to be "pdfaField". + isPDFAFieldPrefixCorrect + + A PDF/A Field Schema namespace prefix is not "pdfaField". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". + isPDFAPropertyPrefixCorrect + + A PDF/A Property Schema namespace prefix is not "pdfaProperty". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". + isPDFASchemaPrefixCorrect + + A PDF/A Schema Description Schema namespace prefix is not "pdfaSchema". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". + isPDFATypePrefixCorrect + + A PDF/A ValueType Schema namespace prefix is not "pdfaType". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + The metadata stream shall conform to XMP Specification. + isMetadataValid + + The metadata stream doesn't conform to XMP Specification. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + unknownProperties == null + + The predefined schema with namespace URI %1 has unknown properties: %2. + uri + unknownProperties + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + wrongValueTypeProperties == null + + The predefined schema with namespace URI %1 has properties of wrong type: %2. + uri + wrongValueTypeProperties + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + ISO19005-1 + 6.9 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + ISO19005-1 + 6.9 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + AA_size == 0 + + A Form field dictionary contains the AA entry + + + ISO19005-1 + 6.9 + + + + + + null + gOutputProfileRef == null ? destOutputProfileRef : gOutputProfileRef + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + From b6c26ce8a089e696088d5dccb69fb11c01892deb Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Tue, 27 Oct 2015 10:36:52 +0200 Subject: [PATCH 076/557] Add global 2b profile --- PDF_A/PDFA-2B.html | 406 ++++++++++++ PDF_A/PDFA-2B.xml | 1526 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1932 insertions(+) create mode 100644 PDF_A/PDFA-2B.html create mode 100644 PDF_A/PDFA-2B.xml diff --git a/PDF_A/PDFA-2B.html b/PDF_A/PDFA-2B.html new file mode 100644 index 00000000..3e742512 --- /dev/null +++ b/PDF_A/PDFA-2B.html @@ -0,0 +1,406 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDNameDescriptionTypeRule
16-1-10-t01The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value.PDInlineImageF == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1)
26-1-13-t01A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648.CosInteger(intValue <= 2147483647) && (intValue >= -2147483648)
36-1-13-t02A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38CosReal(realValue >= -3.403e+38) && (realValue <= 3.403e+38)
46-1-13-t03A conforming file shall not contain any string longer than 32767 bytes.CosStringvalue.length() < 32767
56-1-13-t04A conforming file shall not contain any name longer than 127 bytes.CosNameorigLength <= 127
66-1-13-t07A conforming file shall not contain more than 8388607 indirect objectsCosDocumentnrIndirects <= 8388607
76-1-13-t08A conforming file shall not nest q/Q pairs by more than 28 nesting levelsOp_q_gsavenestingLevel <= 28
86-1-13-t09A conforming file shall not contain a DeviceN colour space with more than 32 colourants.PDDeviceNnrComponents <= 32
96-1-13-t10A conforming file shall not contain a CID value greater than 65535.CIDGlyphCID <= 65535
106-1-13-t11The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units + in either direction, nor shall it be greater than 14 400 units in either direction.CosBBoxtop - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400
116-1-2-t01The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h)CosDocumentheaderOffset == 0 && /%PDF-1\.[0-7]/.test(header)
126-1-2-t02The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127CosDocumentheaderByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
136-1-3-t01The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4CosDocumentlastID
146-1-3-t02The keyword Encrypt shall not be used in the trailer dictionaryCosTrailerisEncrypted != true
156-1-3-t03No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5.CosDocumentpostEOFDataSize == 0
166-1-4-t02The xref keyword and the cross-reference subsection header shall be separated by a single EOL markerCosXRefxrefEOLMarkersComplyPDFA
176-1-6-t01Hexadecimal strings shall contain an even number of non-white-space charactersCosString(isHex != true) || hexCount % 2 == 0
186-1-6-t02A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)CosString(isHex != true) || isHexSymbols
196-1-7-t01The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword.CosStreamisLengthCorrect
206-1-7-t02The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker.CosStreamstreamKeywordCRLFCompliant && endstreamKeywordEOLCompliant
216-1-7-t03A stream dictionary shall not contain the F, FFilter, or FDecodeParams keysCosStreamF == null && FFilter == null && FDecodeParms == null
226-1-7-t04All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode.CosStreamfilters == null || filters.indexOf("LZWDecode") == -1
236-1-8-t01Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences.CosUnicodeNameisCorrectUtf8 == true
246-1-9-t01The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker.CosIndirectspacingCompliesPDFA
256-1-10-t02The LZWDecode filter shall not be permittedPDInlineImageF == null || F.indexOf("LZW") == -1
266-1-11-t01A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF keyCosFileSpecificationEF == null
276-1-11-t02A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles keyCosDocumentEmbeddedFiles_size == 0
286-1-12-t01Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648CosInteger(intValue <= 2147483647) && (intValue >= -2147483648)
296-1-12-t02Absolute real value must be less than or equal to 32767.0CosReal(realValue >= -32767.0) && (realValue <= 32767.0)
306-1-12-t03Maximum length of a string (in bytes) is 65535CosStringvalue.length() < 65536
316-1-12-t04Maximum length of a name (in bytes) is 127CosNameinternalRepresentation.length() <= 127
326-1-12-t05Maximum capacity of an array (in elements) is 8191CosArraysize <= 8191
336-1-12-t06Maximum capacity of a dictionary (in entries) is 4095CosDictsize <= 4095
346-1-12-t07Maximum number of indirect objects in a PDF file is 8,388,607CosDocumentnrIndirects <= 8388607
356-1-12-t08Maximum depth of graphics state nesting by q and Q operators is 28Op_q_gsavenestingLevel <= 28
366-1-12-t09Maximum number of DeviceN components is 8PDDeviceNnrComponents <= 8
376-1-12-t10Maximum value of a CID (character identifier) is 65,535CIDGlyphCID <= 65535
386-1-3-t04In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identicalCosDocument(isLinearized != true)|| lastID == null || (firstPageID == lastID)
396-1-4-t01In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)CosXRefsubsectionHeaderSpaceSeparated == true
406-2-10-t01A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operatorsOp_Undefinedfalse
416-2-2-t01A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile keyICCOutputProfile(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0
426-2-2-t02If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef
436-2-3-t01All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0
446-2-3-t02DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour spacePDDeviceRGBgOutputCS != null && gOutputCS == "RGB "
456-2-3-t03DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour spacePDDeviceCMYKgOutputCS != null && gOutputCS == "CMYK"
466-2-3-t04If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2PDDeviceGraygOutputCS != null
476-2-3-t05All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4ICCProfileN != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK"))
486-2-4-t01An Image dictionary shall not contain the Alternates keyPDXImageAlternates_size == 0
496-2-4-t02An XObject dictionary (Image or Form) shall not contain the OPI keyPDXObjectOPI_size == 0
506-2-4-t03If an Image dictionary contains the Interpolate key, its value shall be falsePDXImageInterpolate == false
516-2-5-t01A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS keyPDXForm(Subtype2 == null || Subtype2 != "PS") && PS_size == 0
526-2-6-t01A conforming file shall not contain any reference XObjectsPDXFormRef_size == 0
536-2-7-t01A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS"
546-2-8-t01An ExtGState dictionary shall not contain the TR keyPDExtGStateTR == null
556-2-8-t02An ExtGState dictionary shall not contain the TR2 key with a value other than DefaultPDExtGStateTR2 == null || TR2 == "Default"
566-2-9-t01Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or SaturationCosRenderingIntentvalue == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation"
576-3-2-t01All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionaryPDFontType == "Font"
586-3-2-t02All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fontsPDFontSubtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
596-3-2-t03All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont != null
606-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null
616-3-2-t05All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null
626-3-2-t06All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
636-3-3-t01For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatiblePDType0FontareRegistryOrderingCompatible == true
646-3-3-t02For all Type 2 CIDFonts, 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 PDF Reference Table 5.13PDCIDFontSubtype != "CIDFontType2" || CIDToGIDMap != null
656-3-3-t03All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4PDCMapCMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1
666-3-3-t04For 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 streamCMapFileWMode == dictWMode
676-3-4-t01The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3PDFontSubtype == "Type3" || Subtype == "Type0" || fontFile_size == 1
686-3-5-t01Embedded font programs shall define all font glyphs referenced for rendering with a conforming fileGlyphisGlyphPresent == true
696-3-5-t02For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontBaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null
706-3-5-t03For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontBaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1
716-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistentGlyphisWidthConsistent == true
726-3-7-t01All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding")
736-3-7-t02 All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null
746-3-7-t03Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encodingTrueTypeFontProgramisSymbolic == false || nrCmaps == 1
756-4-t01If an SMask key appears in an ExtGState dictionary, its value shall be NonePDExtGStateSMask == null || SMask == "None"
766-4-t02An XObject dictionary shall not contain the SMask keyPDXObjectSMask_size == 0
776-4-t03A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionaryPDGroupS != "Transparency"
786-4-t04The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or CompatiblePDExtGStateBM == null || BM == "Normal" || BM == "Compatible"
796-4-t05The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateCA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001
806-4-t06The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001
816-5-2-t01Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permittedPDAnnotSubtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet"
826-5-3-t01An annotation dictionary shall not contain the CA key with a value other than 1.0PDAnnotCA == null || CA == 1.0
836-5-3-t02An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0PDAnnotF != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0
846-5-3-t03An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGBPDAnnot(C_size == 0 && IC_size == 0) || gOutputCS == "RGB "
856-5-3-t04For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + subdictionary; otherwise the value of the N key shall be an appearance stream.PDAnnotAP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) )
866-6-1-t01The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)PDActionS == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
876-6-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permittedPDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
886-6-1-t03Interactive form fields shall not perform actions of any typePDAnnotSubtype != "Widget" || A_size == 0
896-6-2-t01A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionaryPDAnnotSubtype != "Widget" || AA_size == 0
906-6-2-t02A Field dictionary shall not include an AA entry for an additional-actions dictionaryPDFormFieldAA_size == 0
916-6-2-t03The document catalog dictionary shall not include an AA entry for an additional-actions dictionaryPDDocumentAA_size == 0
926-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent
936-7-11-t02The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1
946-7-11-t03The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B"
956-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null
966-7-11-t05The PDF/A Identification Schema has required prefix "pdfaid".PDFAIdSchemaprefix == "pdfaid"
976-7-2-t01The document catalog dictionary of a conforming file shall contain the Metadata key.PDDocumentmetadata_size == 1
986-7-2-t02Metadata object stream dictionaries shall not contain the Filter key.PDMetadataFilter == null
996-7-3-t01If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values.CosDocumentdoesInfoMatchXMP
1006-7-5-t01The bytes attribute shall not be used in the header of an XMP packet.XMPPackagebytes == null
1016-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null
1026-7-8-t01All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinitionCorrect
1036-7-8-t02All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinedInThisPackage
1046-7-8-t03The required PDF/A Extension Schema namespace prefix is pdfaExtension.PDFAExtensionSchemaprefix == "pdfaExtension"
1056-7-8-t04A PDF/A Field Schema namespace prefix is required to be "pdfaField".PDFAExtensionSchemaisPDFAFieldPrefixCorrect
1066-7-8-t05A PDF/A Property Schema namespace prefix is required to be "pdfaProperty".PDFAExtensionSchemaisPDFAPropertyPrefixCorrect
1076-7-8-t06A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema".PDFAExtensionSchemaisPDFASchemaPrefixCorrect
1086-7-8-t07A PDF/A ValueType Schema namespace prefix is required to be "pdfaType".PDFAExtensionSchemaisPDFATypePrefixCorrect
1096-7-9-t01The metadata stream shall conform to XMP Specification.XMPPackageisMetadataValid
1106-7-9-t02All predefined schemas shall conform to XMP specification.XMPPredefinedSchemaunknownProperties == null
1116-7-9-t03All predefined schemas shall conform to XMP specification.XMPPredefinedSchemawrongValueTypeProperties == null
1126-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false
1136-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0)
1146-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0
+ + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml new file mode 100644 index 00000000..611cd4ed --- /dev/null +++ b/PDF_A/PDFA-2B.xml @@ -0,0 +1,1526 @@ + + + PDF/A-1B validation profile + Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 + veraPDF Consortium + 2015-10-27T10-31-20Z+02 + sha-1 hash code + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value. + F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) + + Inline image uses LZW, Crypt or one of the unknown filters + + + ISO19005-2:2011 + 6.1.10 + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 + (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + Real value out of range + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain any string longer than 32767 bytes. + value.length() < 32767 + + Maximum length of a String (32767) exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain any name longer than 127 bytes. + origLength <= 127 + + Maximum length of a Name (127) exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain more than 8388607 indirect objects + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not nest q/Q pairs by more than 28 nesting levels + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + nrComponents <= 32 + + Maximum number of DeviceN components (32) is exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain a CID value greater than 65535. + CID <= 65535 + + Maximum value of a CID (65535) is exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units + in either direction, nor shall it be greater than 14 400 units in either direction. + top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + + One of the bage boundaries is out of range (3-14400) in one of the directions + + + ISO19005-2:2011 + 6.1.13 + + + + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h) + headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + + + ISO19005-2:2011 + 6.1.2 + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + ISO19005-2:2011 + 6.1.2 + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID + + Missing ID in the document trailer + + + ISO19005-2:2011 + 6.1.3 + + ISO32000-1:2008 + 14.4 + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + ISO19005-2:2011 + 6.1.3 + + + + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + ISO19005-2:2011 + 6.1.3 + + ISO32000-1:2008 + 7.5.5 + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + ISO19005-2:2011 + 6.1.4 + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + ISO19005-2 + 6.1.6 + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || isHexSymbols + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + ISO32000-1:2008 + 3.2.3 + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + ISO19005-2:2011 + 6.1.7.1 + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker. + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + ISO19005-2:2011 + 6.1.7.1 + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + ISO19005-2:2011 + 6.1.7.1 + + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + ISO19005-2:2011 + 6.1.7.2 + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isCorrectUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + ISO19005-2:2011 + 6.1.8 + + ISO32000-1:2008 + 7.3.5 + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + ISO19005-2 + 6.1.9 + + + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 + + LZW compression is used in the inline image + + + ISO19005-1 + 6.1.10 + + + + A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key + EF == null + + A file specification dictionary contains the EF key + + + ISO19005-1 + 6.1.11 + + PDF 1.4 Reference + 3.10.2 + + + + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 + + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + + + ISO19005-1 + 6.1.11 + + PDF 1.4 Reference + 3.6.3 + + + + + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Absolute real value must be less than or equal to 32767.0 + (realValue >= -32767.0) && (realValue <= 32767.0) + + Real value out of range + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum length of a string (in bytes) is 65535 + value.length() < 65536 + + Maximum length of a String (65535) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum length of a name (in bytes) is 127 + internalRepresentation.length() <= 127 + + Maximum length of a Name (127) exceeded + internalRepresentation.length() + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum capacity of an array (in elements) is 8191 + size <= 8191 + + Maximum capacity of an array (8191) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum capacity of a dictionary (in entries) is 4095 + size <= 4095 + + Maximum capacity of a dictionary (4095) exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum number of indirect objects in a PDF file is 8,388,607 + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum depth of graphics state nesting by q and Q operators is 28 + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum number of DeviceN components is 8 + nrComponents <= 8 + + Maximum number of DeviceN components is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + Maximum value of a CID (character identifier) is 65,535 + CID <= 65535 + + Maximum value of a CID (65,535) is exceeded + + + ISO19005-1 + 6.1.12 + + PDF Reference 1.4 + Table C.1 + + + + + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + Last ID is present in the Linearized PDF and does not match the first page ID + + + ISO 19005-1:2005/Cor.2:2011 + 6.1.3 + + + + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + subsectionHeaderSpaceSeparated == true + + Spacings of subsection headers in the cross reference table do not comply PDF/A specification + + + ISO19005-1:2005 + 6.1.4 + + + + A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operators + false + + A content stream contains an operator not defined in PDF Reference + + + ISO19005-1 + 6.2.10 + + + + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 + + The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information + + + ISO19005-1 + 6.2.2 + + PDF 1.4 Reference + 9.4.10 + + + + + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream + destOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + ISO19005-1 + 6.2.2 + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements + + + ISO19005-1 + 6.2.3 + + PDF 1.4 Reference + 4.5.4, ICCBased Color Spaces + + + + + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + ISO19005-1 + 6.2.3.3 + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile + + + ISO19005-1 + 6.2.3.2 + + PDF 1.4 Reference + 4.5.4, Table 4.16 + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + ISO19005-1 + 6.2.4 + + + + An XObject dictionary (Image or Form) shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + ISO19005-1 + 6.2.4 + + + ISO19005-1 + 6.2.5 + + + + + If an Image dictionary contains the Interpolate key, its value shall be false + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + ISO19005-1 + 6.2.4 + + + + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + + The form XObject dictionary contains a PS key or Subtype2 key with value PS + + + ISO19005-1 + 6.2.5 + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + ISO19005-1 + 6.2.6 + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + ISO19005-1 + 6.2.7 + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + ISO19005-1 + 6.2.8 + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + ISO19005-1 + 6.2.8 + + + + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + + A rendering intent with non-standard value is used + + + ISO19005-1 + 6.2.9 + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || BaseFont != null + + A BaseFont entry is missing or has invalid type + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + PDF 1.4 Reference + 5.6.5 - Table 5.17 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + ISO19005-1 + 6.3.2 + + PDF 1.4 Reference + 5.5.1 - Table 5.8 + + + PDF 1.4 Reference + 5.5.4 - Table 5.9 + + + + + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatible + areRegistryOrderingCompatible == true + + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + ISO19005-1 + 6.3.3.1 + + PDF 1.4 Reference + 5.6.2 + + + + + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + ISO19005-1 + 6.3.3.2 + + PDF 1.4 Reference + 5.6.3 - Table 5.13 + + + + + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + A CMap is different from "Identity-H" or "Identity-V" and is not embedded + + + ISO19005-1 + 6.3.3.3 + + PDF 1.4 Reference + 5.6.4 + + + + + 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 + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + ISO19005-1 + 6.3.3.3 + + + + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3 + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + ISO19005-1 + 6.3.4 + + PDF 1.4 Reference + 5.8 + + + + + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + ISO19005-1 + 6.3.5 + + + + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + BaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + + A Type1 font subset does not define CharSet entry in its Descriptor dictionary + + + ISO19005-1 + 6.3.5 + + PDF 1.4 Reference + 5.5.3 + + + + + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + BaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + ISO19005-1 + 6.3.5 + + PDF 1.4 Reference + 5.5.3 + + + + + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistent + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + ISO19005-1 + 6.3.6 + + + + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") + + A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + isSymbolic == false || nrCmaps == 1 + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + ISO19005-1:2005/Cor.2:2011 + 6.3.7 + + + + If an SMask key appears in an ExtGState dictionary, its value shall be None + SMask == null || SMask == "None" + + An ExtGState contains SMask key with a value other than None + + + ISO19005-1 + 6.4 + + + + An XObject dictionary shall not contain the SMask key + SMask_size == 0 + + An XObject contains an SMask key + + + ISO19005-1:2005/Cor.2:2011 + 6.4 + + + + A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionary + S != "Transparency" + + A transparency group is present in a form XObject or page dictionary + + + ISO19005-1:2005/Cor.2:2011 + 6.4 + + + + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible + BM == null || BM == "Normal" || BM == "Compatible" + + An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible + + + ISO19005-1 + 6.4 + + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 + + An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 + + + ISO19005-1 + 6.4 + + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 + + An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 + + + ISO19005-1 + 6.4 + + + + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" + + Unknown or not permitted annotation type + + + ISO19005-1 + 6.5.2 + + PDF 1.4 Reference + 8.4.5 + + + + + An annotation dictionary shall not contain the CA key with a value other than 1.0 + CA == null || CA == 1.0 + + An annotation dictionary contains the CA key with value other than 1.0 + + + ISO19005-1 + 6.5.3 + + + + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0 + F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 + + Annotation flags are either missing or have forbidden values + + + ISO19005-1 + 6.5.3 + + + + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + + Annotation's color or interior color is used without specifying RGB-based destination output profile + + + ISO19005-1 + 6.5.3 + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + subdictionary; otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + ISO19005-1/Cor.2:2011 + 6.5.3 + + + + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + ISO19005-1 + 6.6.1 + + PDF 1.4 Reference + 8.5.3 - Table 8.34 + + + + ISO19005-1:2005/Cor.2:2011 + 6.6.1 + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted action type + + + ISO19005-1 + 6.6.1 + + PDF 1.4 Reference + 8.5.3 - Named Actions - Table 8.45 + + + + + Interactive form fields shall not perform actions of any type + Subtype != "Widget" || A_size == 0 + + Interactive form field contains an action object ('A' key) + + + ISO19005-1 + 6.6.1 + + + + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + Subtype != "Widget" || AA_size == 0 + + A Widget annotation contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + A Field dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + A Field dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2, 6.9 + + + + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-1 + 6.6.2 + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + ispdfaidNSPresent + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + ISO 19005-1:2005 + 6.7.11 + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + part == 1 + + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + part + + + ISO 19005-1:2005 + 6.7.11 + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + conformance == "B" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. + conformance + + + ISO 19005-1:2005 + 6.7.11 + + + + The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. + corr == null + + The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. + + + ISO 19005-1:2005 + 6.7.11 + + + + The PDF/A Identification Schema has required prefix "pdfaid". + prefix == "pdfaid" + + A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". + prefix + + + ISO 19005-1:2005 + 6.7.11 + + + + The document catalog dictionary of a conforming file shall contain the Metadata key. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + ISO 19005-1:2005 + 6.7.2 + + + + Metadata object stream dictionaries shall not contain the Filter key. + Filter == null + + The metadata object stream dictionary contains the Filter key. + + + ISO 19005-1:2005 + 6.7.2 + + + + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + doesInfoMatchXMP + + Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.3 + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + ISO 19005-1:2005 + 6.7.5 + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + ISO 19005-1:2005 + 6.7.5 + + + + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + isDefinitionCorrect + + Wrong definition of an extention schema with namespace URI: %1 + uri + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. + isDefinedInThisPackage + + Missed definition of an extention schema with namespace URI: %1 + uri + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + The required PDF/A Extension Schema namespace prefix is pdfaExtension. + prefix == "pdfaExtension" + + A PDF/A Extension Schema namespace prefix is %1, but shall be "pdfaExtension". + prefix + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Field Schema namespace prefix is required to be "pdfaField". + isPDFAFieldPrefixCorrect + + A PDF/A Field Schema namespace prefix is not "pdfaField". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". + isPDFAPropertyPrefixCorrect + + A PDF/A Property Schema namespace prefix is not "pdfaProperty". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". + isPDFASchemaPrefixCorrect + + A PDF/A Schema Description Schema namespace prefix is not "pdfaSchema". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". + isPDFATypePrefixCorrect + + A PDF/A ValueType Schema namespace prefix is not "pdfaType". + + + ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 + 6.7.8 + + + + The metadata stream shall conform to XMP Specification. + isMetadataValid + + The metadata stream doesn't conform to XMP Specification. + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + unknownProperties == null + + The predefined schema with namespace URI %1 has unknown properties: %2. + uri + unknownProperties + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + All predefined schemas shall conform to XMP specification. + wrongValueTypeProperties == null + + The predefined schema with namespace URI %1 has properties of wrong type: %2. + uri + wrongValueTypeProperties + + + ISO 19005-1:2005 + 6.7.9 + + XMP Specification January 2004 + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + ISO19005-1 + 6.9 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + ISO19005-1 + 6.9 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + AA_size == 0 + + A Form field dictionary contains the AA entry + + + ISO19005-1 + 6.9 + + + + + + null + gOutputProfileRef == null ? destOutputProfileRef : gOutputProfileRef + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + From 63fd0fe76d29842b8f453031b8966e527b0ce789 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Tue, 27 Oct 2015 11:44:35 +0200 Subject: [PATCH 077/557] Small fix in rendering intent test --- .../6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml index ae8770c7..4c238753 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml @@ -10,7 +10,7 @@ Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value is used From e24df57503fde4b1da0b5e03a9a45ba1d0af8b9c Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Tue, 27 Oct 2015 11:52:25 +0200 Subject: [PATCH 078/557] Refresh global profiles --- PDF_A/PDFA-1A.html | 6 +- PDF_A/PDFA-1A.xml | 10 +- PDF_A/PDFA-1B.html | 6 +- PDF_A/PDFA-1B.xml | 10 +- PDF_A/PDFA-2B.html | 417 ++++++++++----- PDF_A/PDFA-2B.xml | 1199 +++++++++++++++++++++++++++++++++----------- 6 files changed, 1216 insertions(+), 432 deletions(-) diff --git a/PDF_A/PDFA-1A.html b/PDF_A/PDFA-1A.html index 17eb2fac..1d4ab972 100644 --- a/PDF_A/PDFA-1A.html +++ b/PDF_A/PDFA-1A.html @@ -35,7 +35,7 @@ 66-1-10-t02The LZWDecode filter shall not be permittedPDInlineImageF == null || F.indexOf("LZW") == -1 -76-1-11-t01A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF keyCosFileSpecificationEF == null +76-1-11-t01A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF keyCosFileSpecificationEF_size == 0 86-1-11-t02A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles keyCosDocumentEmbeddedFiles_size == 0 @@ -133,7 +133,7 @@ 366-2-2-t02If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect 376-2-3-t01All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && @@ -179,7 +179,7 @@ 506-2-9-t01Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or SaturationCosRenderingIntentvalue == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + RelativeColorimetric, AbsoluteColorimetric, Perceptual or SaturationCosRenderingIntentinternalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" 516-3-2-t01All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 53633830..6f38c231 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -3,7 +3,7 @@ PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium - 2015-10-27T10-25-19Z+02 + 2015-10-27T11-50-40Z+02 sha-1 hash code @@ -87,7 +87,7 @@ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF == null + EF_size == 0 A file specification dictionary contains the EF key @@ -478,7 +478,7 @@ If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -649,7 +649,7 @@ Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value is used @@ -1445,7 +1445,7 @@ null - gOutputProfileRef == null ? destOutputProfileRef : gOutputProfileRef + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect null diff --git a/PDF_A/PDFA-1B.html b/PDF_A/PDFA-1B.html index 060e3511..cb9279fc 100644 --- a/PDF_A/PDFA-1B.html +++ b/PDF_A/PDFA-1B.html @@ -23,7 +23,7 @@ 26-1-10-t02The LZWDecode filter shall not be permittedPDInlineImageF == null || F.indexOf("LZW") == -1 -36-1-11-t01A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF keyCosFileSpecificationEF == null +36-1-11-t01A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF keyCosFileSpecificationEF_size == 0 46-1-11-t02A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles keyCosDocumentEmbeddedFiles_size == 0 @@ -121,7 +121,7 @@ 326-2-2-t02If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect 336-2-3-t01All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && @@ -167,7 +167,7 @@ 466-2-9-t01Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or SaturationCosRenderingIntentvalue == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + RelativeColorimetric, AbsoluteColorimetric, Perceptual or SaturationCosRenderingIntentinternalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" 476-3-2-t01All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 1a46a660..96ac4c83 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -3,7 +3,7 @@ PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium - 2015-10-27T10-19-19Z+02 + 2015-10-27T11-47-12Z+02 sha-1 hash code @@ -30,7 +30,7 @@ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF == null + EF_size == 0 A file specification dictionary contains the EF key @@ -421,7 +421,7 @@ If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -592,7 +592,7 @@ Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value is used @@ -1400,7 +1400,7 @@ null - gOutputProfileRef == null ? destOutputProfileRef : gOutputProfileRef + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect null diff --git a/PDF_A/PDFA-2B.html b/PDF_A/PDFA-2B.html index 3e742512..2e30ee50 100644 --- a/PDF_A/PDFA-2B.html +++ b/PDF_A/PDFA-2B.html @@ -98,308 +98,497 @@ keywords shall each be followed by an EOL marker.CosIndirectspacingCompliesPDFA -256-1-10-t02The LZWDecode filter shall not be permittedPDInlineImageF == null || F.indexOf("LZW") == -1 +256-2-10-t01Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary.PDExtGStateBM == null || BM == "Normal" || BM = "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" -266-1-11-t01A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF keyCosFileSpecificationEF == null +266-2-11-2-t01All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionaryPDFontType == "Font" -276-1-11-t02A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles keyCosDocumentEmbeddedFiles_size == 0 +276-2-11-2-t02All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fontsPDFontSubtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" -286-1-12-t01Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648CosInteger(intValue <= 2147483647) && (intValue >= -2147483648) +286-2-11-2-t03All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont != null -296-1-12-t02Absolute real value must be less than or equal to 32767.0CosReal(realValue >= -32767.0) && (realValue <= 32767.0) +296-2-11-2-t04All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null -306-1-12-t03Maximum length of a string (in bytes) is 65535CosStringvalue.length() < 65536 +306-2-11-2-t05All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null -316-1-12-t04Maximum length of a name (in bytes) is 127CosNameinternalRepresentation.length() <= 127 +316-2-11-2-t06All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) -326-1-12-t05Maximum capacity of an array (in elements) is 8191CosArraysize <= 8191 +326-2-11-3-t01For 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap.PDType0FontcmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) -336-1-12-t06Maximum capacity of a dictionary (in entries) is 4095CosDictsize <= 4095 +336-2-11-3-t02ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117.PDCIDFontSubtype != "CIDFontType2" || CIDToGIDMap != null -346-1-12-t07Maximum number of indirect objects in a PDF file is 8,388,607CosDocumentnrIndirects <= 8388607 +346-2-11-3-t03All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5.PDCMapCMapName == "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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1 -356-1-12-t08Maximum depth of graphics state nesting by q and Q operators is 28Op_q_gsavenestingLevel <= 28 +356-2-11-3-t04For 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.CMapFileWMode == dictWMode -366-1-12-t09Maximum number of DeviceN components is 8PDDeviceNnrComponents <= 8 +366-2-11-4-t01The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9.PDFontSubtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 -376-1-12-t10Maximum value of a CID (character identifier) is 65,535CIDGlyphCID <= 65535 +376-2-11-4-t02Embedded fonts shall define all glyphs referenced for rendering within the conforming file.GlyphisGlyphPresent == true -386-1-3-t04In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identicalCosDocument(isLinearized != true)|| lastID == null || (firstPageID == lastID) +386-2-11-4-t03If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not.PDType1FontCharSet == null || charSetListsAllGlyphs == true -396-1-4-t01In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)CosXRefsubsectionHeaderSpaceSeparated == true +396-2-11-4-t04If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not.PDCIDFontCIDSet_size == 0 || cidSetListsAllGlyphs == true -406-2-10-t01A content stream shall not contain any operators not defined in PDF Reference - even if such operators are bracketed by the BX/EX compatibility operatorsOp_Undefinedfalse +406-2-11-5-t01For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent.GlyphisWidthConsistent == true -416-2-2-t01A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents - array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile keyICCOutputProfile(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 +416-2-11-6-t01For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out.TrueTypeFontProgramisSymbolic == true || nrCmaps >= 1 -426-2-2-t02If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef +426-2-11-6-t02No 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.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) -436-2-3-t01All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 +436-2-11-6-t03Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null -446-2-3-t02DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour spacePDDeviceRGBgOutputCS != null && gOutputCS == "RGB " +446-2-11-6-t04Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding.TrueTypeFontProgramisSymbolic == false || nrCmaps == 1 || cmap30Present == true -456-2-3-t03DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour spacePDDeviceCMYKgOutputCS != null && gOutputCS == "CMYK" +456-2-11-8-t01A PDF/A-2 compliant document 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.Glyphname != ".notdef" -466-2-3-t04If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2PDDeviceGraygOutputCS != null +466-2-2-t01Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + by the BX/EX compatibility operators.Op_Undefinedfalse -476-2-3-t05All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4ICCProfileN != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) +476-2-3-t01The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK".ICCOutputProfile(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 -486-2-4-t01An Image dictionary shall not contain the Alternates keyPDXImageAlternates_size == 0 +486-2-3-t02If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream.PDOutputIntentdestOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect -496-2-4-t02An XObject dictionary (Image or Form) shall not contain the OPI keyPDXObjectOPI_size == 0 +496-2-3-t03In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent.PDOutputIntentDestOutputProfileRef_size == 0 -506-2-4-t03If an Image dictionary contains the Interpolate key, its value shall be falsePDXImageInterpolate == false +506-2-4-t01The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1.ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 -516-2-5-t01A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS keyPDXForm(Subtype2 == null || Subtype2 != "PS") && PS_size == 0 +516-2-4-t02DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile.PDDeviceRGBgOutputCS != null && gOutputCS == "RGB " -526-2-6-t01A conforming file shall not contain any reference XObjectsPDXFormRef_size == 0 +526-2-4-t03DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile.PDDeviceCMYKgOutputCS != null && gOutputCS == "CMYK" -536-2-7-t01A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS" +536-2-4-t04DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + or if a PDF/A OutputIntent is present.PDDeviceGraygOutputCS != null -546-2-8-t01An ExtGState dictionary shall not contain the TR keyPDExtGStateTR == null +546-2-4-t05For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present.PDDeviceNareColorantsPresent == true -556-2-8-t02An ExtGState dictionary shall not contain the TR2 key with a value other than DefaultPDExtGStateTR2 == null || TR2 == "Default" +556-2-4-t06All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored.PDSeparationareTintAndAlternateConsistent == true -566-2-9-t01Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or SaturationCosRenderingIntentvalue == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" +566-2-5-t01An ExtGState dictionary shall not contain the TR keyPDExtGStateTR == null -576-3-2-t01All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionaryPDFontType == "Font" +576-2-5-t02An ExtGState dictionary shall not contain the TR2 key with a value other than DefaultPDExtGStateTR2 == null || TR2 == "Default" -586-3-2-t02All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fontsPDFontSubtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" +586-2-5-t03An ExtGState dictionary shall not contain the HTP keyPDExtGStateHTP_size == 0 -596-3-2-t03All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont != null +596-2-5-t04All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key.PDHalftoneHalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) -606-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null +606-2-5-t05Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key.PDHalftoneHalftoneName == null -616-3-2-t05All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null +616-2-6-t01Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation.CosRenderingIntentvalue == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" -626-3-2-t06All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) +626-2-8-t01An Image dictionary shall not contain the Alternates keyPDXImageAlternates_size == 0 + + +636-2-8-t02An Image dictionary shall not contain the OPI keyPDXImageOPI_size == 0 + + +646-2-8-t03If an Image dictionary contains the Interpolate key, its value shall be false. + For an inline image, the I key shall have a value of false.PDXImageInterpolate == false + + +656-2-9-t01A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key.PDXForm(Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + + +666-2-9-t02A conforming file shall not contain any reference XObjectsPDXFormRef_size == 0 + + +676-2-9-t03A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS" + + +686-3-1-t01Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted.PDAnnotSubtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" + + +696-3-2-t01Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key.PDAnnotSubtype == "Popup" || F != null + + +706-3-2-t02If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0.PDAnnotF == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) + + +716-3-2-t03Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1.PDAnnotSubtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) + + +726-3-3-t01Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link.PDAnnot(width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + +736-3-3-t02For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream.PDAnnotAP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + +746-4-1-t01A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys.PDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) + + +756-4-1-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys.PDFormFieldAA_size == 0 + + +766-4-1-t03The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false.PDAcroFormNeedAppearances == null || NeedAppearances == false + + +776-4-2-t01The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key.PDAcroFormXFA_size == 0 + + +786-4-2-t02A document's Catalog shall not contain the NeedsRendering key.CosDocumentNeedsRendering == false + + +796-5-1-t01The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted.PDActionS == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + +806-5-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted.PDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + +816-5-2-t01The document's Catalog shall not include an AA entry for an additional-actions dictionary.PDDocumentAA_size == 0 + + +826-5-2-t02The Page dictionary shall not include an AA entry for an additional-actions dictionary.PDPageAA_size == 0 -636-3-3-t01For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatiblePDType0FontareRegistryOrderingCompatible == true +836-6-4-t02The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + compliance with this part of ISO 19005 shall use a value of 2.PDFAIdSchemapart == 2 -646-3-3-t02For all Type 2 CIDFonts, 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 PDF Reference Table 5.13PDCIDFontSubtype != "CIDFontType2" || CIDToGIDMap != null +846-6-4-t03Level B conforming file shall specify the value of pdfaid:conformance as B.PDFAIdSchemaconformance == "B" -656-3-3-t03All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4PDCMapCMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 +856-8-t01A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is + compliant with either ISO 19005-1 or this part of ISO 19005.EmbeddedFileisValidPDFA12 == true -666-3-3-t04For 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 streamCMapFileWMode == dictWMode +866-8-t02The file specification dictionary for an embedded file shall contain the F and UF keysCosFileSpecificationEF_size == 0 || (F != null && UF != null) -676-3-4-t01The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, +876-1-10-t02The LZWDecode filter shall not be permittedPDInlineImageF == null || F.indexOf("LZW") == -1 + + +886-1-11-t01A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF keyCosFileSpecificationEF_size == 0 + + +896-1-11-t02A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles keyCosDocumentEmbeddedFiles_size == 0 + + +906-1-12-t01Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648CosInteger(intValue <= 2147483647) && (intValue >= -2147483648) + + +916-1-12-t02Absolute real value must be less than or equal to 32767.0CosReal(realValue >= -32767.0) && (realValue <= 32767.0) + + +926-1-12-t03Maximum length of a string (in bytes) is 65535CosStringvalue.length() < 65536 + + +936-1-12-t04Maximum length of a name (in bytes) is 127CosNameinternalRepresentation.length() <= 127 + + +946-1-12-t05Maximum capacity of an array (in elements) is 8191CosArraysize <= 8191 + + +956-1-12-t06Maximum capacity of a dictionary (in entries) is 4095CosDictsize <= 4095 + + +966-1-12-t07Maximum number of indirect objects in a PDF file is 8,388,607CosDocumentnrIndirects <= 8388607 + + +976-1-12-t08Maximum depth of graphics state nesting by q and Q operators is 28Op_q_gsavenestingLevel <= 28 + + +986-1-12-t09Maximum number of DeviceN components is 8PDDeviceNnrComponents <= 8 + + +996-1-12-t10Maximum value of a CID (character identifier) is 65,535CIDGlyphCID <= 65535 + + +1006-1-3-t04In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identicalCosDocument(isLinearized != true)|| lastID == null || (firstPageID == lastID) + + +1016-1-4-t01In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)CosXRefsubsectionHeaderSpaceSeparated == true + + +1026-2-2-t02If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + +1036-2-3-t04If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2PDDeviceGraygOutputCS != null + + +1046-2-3-t05All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4ICCProfileN != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + +1056-2-7-t01A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS" + + +1066-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null + + +1076-3-2-t05All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null + + +1086-3-2-t06All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + +1096-3-3-t03All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4PDCMapCMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + +1106-3-3-t04For 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 streamCMapFileWMode == dictWMode + + +1116-3-4-t01The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3PDFontSubtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 -686-3-5-t01Embedded font programs shall define all font glyphs referenced for rendering with a conforming fileGlyphisGlyphPresent == true +1126-3-5-t01Embedded font programs shall define all font glyphs referenced for rendering with a conforming fileGlyphisGlyphPresent == true -696-3-5-t02For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string +1136-3-5-t02For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontBaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null -706-3-5-t03For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a +1146-3-5-t03For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontBaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 -716-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the +1156-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the font dictionary and in the embedded font program shall be consistentGlyphisWidthConsistent == true -726-3-7-t01All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary +1166-3-7-t01All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") -736-3-7-t02 All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null +1176-3-7-t02 All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null -746-3-7-t03Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encodingTrueTypeFontProgramisSymbolic == false || nrCmaps == 1 +1186-3-7-t03Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encodingTrueTypeFontProgramisSymbolic == false || nrCmaps == 1 -756-4-t01If an SMask key appears in an ExtGState dictionary, its value shall be NonePDExtGStateSMask == null || SMask == "None" +1196-4-t01If an SMask key appears in an ExtGState dictionary, its value shall be NonePDExtGStateSMask == null || SMask == "None" -766-4-t02An XObject dictionary shall not contain the SMask keyPDXObjectSMask_size == 0 +1206-4-t02An XObject dictionary shall not contain the SMask keyPDXObjectSMask_size == 0 -776-4-t03A Group object with an S key with a value of Transparency shall not be included in a form XObject. +1216-4-t03A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionaryPDGroupS != "Transparency" -786-4-t04The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or CompatiblePDExtGStateBM == null || BM == "Normal" || BM == "Compatible" - - -796-4-t05The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateCA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 +1226-4-t04The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or CompatiblePDExtGStateBM == null || BM == "Normal" || BM == "Compatible" -806-4-t06The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 +1236-4-t05The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateCA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 -816-5-2-t01Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, - Sound and Movie types shall not be permittedPDAnnotSubtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" +1246-4-t06The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 -826-5-3-t01An annotation dictionary shall not contain the CA key with a value other than 1.0PDAnnotCA == null || CA == 1.0 +1256-5-3-t01An annotation dictionary shall not contain the CA key with a value other than 1.0PDAnnotCA == null || CA == 1.0 -836-5-3-t02An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, +1266-5-3-t02An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, Invisible and NoView flag bits shall be set to 0PDAnnotF != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 -846-5-3-t03An annotation dictionary shall not contain the C array or the IC array unless the colour space of the +1276-5-3-t03An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGBPDAnnot(C_size == 0 && IC_size == 0) || gOutputCS == "RGB " -856-5-3-t04For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. +1286-5-3-t04For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream.PDAnnotAP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) -866-6-1-t01The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. +1296-6-1-t01The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)PDActionS == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" -876-6-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permittedPDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" +1306-6-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permittedPDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" -886-6-1-t03Interactive form fields shall not perform actions of any typePDAnnotSubtype != "Widget" || A_size == 0 +1316-6-1-t03Interactive form fields shall not perform actions of any typePDAnnotSubtype != "Widget" || A_size == 0 -896-6-2-t01A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionaryPDAnnotSubtype != "Widget" || AA_size == 0 +1326-6-2-t01A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionaryPDAnnotSubtype != "Widget" || AA_size == 0 -906-6-2-t02A Field dictionary shall not include an AA entry for an additional-actions dictionaryPDFormFieldAA_size == 0 +1336-6-2-t02A Field dictionary shall not include an AA entry for an additional-actions dictionaryPDFormFieldAA_size == 0 -916-6-2-t03The document catalog dictionary shall not include an AA entry for an additional-actions dictionaryPDDocumentAA_size == 0 +1346-6-2-t03The document catalog dictionary shall not include an AA entry for an additional-actions dictionaryPDDocumentAA_size == 0 -926-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent +1356-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent -936-7-11-t02The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 +1366-7-11-t02The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 -946-7-11-t03The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B" +1376-7-11-t03The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B" -956-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null +1386-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null -966-7-11-t05The PDF/A Identification Schema has required prefix "pdfaid".PDFAIdSchemaprefix == "pdfaid" +1396-7-11-t05The PDF/A Identification Schema has required prefix "pdfaid".PDFAIdSchemaprefix == "pdfaid" -976-7-2-t01The document catalog dictionary of a conforming file shall contain the Metadata key.PDDocumentmetadata_size == 1 +1406-7-2-t01The document catalog dictionary of a conforming file shall contain the Metadata key.PDDocumentmetadata_size == 1 -986-7-2-t02Metadata object stream dictionaries shall not contain the Filter key.PDMetadataFilter == null +1416-7-2-t02Metadata object stream dictionaries shall not contain the Filter key.PDMetadataFilter == null -996-7-3-t01If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values.CosDocumentdoesInfoMatchXMP +1426-7-3-t01If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values.CosDocumentdoesInfoMatchXMP -1006-7-5-t01The bytes attribute shall not be used in the header of an XMP packet.XMPPackagebytes == null +1436-7-5-t01The bytes attribute shall not be used in the header of an XMP packet.XMPPackagebytes == null -1016-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null +1446-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null -1026-7-8-t01All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinitionCorrect +1456-7-8-t01All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinitionCorrect -1036-7-8-t02All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinedInThisPackage +1466-7-8-t02All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinedInThisPackage -1046-7-8-t03The required PDF/A Extension Schema namespace prefix is pdfaExtension.PDFAExtensionSchemaprefix == "pdfaExtension" +1476-7-8-t03The required PDF/A Extension Schema namespace prefix is pdfaExtension.PDFAExtensionSchemaprefix == "pdfaExtension" -1056-7-8-t04A PDF/A Field Schema namespace prefix is required to be "pdfaField".PDFAExtensionSchemaisPDFAFieldPrefixCorrect +1486-7-8-t04A PDF/A Field Schema namespace prefix is required to be "pdfaField".PDFAExtensionSchemaisPDFAFieldPrefixCorrect -1066-7-8-t05A PDF/A Property Schema namespace prefix is required to be "pdfaProperty".PDFAExtensionSchemaisPDFAPropertyPrefixCorrect +1496-7-8-t05A PDF/A Property Schema namespace prefix is required to be "pdfaProperty".PDFAExtensionSchemaisPDFAPropertyPrefixCorrect -1076-7-8-t06A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema".PDFAExtensionSchemaisPDFASchemaPrefixCorrect +1506-7-8-t06A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema".PDFAExtensionSchemaisPDFASchemaPrefixCorrect -1086-7-8-t07A PDF/A ValueType Schema namespace prefix is required to be "pdfaType".PDFAExtensionSchemaisPDFATypePrefixCorrect +1516-7-8-t07A PDF/A ValueType Schema namespace prefix is required to be "pdfaType".PDFAExtensionSchemaisPDFATypePrefixCorrect -1096-7-9-t01The metadata stream shall conform to XMP Specification.XMPPackageisMetadataValid +1526-7-9-t01The metadata stream shall conform to XMP Specification.XMPPackageisMetadataValid -1106-7-9-t02All predefined schemas shall conform to XMP specification.XMPPredefinedSchemaunknownProperties == null +1536-7-9-t02All predefined schemas shall conform to XMP specification.XMPPredefinedSchemaunknownProperties == null -1116-7-9-t03All predefined schemas shall conform to XMP specification.XMPPredefinedSchemawrongValueTypeProperties == null +1546-7-9-t03All predefined schemas shall conform to XMP specification.XMPPredefinedSchemawrongValueTypeProperties == null -1126-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false +1556-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false -1136-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) +1566-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) -1146-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 +1576-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 611cd4ed..ab8423c2 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -3,7 +3,7 @@ PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium - 2015-10-27T10-31-20Z+02 + 2015-10-27T11-50-55Z+02 sha-1 hash code @@ -291,6 +291,894 @@ 6.1.9 + + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + BM == null || BM == "Normal" || BM = "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" + + The document uses the blend mode not defined in ISO 32000-1:2008 + + + ISO19005-2:2011 + 6.2.10 + + ISO32000-1:2008 + 11.3.5, Tables 136-137 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + ISO19005-2:2011 + 6.2.11.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.6.5, Table 112 + + + ISO32000-1:2008 + 9.7.4.1, Table 117 + + + ISO32000-1:2008 + 9.7.6.1, Table 121 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + ISO19005-2:2011 + 6.2.11.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.6.2.3 + + + ISO32000-1:2008 + 9.6.3 + + + ISO32000-1:2008 + 9.6.5, Table 112 + + + ISO32000-1:2008 + 9.7.4.1, Table 117 + + + ISO32000-1:2008 + 9.7.6.1, Table 121 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || BaseFont != null + + A BaseFont entry is missing or has invalid type + + + ISO19005-2:2011 + 6.3.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.7.4.1, Table 117 + + + ISO32000-1:2008 + 9.7.6.1, Table 121 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + ISO19005-2:2011 + 6.2.11.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.6.5, Table 112 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + ISO19005-2:2011 + 6.2.11.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.6.5, Table 112 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + ISO19005-2:2011 + 6.2.11.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.6.5, Table 112 + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + ISO19005-2:2011 + 6.2.11.3.1 + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + ISO19005-2:2011 + 6.2.11.3.2 + + ISO32000-1:2008 + 9.7.4, Table 117 + + + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + ISO19005-1 + 6.2.11.3.3 + + ISO32000-1:2008 + 9.7.5.2, Table 118 + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + ISO19005-2:2011 + 6.2.11.3.3 + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + ISO19005-2:2011 + 6.2.11.4.1 + + ISO32000-1:2008 + 9.9 + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + ISO19005-2:2011 + 6.2.11.4.1 + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + ISO19005-2:2011 + 6.2.11.4.2 + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + ISO19005-2:2011 + 6.2.11.4.2 + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + ISO19005-2:2011 + 6.2.11.5 + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps >= 1 + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + ISO19005-2:2011 + 6.2.11.6 + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + ISO19005-2:2011 + 6.2.11.6 + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + ISO32000-1:2008 + 6.2.11.6 + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + ISO32000-1:2008 + 6.2.11.6 + + + + A PDF/A-2 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + ISO19005-2:2011 + 6.2.11.8 + + + + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + by the BX/EX compatibility operators. + false + + A content stream contains an operator not defined in ISO 32000-1 + + + ISO19005-2:2011 + 6.2.2 + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + ISO19005-2:2011 + 6.2.3 + + ISO32000-1:2008 + 14.11.5 + + + + + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + ISO19005-2:2011 + 6.2.3 + + + + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + DestOutputProfileRef_size == 0 + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + ISO19005-2:2011 + 6.2.3 + + ISO15930-7:2010 + Annex A + + + + + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements + + + ISO19005-2:2011 + 6.2.4.2 + + ISO 32000-1:2008 + 8.6.5.5 + + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + ISO19005-2:2011 + 6.2.4.3 + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + ISO19005-2:2011 + 6.2.4.3 + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + or if a PDF/A OutputIntent is present. + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + ISO19005-2:2011 + 6.2.4.3 + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + ISO19005-2:2011 + 6.2.4.4 + + ISO32000-1:2008 + 8.6.6.5, Table 71 + + + + + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + ISO19005-2:2011 + 6.2.4.4 + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + ISO19005-2:2011 + 6.2.5 + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + ISO19005-2:2011 + 6.2.5 + + + + An ExtGState dictionary shall not contain the HTP key + HTP_size == 0 + + An ExtGState dictionary contains the HTP key + + + ISO19005-2:2011 + 6.2.5 + + + + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + ISO19005-2:2011 + 6.2.5 + + + + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + ISO19005-2:2011 + 6.2.5 + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. + value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + + A rendering intent with non-standard value is used + + + ISO19005-2:2011 + 6.2.6 + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + ISO19005-2:2011 + 6.2.8.1 + + + + An Image dictionary shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + ISO19005-2:2011 + 6.2.8.1 + + + + If an Image dictionary contains the Interpolate key, its value shall be false. + For an inline image, the I key shall have a value of false. + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + ISO19005-2:2011 + 6.2.8.1 + + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + + The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key + + + ISO19005-2:2011 + 6.2.9.1 + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + ISO19005-2:2011 + 6.2.9.2 + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + ISO19005-2:2011 + 6.2.9.3 + + + + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" + + Unknown or not permitted annotation type + + + ISO19005-2:2011 + 6.3.1 + + PDF 1.4 Reference + 12.5.6.1, Table 169 + + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + ISO19005-2 + 6.3.2 + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + ISO19005-2 + 6.3.2 + + + + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. + Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) + + Text annotation has one of the flags NoZoom or NoRotate set to 0 + + + ISO19005-2 + 6.3.2 + + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + An annotation does not contain an appearance dictionary + + + ISO19005-2:2011 + 6.3.3 + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + ISO19005-2:2011 + 6.3.3 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + ISO19005-2:2011 + 6.4.1 + + + ISO19005-2:2011 + 6.5.2 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + AA_size == 0 + + A Form field dictionary contains the AA entry + + + ISO19005-2:2011 + 6.4.1 + + + ISO19005-2:2011 + 6.5.2 + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + ISO19005-2:2011 + 6.4.1 + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + XFA_size == 0 + + The interactive form dictionary contains the XFA key + + + ISO19005-2:2011 + 6.4.2 + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + ISO19005-2:2011 + 6.4.2 + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + ISO19005-2 + 6.5.1 + + ISO32000-1:2008 + 12.6.4.1, Table 198 + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + ISO19005-2:2011 + 6.5.1 + + ISO32000-1:2008 + 12.6.4.11, Table 211 + + + + + The document's Catalog shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-2:2011 + 6.5.2 + + + + The Page dictionary shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The Page dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-2:2011 + 6.5.2 + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + compliance with this part of ISO 19005 shall use a value of 2. + part == 2 + + The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. + part + + + ISO 19005-2:2011 + 6.6.4 + + + + Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" + + The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. + conformance + + + ISO 19005-2:2011 + 6.6.4 + + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is + compliant with either ISO 19005-1 or this part of ISO 19005. + isValidPDFA12 == true + + An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 + + + ISO19005-2:2011 + 6.8 + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + EF_size == 0 || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + ISO19005-2:2011 + 6.8 + + The LZWDecode filter shall not be permitted F == null || F.indexOf("LZW") == -1 @@ -304,7 +1192,7 @@ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF == null + EF_size == 0 A file specification dictionary contains the EF key @@ -506,38 +1394,10 @@ 6.1.4 - - A content stream shall not contain any operators not defined in PDF Reference - even if such operators are bracketed by the BX/EX compatibility operators - false - - A content stream contains an operator not defined in PDF Reference - - - ISO19005-1 - 6.2.10 - - - - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents - array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 - - The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information - - - ISO19005-1 - 6.2.2 - - PDF 1.4 Reference - 9.4.10 - - - If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileRef == null || gOutputProfileRef == null || destOutputProfileRef == gOutputProfileRef + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -546,44 +1406,6 @@ 6.2.2 - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 - - The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements - - - ISO19005-1 - 6.2.3 - - PDF 1.4 Reference - 4.5.4, ICCBased Color Spaces - - - - - DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space - gOutputCS != null && gOutputCS == "RGB " - - DeviceRGB colour space is used without RGB output intent profile - - - ISO19005-1 - 6.2.3.3 - - - - DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space - gOutputCS != null && gOutputCS == "CMYK" - - DeviceCMYK colour space is used without CMYK output intent profile - - - ISO19005-1 - 6.2.3.3 - - If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 gOutputCS != null @@ -612,66 +1434,6 @@ - - An Image dictionary shall not contain the Alternates key - Alternates_size == 0 - - Alternates key is present in the Image dictionary( - - - ISO19005-1 - 6.2.4 - - - - An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 - - OPI key is present in the XObject dictionary( - - - ISO19005-1 - 6.2.4 - - - ISO19005-1 - 6.2.5 - - - - - If an Image dictionary contains the Interpolate key, its value shall be false - Interpolate == false - - The value of the Interpolate key in the Image dictionary is true - - - ISO19005-1 - 6.2.4 - - - - A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 - - The form XObject dictionary contains a PS key or Subtype2 key with value PS - - - ISO19005-1 - 6.2.5 - - - - A conforming file shall not contain any reference XObjects - Ref_size == 0 - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - ISO19005-1 - 6.2.6 - - A conforming file shall not contain any PostScript XObjects Subtype != "PS" @@ -683,126 +1445,6 @@ 6.2.7 - - An ExtGState dictionary shall not contain the TR key - TR == null - - An ExtGState dictionary contains the TR key - - - ISO19005-1 - 6.2.8 - - - - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" - - An ExtGState dictionary contains the TR2 key with a value other than Default - - - ISO19005-1 - 6.2.8 - - - - Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" - - A rendering intent with non-standard value is used - - - ISO19005-1 - 6.2.9 - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" - - A Font dictionary has missing or invalid Type entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - - A Font dictionary has missing or invalid Subtype entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || BaseFont != null - - A BaseFont entry is missing or has invalid type - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array @@ -863,38 +1505,6 @@ - - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatible - areRegistryOrderingCompatible == true - - Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - ISO19005-1 - 6.3.3.1 - - PDF 1.4 Reference - 5.6.2 - - - - - For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 - Subtype != "CIDFontType2" || CIDToGIDMap != null - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - ISO19005-1 - 6.3.3.2 - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 @@ -1094,25 +1704,6 @@ 6.4 - - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, - Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" - - Unknown or not permitted annotation type - - - ISO19005-1 - 6.5.2 - - PDF 1.4 Reference - 8.4.5 - - - An annotation dictionary shall not contain the CA key with a value other than 1.0 CA == null || CA == 1.0 @@ -1514,13 +2105,17 @@ - + null - gOutputProfileRef == null ? destOutputProfileRef : gOutputProfileRef + gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect null S == "GTS_PDFA1" ? colorSpace : gOutputCS + + null + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect +
From a4c57ec755f8998f6498dcf6c046b3bf8b1b4c69 Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Tue, 27 Oct 2015 14:07:18 +0300 Subject: [PATCH 079/557] Fixing profiles to according xmp cleared model --- .../6.7.11/verapdf-profile-6-7-11-t02.xml | 2 +- .../6.7.11/verapdf-profile-6-7-11-t03.xml | 2 +- .../6.7.8/verapdf-profile-6-7-8-t01.xml | 22 ---------------- .../6.7.8/verapdf-profile-6-7-8-t02.xml | 22 ---------------- .../6.7.8/verapdf-profile-6-7-8-t03.xml | 22 ---------------- .../6.7.8/verapdf-profile-6-7-8-t04.xml | 21 --------------- .../6.7.8/verapdf-profile-6-7-8-t05.xml | 21 --------------- .../6.7.8/verapdf-profile-6-7-8-t06.xml | 21 --------------- .../6.7.8/verapdf-profile-6-7-8-t07.xml | 21 --------------- .../6.7.9/verapdf-profile-6-7-9-t01.xml | 4 +-- .../6.7.9/verapdf-profile-6-7-9-t02.xml | 26 ------------------- .../6.7.9/verapdf-profile-6-7-9-t03.xml | 26 ------------------- 12 files changed, 4 insertions(+), 206 deletions(-) delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml index d0ffde07..ac0fb449 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml @@ -7,7 +7,7 @@ sha-1 hash code - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version of a file shall be specified using the PDF/A Identification extension schema. part == 1 The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml index 1190fc53..6a8c8b61 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml @@ -7,7 +7,7 @@ sha-1 hash code - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. conformance == "B" The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml deleted file mode 100644 index 5b9b9103..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - Description - All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. - veraPDF Consortium - 2015-06-29T09:04:30Z - sha-1 hash code - - - All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. - isDefinitionCorrect - - Wrong definition of an extention schema with namespace URI: %1 - uri - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml deleted file mode 100644 index 77d84ad8..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - Definition - All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. - veraPDF Consortium - 2015-06-29T09:18:21Z - sha-1 hash code - - - All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. - isDefinedInThisPackage - - Missed definition of an extention schema with namespace URI: %1 - uri - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml deleted file mode 100644 index 6948e9bd..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - PDF/A Extension Schema - The required PDF/A Extension Schema namespace prefix is pdfaExtension. - veraPDF Consortium - 2015-06-29T09:25:21Z - sha-1 hash code - - - The required PDF/A Extension Schema namespace prefix is pdfaExtension. - prefix == "pdfaExtension" - - A PDF/A Extension Schema namespace prefix is %1, but shall be "pdfaExtension". - prefix - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml deleted file mode 100644 index 167c9043..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - PDF/A Field Schema - A PDF/A Field Schema namespace prefix is required to be "pdfaField". - veraPDF Consortium - 2015-06-29T09:27:41Z - sha-1 hash code - - - A PDF/A Field Schema namespace prefix is required to be "pdfaField". - isPDFAFieldPrefixCorrect - - A PDF/A Field Schema namespace prefix is not "pdfaField". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml deleted file mode 100644 index 840faed2..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - PDF/A Property Schema - A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". - veraPDF Consortium - 2015-06-29T09:36:41Z - sha-1 hash code - - - A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". - isPDFAPropertyPrefixCorrect - - A PDF/A Property Schema namespace prefix is not "pdfaProperty". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml deleted file mode 100644 index b1a3d5e3..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - PDF/A Schema Description Schema - A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". - veraPDF Consortium - 2015-06-29T09:38:41Z - sha-1 hash code - - - A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". - isPDFASchemaPrefixCorrect - - A PDF/A Schema Description Schema namespace prefix is not "pdfaSchema". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml deleted file mode 100644 index 885102d5..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t07.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.8 XMP Extension Schemas - PDF/A ValueType Schema - A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". - veraPDF Consortium - 2015-06-29T09:39:41Z - sha-1 hash code - - - A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". - isPDFATypePrefixCorrect - - A PDF/A ValueType Schema namespace prefix is not "pdfaType". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml index 2ff23150..0e519c4d 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml @@ -7,10 +7,10 @@ sha-1 hash code - The metadata stream shall conform to XMP Specification. + The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. isMetadataValid - The metadata stream doesn't conform to XMP Specification. + The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. ISO 19005-1:2005 diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml deleted file mode 100644 index aef854cc..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-29T09:44:55Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - unknownProperties == null - - The predefined schema with namespace URI %1 has unknown properties: %2. - uri - unknownProperties - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml deleted file mode 100644 index 2cc7c286..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t03.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Schemas - Predefined Schemas Conforms to XMP Specification. - All predefined schemas shall conform to XMP specification. - veraPDF Consortium - 2015-06-29T09:52:55Z - sha-1 hash code - - - All predefined schemas shall conform to XMP specification. - wrongValueTypeProperties == null - - The predefined schema with namespace URI %1 has properties of wrong type: %2. - uri - wrongValueTypeProperties - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - From fe57cbdfb624124ac737fe5b555774faa85da980 Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Tue, 27 Oct 2015 15:07:53 +0300 Subject: [PATCH 080/557] added error message argument to the invalid profile. Fixed description in pdfa/1a profile --- PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml | 2 +- PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml b/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml index 701d7125..b640fec1 100644 --- a/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml @@ -7,7 +7,7 @@ sha-1 hash code - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1A conforming file. diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml index 0e519c4d..a09c264b 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml @@ -10,7 +10,8 @@ The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. isMetadataValid - The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. + The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. ErrorMessage: %1 + errorMessage ISO 19005-1:2005 From 3546bc27622ce93432ee5fcba33f1ee905403c3b Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Tue, 27 Oct 2015 15:26:35 +0300 Subject: [PATCH 081/557] Changed errorMessage in 6-7-9-t01 profile --- PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml index a09c264b..c1daa52d 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml @@ -10,7 +10,7 @@ The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. isMetadataValid - The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. ErrorMessage: %1 + %1 errorMessage From b4db44038b428b483801a104999556b6d25df657 Mon Sep 17 00:00:00 2001 From: Timur Kamalov Date: Tue, 27 Oct 2015 15:28:32 +0300 Subject: [PATCH 082/557] Fix for BaseFont check. --- .../6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml index 94827f38..7f3dbb0f 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml @@ -10,7 +10,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - BaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null A Type1 font subset does not define CharSet entry in its Descriptor dictionary From e268c57cf8507ac1a25945c15adbcceea54431f4 Mon Sep 17 00:00:00 2001 From: Timur Kamalov Date: Tue, 27 Oct 2015 15:41:27 +0300 Subject: [PATCH 083/557] Fix for BaseFont check. --- .../6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml index cef4134b..9808a0ab 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml @@ -10,7 +10,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - BaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 A CID Font subset does not define CIDSet entry in its Descriptor dictionary From c05f3e14894ef7df6a272ec5e65d0bdde3022ac7 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Wed, 28 Oct 2015 06:53:29 +0300 Subject: [PATCH 084/557] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 73983a8c..126070a8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## PDF/A-1 (ISO 19005-1:2005 + Cor 1:2007 + Cor 2:2011) -The folder contains the full set of atomic validation rules covering the PDF/A-1B standard. +The folder contains the full set of atomic validation rules covering the PDF/A-1B standard and rototypes for PDF/A-1A, PDF/A-2B standards. *** @@ -10,4 +10,4 @@ The folder contains the full set of atomic validation rules covering the PDF/A-1 © 2015 [veraPDF Consortium](http://www.verapdf.org) ![Creative Commons License](https://licensebuttons.net/l/by/3.0/88x31.png) -This work is licensed under a [Creative Commons Attribution 3.0 Unported License (CC-BY 3.0)](http://creativecommons.org/licenses/by/3.0/) +This work is licensed under a [Creative Commons Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/) From 78f24b74101983994d17c45b33d8cb0fd11f6ecf Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Wed, 28 Oct 2015 06:53:44 +0300 Subject: [PATCH 085/557] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 126070a8..0576a886 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## PDF/A-1 (ISO 19005-1:2005 + Cor 1:2007 + Cor 2:2011) -The folder contains the full set of atomic validation rules covering the PDF/A-1B standard and rototypes for PDF/A-1A, PDF/A-2B standards. +The folder contains the full set of atomic validation rules covering the PDF/A-1B standard and prototypes for PDF/A-1A, PDF/A-2B standards. *** From c2060948fc927b165eeb7089e22fa53e0aa7be19 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Wed, 28 Oct 2015 06:55:49 +0300 Subject: [PATCH 086/557] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0576a886..b617696b 100644 --- a/README.md +++ b/README.md @@ -9,5 +9,5 @@ The folder contains the full set of atomic validation rules covering the PDF/A-1 veraPDF Consortium © 2015 [veraPDF Consortium](http://www.verapdf.org) -![Creative Commons License](https://licensebuttons.net/l/by/3.0/88x31.png) +![Creative Commons License](https://licensebuttons.net/l/by/4.0/88x31.png) This work is licensed under a [Creative Commons Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/) From 27e8485a499a931cb718e6f4414f5f52e95148bf Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Wed, 28 Oct 2015 09:51:59 +0200 Subject: [PATCH 087/557] Fixes in 1b validation profiles --- .../6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml | 2 +- .../1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml index d12af174..a916493c 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml @@ -21,7 +21,7 @@ - + null gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml index 7e6c5b74..1e154b30 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml @@ -10,7 +10,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || BaseFont != null + Subtype == "Type3" || BaseFont_size == 1 A BaseFont entry is missing or has invalid type From 144826b045a2af0941ea0cce07488be42fac45a3 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Wed, 28 Oct 2015 09:52:30 +0200 Subject: [PATCH 088/557] Fixes in result validation profiles (1a,1b,2b) --- PDF_A/PDFA-1A.html | 45 ++++------------ PDF_A/PDFA-1A.xml | 131 ++++----------------------------------------- PDF_A/PDFA-1B.html | 45 ++++------------ PDF_A/PDFA-1B.xml | 131 ++++----------------------------------------- PDF_A/PDFA-2B.html | 43 +++------------ PDF_A/PDFA-2B.xml | 131 +++------------------------------------------ 6 files changed, 54 insertions(+), 472 deletions(-) diff --git a/PDF_A/PDFA-1A.html b/PDF_A/PDFA-1A.html index 1d4ab972..f25b2bce 100644 --- a/PDF_A/PDFA-1A.html +++ b/PDF_A/PDFA-1A.html @@ -17,7 +17,7 @@ IDNameDescriptionTypeRule -16-7-11-t03The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "A" +16-7-11-t03The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "A" 26-8-2-t01The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of trueCosDocumentMarked == true @@ -193,7 +193,7 @@ 536-3-2-t03All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont != null + BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont_size == 1 546-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. @@ -230,11 +230,11 @@ 636-3-5-t02For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontBaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontfontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null 646-3-5-t03For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontBaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontfontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 656-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the @@ -316,7 +316,7 @@ 866-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent -876-7-11-t02The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 +876-7-11-t02The PDF/A version of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 886-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null @@ -340,43 +340,16 @@ 946-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null -956-7-8-t01All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinitionCorrect +956-7-9-t01The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions.XMPPackageisMetadataValid -966-7-8-t02All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinedInThisPackage +966-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false -976-7-8-t03The required PDF/A Extension Schema namespace prefix is pdfaExtension.PDFAExtensionSchemaprefix == "pdfaExtension" +976-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) -986-7-8-t04A PDF/A Field Schema namespace prefix is required to be "pdfaField".PDFAExtensionSchemaisPDFAFieldPrefixCorrect - - -996-7-8-t05A PDF/A Property Schema namespace prefix is required to be "pdfaProperty".PDFAExtensionSchemaisPDFAPropertyPrefixCorrect - - -1006-7-8-t06A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema".PDFAExtensionSchemaisPDFASchemaPrefixCorrect - - -1016-7-8-t07A PDF/A ValueType Schema namespace prefix is required to be "pdfaType".PDFAExtensionSchemaisPDFATypePrefixCorrect - - -1026-7-9-t01The metadata stream shall conform to XMP Specification.XMPPackageisMetadataValid - - -1036-7-9-t02All predefined schemas shall conform to XMP specification.XMPPredefinedSchemaunknownProperties == null - - -1046-7-9-t03All predefined schemas shall conform to XMP specification.XMPPredefinedSchemawrongValueTypeProperties == null - - -1056-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false - - -1066-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) - - -1076-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 +986-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 6f38c231..38330572 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -3,11 +3,11 @@ PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium - 2015-10-27T11-50-40Z+02 + 2015-10-28T09-47-50Z+02 sha-1 hash code - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1A conforming file. @@ -719,7 +719,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || BaseFont != null + Subtype == "Type3" || BaseFont_size == 1 A BaseFont entry is missing or has invalid type @@ -892,7 +892,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - BaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null A Type1 font subset does not define CharSet entry in its Descriptor dictionary @@ -908,7 +908,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - BaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 A CID Font subset does not define CIDSet entry in its Descriptor dictionary @@ -1193,7 +1193,7 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version of a file shall be specified using the PDF/A Identification extension schema. part == 1 The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. @@ -1282,123 +1282,12 @@ 6.7.5 - - All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. - isDefinitionCorrect - - Wrong definition of an extention schema with namespace URI: %1 - uri - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. - isDefinedInThisPackage - - Missed definition of an extention schema with namespace URI: %1 - uri - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - The required PDF/A Extension Schema namespace prefix is pdfaExtension. - prefix == "pdfaExtension" - - A PDF/A Extension Schema namespace prefix is %1, but shall be "pdfaExtension". - prefix - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A Field Schema namespace prefix is required to be "pdfaField". - isPDFAFieldPrefixCorrect - - A PDF/A Field Schema namespace prefix is not "pdfaField". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". - isPDFAPropertyPrefixCorrect - - A PDF/A Property Schema namespace prefix is not "pdfaProperty". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". - isPDFASchemaPrefixCorrect - - A PDF/A Schema Description Schema namespace prefix is not "pdfaSchema". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". - isPDFATypePrefixCorrect - - A PDF/A ValueType Schema namespace prefix is not "pdfaType". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - The metadata stream shall conform to XMP Specification. + The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. isMetadataValid - The metadata stream doesn't conform to XMP Specification. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - unknownProperties == null - - The predefined schema with namespace URI %1 has unknown properties: %2. - uri - unknownProperties - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - wrongValueTypeProperties == null - - The predefined schema with namespace URI %1 has properties of wrong type: %2. - uri - wrongValueTypeProperties + %1 + errorMessage ISO 19005-1:2005 @@ -1443,7 +1332,7 @@ - + null gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect diff --git a/PDF_A/PDFA-1B.html b/PDF_A/PDFA-1B.html index cb9279fc..81ccf74c 100644 --- a/PDF_A/PDFA-1B.html +++ b/PDF_A/PDFA-1B.html @@ -181,7 +181,7 @@ 496-3-2-t03All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont != null + BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont_size == 1 506-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. @@ -218,11 +218,11 @@ 596-3-5-t02For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontBaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontfontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null 606-3-5-t03For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontBaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontfontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 616-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the @@ -304,10 +304,10 @@ 826-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent -836-7-11-t02The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 +836-7-11-t02The PDF/A version of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 -846-7-11-t03The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B" +846-7-11-t03The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B" 856-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null @@ -331,43 +331,16 @@ 916-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null -926-7-8-t01All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinitionCorrect +926-7-9-t01The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions.XMPPackageisMetadataValid -936-7-8-t02All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinedInThisPackage +936-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false -946-7-8-t03The required PDF/A Extension Schema namespace prefix is pdfaExtension.PDFAExtensionSchemaprefix == "pdfaExtension" +946-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) -956-7-8-t04A PDF/A Field Schema namespace prefix is required to be "pdfaField".PDFAExtensionSchemaisPDFAFieldPrefixCorrect - - -966-7-8-t05A PDF/A Property Schema namespace prefix is required to be "pdfaProperty".PDFAExtensionSchemaisPDFAPropertyPrefixCorrect - - -976-7-8-t06A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema".PDFAExtensionSchemaisPDFASchemaPrefixCorrect - - -986-7-8-t07A PDF/A ValueType Schema namespace prefix is required to be "pdfaType".PDFAExtensionSchemaisPDFATypePrefixCorrect - - -996-7-9-t01The metadata stream shall conform to XMP Specification.XMPPackageisMetadataValid - - -1006-7-9-t02All predefined schemas shall conform to XMP specification.XMPPredefinedSchemaunknownProperties == null - - -1016-7-9-t03All predefined schemas shall conform to XMP specification.XMPPredefinedSchemawrongValueTypeProperties == null - - -1026-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false - - -1036-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) - - -1046-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 +956-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 96ac4c83..bfa725ea 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -3,7 +3,7 @@ PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium - 2015-10-27T11-47-12Z+02 + 2015-10-28T09-46-55Z+02 sha-1 hash code @@ -662,7 +662,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || BaseFont != null + Subtype == "Type3" || BaseFont_size == 1 A BaseFont entry is missing or has invalid type @@ -835,7 +835,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - BaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null A Type1 font subset does not define CharSet entry in its Descriptor dictionary @@ -851,7 +851,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - BaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 A CID Font subset does not define CIDSet entry in its Descriptor dictionary @@ -1136,7 +1136,7 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version of a file shall be specified using the PDF/A Identification extension schema. part == 1 The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. @@ -1148,7 +1148,7 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. conformance == "B" The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. @@ -1237,123 +1237,12 @@ 6.7.5 - - All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. - isDefinitionCorrect - - Wrong definition of an extention schema with namespace URI: %1 - uri - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. - isDefinedInThisPackage - - Missed definition of an extention schema with namespace URI: %1 - uri - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - The required PDF/A Extension Schema namespace prefix is pdfaExtension. - prefix == "pdfaExtension" - - A PDF/A Extension Schema namespace prefix is %1, but shall be "pdfaExtension". - prefix - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A Field Schema namespace prefix is required to be "pdfaField". - isPDFAFieldPrefixCorrect - - A PDF/A Field Schema namespace prefix is not "pdfaField". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". - isPDFAPropertyPrefixCorrect - - A PDF/A Property Schema namespace prefix is not "pdfaProperty". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". - isPDFASchemaPrefixCorrect - - A PDF/A Schema Description Schema namespace prefix is not "pdfaSchema". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". - isPDFATypePrefixCorrect - - A PDF/A ValueType Schema namespace prefix is not "pdfaType". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - The metadata stream shall conform to XMP Specification. + The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. isMetadataValid - The metadata stream doesn't conform to XMP Specification. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - unknownProperties == null - - The predefined schema with namespace URI %1 has unknown properties: %2. - uri - unknownProperties - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - wrongValueTypeProperties == null - - The predefined schema with namespace URI %1 has properties of wrong type: %2. - uri - wrongValueTypeProperties + %1 + errorMessage ISO 19005-1:2005 @@ -1398,7 +1287,7 @@ - + null gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect diff --git a/PDF_A/PDFA-2B.html b/PDF_A/PDFA-2B.html index 2e30ee50..677e419e 100644 --- a/PDF_A/PDFA-2B.html +++ b/PDF_A/PDFA-2B.html @@ -446,11 +446,11 @@ 1136-3-5-t02For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontBaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontfontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null 1146-3-5-t03For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontBaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontfontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 1156-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the @@ -525,10 +525,10 @@ 1356-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent -1366-7-11-t02The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 +1366-7-11-t02The PDF/A version of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 -1376-7-11-t03The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B" +1376-7-11-t03The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B" 1386-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null @@ -552,43 +552,16 @@ 1446-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null -1456-7-8-t01All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinitionCorrect +1456-7-9-t01The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions.XMPPackageisMetadataValid -1466-7-8-t02All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream.XMPCustomSchemaisDefinedInThisPackage +1466-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false -1476-7-8-t03The required PDF/A Extension Schema namespace prefix is pdfaExtension.PDFAExtensionSchemaprefix == "pdfaExtension" +1476-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) -1486-7-8-t04A PDF/A Field Schema namespace prefix is required to be "pdfaField".PDFAExtensionSchemaisPDFAFieldPrefixCorrect - - -1496-7-8-t05A PDF/A Property Schema namespace prefix is required to be "pdfaProperty".PDFAExtensionSchemaisPDFAPropertyPrefixCorrect - - -1506-7-8-t06A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema".PDFAExtensionSchemaisPDFASchemaPrefixCorrect - - -1516-7-8-t07A PDF/A ValueType Schema namespace prefix is required to be "pdfaType".PDFAExtensionSchemaisPDFATypePrefixCorrect - - -1526-7-9-t01The metadata stream shall conform to XMP Specification.XMPPackageisMetadataValid - - -1536-7-9-t02All predefined schemas shall conform to XMP specification.XMPPredefinedSchemaunknownProperties == null - - -1546-7-9-t03All predefined schemas shall conform to XMP specification.XMPPredefinedSchemawrongValueTypeProperties == null - - -1556-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false - - -1566-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) - - -1576-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 +1486-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index ab8423c2..b8f18df8 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -3,7 +3,7 @@ PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium - 2015-10-27T11-50-55Z+02 + 2015-10-28T09-48-10Z+02 sha-1 hash code @@ -1561,7 +1561,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - BaseFont.search(/[A-Z]{6}\+/) != 0 || CharSet != null + fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null A Type1 font subset does not define CharSet entry in its Descriptor dictionary @@ -1577,7 +1577,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - BaseFont.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 A CID Font subset does not define CIDSet entry in its Descriptor dictionary @@ -1843,7 +1843,7 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version of a file shall be specified using the PDF/A Identification extension schema. part == 1 The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. @@ -1855,7 +1855,7 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. conformance == "B" The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. @@ -1944,123 +1944,12 @@ 6.7.5 - - All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. - isDefinitionCorrect - - Wrong definition of an extention schema with namespace URI: %1 - uri - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - All extension schemas used in a conforming file shall have their descriptions embedded within that file in the metadata stream. - isDefinedInThisPackage - - Missed definition of an extention schema with namespace URI: %1 - uri - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - The required PDF/A Extension Schema namespace prefix is pdfaExtension. - prefix == "pdfaExtension" - - A PDF/A Extension Schema namespace prefix is %1, but shall be "pdfaExtension". - prefix - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A Field Schema namespace prefix is required to be "pdfaField". - isPDFAFieldPrefixCorrect - - A PDF/A Field Schema namespace prefix is not "pdfaField". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A Property Schema namespace prefix is required to be "pdfaProperty". - isPDFAPropertyPrefixCorrect - - A PDF/A Property Schema namespace prefix is not "pdfaProperty". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A Schema Description Schema namespace prefix is required to be "pdfaSchema". - isPDFASchemaPrefixCorrect - - A PDF/A Schema Description Schema namespace prefix is not "pdfaSchema". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - - A PDF/A ValueType Schema namespace prefix is required to be "pdfaType". - isPDFATypePrefixCorrect - - A PDF/A ValueType Schema namespace prefix is not "pdfaType". - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.8 - - - The metadata stream shall conform to XMP Specification. + The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. isMetadataValid - The metadata stream doesn't conform to XMP Specification. - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - unknownProperties == null - - The predefined schema with namespace URI %1 has unknown properties: %2. - uri - unknownProperties - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - All predefined schemas shall conform to XMP specification. - wrongValueTypeProperties == null - - The predefined schema with namespace URI %1 has properties of wrong type: %2. - uri - wrongValueTypeProperties + %1 + errorMessage ISO 19005-1:2005 @@ -2113,9 +2002,5 @@ null S == "GTS_PDFA1" ? colorSpace : gOutputCS - - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect -
From 218c7efc3a032143706ab49e9ed3ca221c43be3a Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Wed, 28 Oct 2015 11:02:18 +0200 Subject: [PATCH 089/557] Bug fix in according to integration tests --- .../6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml | 2 +- .../1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml index 32ced4ac..a4cc3fb3 100644 --- a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml @@ -10,7 +10,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml index 1e154b30..5e4c072e 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml @@ -10,7 +10,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || BaseFont_size == 1 + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type From 02f67e58e0913b6f0cd898f64c4c423e8a660044 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Wed, 28 Oct 2015 13:25:35 +0200 Subject: [PATCH 090/557] Fixes in gloabal profiles --- PDF_A/PDFA-1A.html | 4 +- PDF_A/PDFA-1A.xml | 6 +- PDF_A/PDFA-1B.html | 4 +- PDF_A/PDFA-1B.xml | 6 +- PDF_A/PDFA-2B.html | 205 ------------ PDF_A/PDFA-2B.xml | 815 +-------------------------------------------- 6 files changed, 11 insertions(+), 1029 deletions(-) diff --git a/PDF_A/PDFA-1A.html b/PDF_A/PDFA-1A.html index f25b2bce..234ed519 100644 --- a/PDF_A/PDFA-1A.html +++ b/PDF_A/PDFA-1A.html @@ -113,7 +113,7 @@ 316-1-7-t02The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL markerCosStreamstreamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL markerCosStreamstreamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true 326-1-7-t03A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keysCosStreamF == null && FFilter == null && FDecodeParms == null @@ -193,7 +193,7 @@ 536-3-2-t03All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont_size == 1 + BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || fontName != null 546-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 38330572..996427e0 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -3,7 +3,7 @@ PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium - 2015-10-28T09-47-50Z+02 + 2015-10-28T11-03-49Z+02 sha-1 hash code @@ -410,7 +410,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification @@ -719,7 +719,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || BaseFont_size == 1 + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type diff --git a/PDF_A/PDFA-1B.html b/PDF_A/PDFA-1B.html index 81ccf74c..7aecd014 100644 --- a/PDF_A/PDFA-1B.html +++ b/PDF_A/PDFA-1B.html @@ -101,7 +101,7 @@ 276-1-7-t02The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL markerCosStreamstreamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL markerCosStreamstreamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true 286-1-7-t03A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keysCosStreamF == null && FFilter == null && FDecodeParms == null @@ -181,7 +181,7 @@ 496-3-2-t03All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont_size == 1 + BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || fontName != null 506-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index bfa725ea..cf02353c 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -3,7 +3,7 @@ PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium - 2015-10-28T09-46-55Z+02 + 2015-10-28T11-03-07Z+02 sha-1 hash code @@ -353,7 +353,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification @@ -662,7 +662,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || BaseFont_size == 1 + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type diff --git a/PDF_A/PDFA-2B.html b/PDF_A/PDFA-2B.html index 677e419e..60b0bd60 100644 --- a/PDF_A/PDFA-2B.html +++ b/PDF_A/PDFA-2B.html @@ -358,211 +358,6 @@ 866-8-t02The file specification dictionary for an embedded file shall contain the F and UF keysCosFileSpecificationEF_size == 0 || (F != null && UF != null) - -876-1-10-t02The LZWDecode filter shall not be permittedPDInlineImageF == null || F.indexOf("LZW") == -1 - - -886-1-11-t01A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF keyCosFileSpecificationEF_size == 0 - - -896-1-11-t02A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles keyCosDocumentEmbeddedFiles_size == 0 - - -906-1-12-t01Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648CosInteger(intValue <= 2147483647) && (intValue >= -2147483648) - - -916-1-12-t02Absolute real value must be less than or equal to 32767.0CosReal(realValue >= -32767.0) && (realValue <= 32767.0) - - -926-1-12-t03Maximum length of a string (in bytes) is 65535CosStringvalue.length() < 65536 - - -936-1-12-t04Maximum length of a name (in bytes) is 127CosNameinternalRepresentation.length() <= 127 - - -946-1-12-t05Maximum capacity of an array (in elements) is 8191CosArraysize <= 8191 - - -956-1-12-t06Maximum capacity of a dictionary (in entries) is 4095CosDictsize <= 4095 - - -966-1-12-t07Maximum number of indirect objects in a PDF file is 8,388,607CosDocumentnrIndirects <= 8388607 - - -976-1-12-t08Maximum depth of graphics state nesting by q and Q operators is 28Op_q_gsavenestingLevel <= 28 - - -986-1-12-t09Maximum number of DeviceN components is 8PDDeviceNnrComponents <= 8 - - -996-1-12-t10Maximum value of a CID (character identifier) is 65,535CIDGlyphCID <= 65535 - - -1006-1-3-t04In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identicalCosDocument(isLinearized != true)|| lastID == null || (firstPageID == lastID) - - -1016-1-4-t01In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)CosXRefsubsectionHeaderSpaceSeparated == true - - -1026-2-2-t02If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - - -1036-2-3-t04If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2PDDeviceGraygOutputCS != null - - -1046-2-3-t05All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4ICCProfileN != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) - - -1056-2-7-t01A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS" - - -1066-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null - - -1076-3-2-t05All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null - - -1086-3-2-t06All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - - -1096-3-3-t03All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4PDCMapCMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 - - -1106-3-3-t04For 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 streamCMapFileWMode == dictWMode - - -1116-3-4-t01The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3PDFontSubtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - - -1126-3-5-t01Embedded font programs shall define all font glyphs referenced for rendering with a conforming fileGlyphisGlyphPresent == true - - -1136-3-5-t02For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontfontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null - - -1146-3-5-t03For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontfontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 - - -1156-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistentGlyphisWidthConsistent == true - - -1166-3-7-t01All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - - -1176-3-7-t02 All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null - - -1186-3-7-t03Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encodingTrueTypeFontProgramisSymbolic == false || nrCmaps == 1 - - -1196-4-t01If an SMask key appears in an ExtGState dictionary, its value shall be NonePDExtGStateSMask == null || SMask == "None" - - -1206-4-t02An XObject dictionary shall not contain the SMask keyPDXObjectSMask_size == 0 - - -1216-4-t03A Group object with an S key with a value of Transparency shall not be included in a form XObject. - A Group object with an S key with a value of Transparency shall not be included in a page dictionaryPDGroupS != "Transparency" - - -1226-4-t04The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or CompatiblePDExtGStateBM == null || BM == "Normal" || BM == "Compatible" - - -1236-4-t05The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateCA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 - - -1246-4-t06The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 - - -1256-5-3-t01An annotation dictionary shall not contain the CA key with a value other than 1.0PDAnnotCA == null || CA == 1.0 - - -1266-5-3-t02An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, - Invisible and NoView flag bits shall be set to 0PDAnnotF != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - - -1276-5-3-t03An annotation dictionary shall not contain the C array or the IC array unless the colour space of the - DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGBPDAnnot(C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - - -1286-5-3-t04For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream.PDAnnotAP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) - - -1296-6-1-t01The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)PDActionS == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - - -1306-6-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permittedPDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - - -1316-6-1-t03Interactive form fields shall not perform actions of any typePDAnnotSubtype != "Widget" || A_size == 0 - - -1326-6-2-t01A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionaryPDAnnotSubtype != "Widget" || AA_size == 0 - - -1336-6-2-t02A Field dictionary shall not include an AA entry for an additional-actions dictionaryPDFormFieldAA_size == 0 - - -1346-6-2-t03The document catalog dictionary shall not include an AA entry for an additional-actions dictionaryPDDocumentAA_size == 0 - - -1356-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent - - -1366-7-11-t02The PDF/A version of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 - - -1376-7-11-t03The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B" - - -1386-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null - - -1396-7-11-t05The PDF/A Identification Schema has required prefix "pdfaid".PDFAIdSchemaprefix == "pdfaid" - - -1406-7-2-t01The document catalog dictionary of a conforming file shall contain the Metadata key.PDDocumentmetadata_size == 1 - - -1416-7-2-t02Metadata object stream dictionaries shall not contain the Filter key.PDMetadataFilter == null - - -1426-7-3-t01If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values.CosDocumentdoesInfoMatchXMP - - -1436-7-5-t01The bytes attribute shall not be used in the header of an XMP packet.XMPPackagebytes == null - - -1446-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null - - -1456-7-9-t01The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions.XMPPackageisMetadataValid - - -1466-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false - - -1476-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0) - - -1486-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0 - diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index b8f18df8..de1c81d9 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -3,7 +3,7 @@ PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium - 2015-10-28T09-48-10Z+02 + 2015-10-28T13-24-41Z+02 sha-1 hash code @@ -1179,819 +1179,6 @@ 6.8 - - The LZWDecode filter shall not be permitted - F == null || F.indexOf("LZW") == -1 - - LZW compression is used in the inline image - - - ISO19005-1 - 6.1.10 - - - - A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 - - A file specification dictionary contains the EF key - - - ISO19005-1 - 6.1.11 - - PDF 1.4 Reference - 3.10.2 - - - - - A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 - - The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) - - - ISO19005-1 - 6.1.11 - - PDF 1.4 Reference - 3.6.3 - - - - - Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 - (intValue <= 2147483647) && (intValue >= -2147483648) - - Integer value out of range - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - Absolute real value must be less than or equal to 32767.0 - (realValue >= -32767.0) && (realValue <= 32767.0) - - Real value out of range - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - Maximum length of a string (in bytes) is 65535 - value.length() < 65536 - - Maximum length of a String (65535) exceeded - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - Maximum length of a name (in bytes) is 127 - internalRepresentation.length() <= 127 - - Maximum length of a Name (127) exceeded - internalRepresentation.length() - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - Maximum capacity of an array (in elements) is 8191 - size <= 8191 - - Maximum capacity of an array (8191) exceeded - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - Maximum capacity of a dictionary (in entries) is 4095 - size <= 4095 - - Maximum capacity of a dictionary (4095) exceeded - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - Maximum number of indirect objects in a PDF file is 8,388,607 - nrIndirects <= 8388607 - - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - Maximum depth of graphics state nesting by q and Q operators is 28 - nestingLevel <= 28 - - Maximum depth of graphics state nesting (q and Q operators) is exceeded - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - Maximum number of DeviceN components is 8 - nrComponents <= 8 - - Maximum number of DeviceN components is exceeded - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 - - Maximum value of a CID (65,535) is exceeded - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - (isLinearized != true)|| lastID == null || (firstPageID == lastID) - - Last ID is present in the Linearized PDF and does not match the first page ID - - - ISO 19005-1:2005/Cor.2:2011 - 6.1.3 - - - - In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) - subsectionHeaderSpaceSeparated == true - - Spacings of subsection headers in the cross reference table do not comply PDF/A specification - - - ISO19005-1:2005 - 6.1.4 - - - - If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - - - ISO19005-1 - 6.2.2 - - - - If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 - gOutputCS != null - - DeviceGray colour space is used without output intent profile - - - ISO19005-1 - 6.2.3.3 - - - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) - - The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile - - - ISO19005-1 - 6.2.3.2 - - PDF 1.4 Reference - 4.5.4, Table 4.16 - - - - - A conforming file shall not contain any PostScript XObjects - Subtype != "PS" - - The document contains a PostScript XObject - - - ISO19005-1 - 6.2.7 - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || FirstChar != null - - A non-standard simple font dictionary has missing or invalid FirstChar entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || LastChar != null - - A non-standard simple font dictionary has missing or invalid LastChar entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - - Widths array is missing or has invalid size - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - - All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 - CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 - - A CMap is different from "Identity-H" or "Identity-V" and is not embedded - - - ISO19005-1 - 6.3.3.3 - - PDF 1.4 Reference - 5.6.4 - - - - - 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 - WMode == dictWMode - - WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - ISO19005-1 - 6.3.3.3 - - - - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3 - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - - The font program is not embedded - - - ISO19005-1 - 6.3.4 - - PDF 1.4 Reference - 5.8 - - - - - Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - ISO19005-1 - 6.3.5 - - - - For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null - - A Type1 font subset does not define CharSet entry in its Descriptor dictionary - - - ISO19005-1 - 6.3.5 - - PDF 1.4 Reference - 5.5.3 - - - - - For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 - - A CID Font subset does not define CIDSet entry in its Descriptor dictionary - - - ISO19005-1 - 6.3.5 - - PDF 1.4 Reference - 5.5.3 - - - - - For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistent - isWidthConsistent == true - - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - ISO19005-1 - 6.3.6 - - - - All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - - A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - - All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - - Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding - isSymbolic == false || nrCmaps == 1 - - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - - If an SMask key appears in an ExtGState dictionary, its value shall be None - SMask == null || SMask == "None" - - An ExtGState contains SMask key with a value other than None - - - ISO19005-1 - 6.4 - - - - An XObject dictionary shall not contain the SMask key - SMask_size == 0 - - An XObject contains an SMask key - - - ISO19005-1:2005/Cor.2:2011 - 6.4 - - - - A Group object with an S key with a value of Transparency shall not be included in a form XObject. - A Group object with an S key with a value of Transparency shall not be included in a page dictionary - S != "Transparency" - - A transparency group is present in a form XObject or page dictionary - - - ISO19005-1:2005/Cor.2:2011 - 6.4 - - - - The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible - BM == null || BM == "Normal" || BM == "Compatible" - - An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible - - - ISO19005-1 - 6.4 - - - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 - - An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 - - - ISO19005-1 - 6.4 - - - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 - - An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 - - - ISO19005-1 - 6.4 - - - - An annotation dictionary shall not contain the CA key with a value other than 1.0 - CA == null || CA == 1.0 - - An annotation dictionary contains the CA key with value other than 1.0 - - - ISO19005-1 - 6.5.3 - - - - An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, - Invisible and NoView flag bits shall be set to 0 - F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - - Annotation flags are either missing or have forbidden values - - - ISO19005-1 - 6.5.3 - - - - An annotation dictionary shall not contain the C array or the IC array unless the colour space of the - DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - - Annotation's color or interior color is used without specifying RGB-based destination output profile - - - ISO19005-1 - 6.5.3 - - - - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) - - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - - - ISO19005-1/Cor.2:2011 - 6.5.3 - - - - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) - S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - - Unknown or not permitted action type - - - ISO19005-1 - 6.6.1 - - PDF 1.4 Reference - 8.5.3 - Table 8.34 - - - - ISO19005-1:2005/Cor.2:2011 - 6.6.1 - - - - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - - Unknown or not permitted action type - - - ISO19005-1 - 6.6.1 - - PDF 1.4 Reference - 8.5.3 - Named Actions - Table 8.45 - - - - - Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 - - Interactive form field contains an action object ('A' key) - - - ISO19005-1 - 6.6.1 - - - - A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 - - A Widget annotation contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2 - - - - A Field dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 - - A Field dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2, 6.9 - - - - The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 - - The document catalog dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2 - - - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - ispdfaidNSPresent - - The document metadata stream doesn't contains PDF/A Identification Schema. - - - ISO 19005-1:2005 - 6.7.11 - - - - The PDF/A version of a file shall be specified using the PDF/A Identification extension schema. - part == 1 - - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. - part - - - ISO 19005-1:2005 - 6.7.11 - - - - The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. - conformance == "B" - - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. - conformance - - - ISO 19005-1:2005 - 6.7.11 - - - - The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. - corr == null - - The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. - - - ISO 19005-1:2005 - 6.7.11 - - - - The PDF/A Identification Schema has required prefix "pdfaid". - prefix == "pdfaid" - - A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". - prefix - - - ISO 19005-1:2005 - 6.7.11 - - - - The document catalog dictionary of a conforming file shall contain the Metadata key. - metadata_size == 1 - - The document catalog dictionary doesn't contain metadata key. - - - ISO 19005-1:2005 - 6.7.2 - - - - Metadata object stream dictionaries shall not contain the Filter key. - Filter == null - - The metadata object stream dictionary contains the Filter key. - - - ISO 19005-1:2005 - 6.7.2 - - - - If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. - doesInfoMatchXMP - - Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.3 - - - - The bytes attribute shall not be used in the header of an XMP packet. - bytes == null - - The XMP Package contains bytes attribute. - - - ISO 19005-1:2005 - 6.7.5 - - - - The encoding attribute shall not be used in the header of an XMP packet. - encoding == null - - The XMP Package contains encoding attribute. - - - ISO 19005-1:2005 - 6.7.5 - - - - The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. - isMetadataValid - - %1 - errorMessage - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false - NeedAppearances == null || NeedAppearances == false - - The interactive form dictionary contains the NeedAppearances flag with value true - - - ISO19005-1 - 6.9 - - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) - - A Widget annotation contains either A or AA entry - - - ISO19005-1 - 6.9 - - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 - - A Form field dictionary contains the AA entry - - - ISO19005-1 - 6.9 - - From 59544e4483d8b0c9c8918940828e844dbb8fbe7c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 28 Oct 2015 17:56:50 +0300 Subject: [PATCH 091/557] Two new validation rules to support PDF/A-3 --- .../verapdf-profile-6-8-t01.xml | 22 ++++++++++++++++++ .../verapdf-profile-6-8-t03.xml | 23 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml create mode 100644 PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml new file mode 100644 index 00000000..e3db1022 --- /dev/null +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml @@ -0,0 +1,22 @@ + + + ISO 19005-3:2012 - 6.8 Embedded files - Subtype + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. + If the MIME type is not known, the "application/octet-stream" shall be used. + 2015-10-28T17:52:11Z + sha-1 hash code + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. + If the MIME type is not known, the "application/octet-stream" shall be used. + Subtype != null + + An embedded file dictionary doe snot contain the MIME type information (Subtype entry) + + + ISO19005-3:2012 + E.1 + + + + diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml new file mode 100644 index 00000000..1716f176 --- /dev/null +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml @@ -0,0 +1,23 @@ + + + ISO 19005-3:2012 - 6.8 Embedded files - AFRelationship + In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, + a new (required) key has been defined and its presence (in the dictionary) is required. + veraPDF Consortium + 2015-10-25T17:54:37Z + sha-1 hash code + + + In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, + a new (required) key has been defined and its presence (in the dictionary) is required. + AFRelationship != null + + The file specification dictionary for an embedded file does not contain the AFRelationship key + + + ISO19005-3:2012 + E.2 + + + + From 1f9ab118d678d94c4f933cda9ba4b2f555dde012 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 28 Oct 2015 22:16:59 +0300 Subject: [PATCH 092/557] Part number identification for PDF/A-3 --- .../verapdf-profile-6-6-4-t02.xml | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml new file mode 100644 index 00000000..333c3352 --- /dev/null +++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml @@ -0,0 +1,24 @@ + + + ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Part number + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with + this part of ISO 19005 shall use a value of 3. + veraPDF Consortium + 2015-10-26T21:00:00Z + sha-1 hash code + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + compliance with this part of ISO 19005 shall use a value of 3. + part == 3 + + The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. + part + + + ISO 19005-3:2012 + 6.6.4 + + + + From c27dd9f6504e73cedab4a7ce2aca643a4d9a2f15 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 2 Nov 2015 10:14:33 +0300 Subject: [PATCH 093/557] Updated part and conformance rules in metadata --- PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml | 4 ++-- PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml index d0ffde07..ef178deb 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml @@ -1,13 +1,13 @@ ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. veraPDF Consortium 2015-06-29T10:15:00Z sha-1 hash code - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. part == 1 The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml index 1190fc53..18844ee8 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml @@ -1,14 +1,14 @@ ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. veraPDF Consortium 2015-06-29T10:19:00Z sha-1 hash code - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - conformance == "B" + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" || conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. conformance From c1c7ad85fc805cd2e7eb4e5ea433e3da08715b3f Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 2 Nov 2015 10:28:10 +0300 Subject: [PATCH 094/557] Resolved the conflict --- PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml | 4 ---- PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml | 5 ----- 2 files changed, 9 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml index 16b9135f..ef178deb 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml @@ -7,11 +7,7 @@ sha-1 hash code -<<<<<<< HEAD The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. -======= - The PDF/A version of a file shall be specified using the PDF/A Identification extension schema. ->>>>>>> refs/remotes/veraPDF/integration part == 1 The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml index 1c266051..18844ee8 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml @@ -7,13 +7,8 @@ sha-1 hash code -<<<<<<< HEAD A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. conformance == "B" || conformance == "A" -======= - The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. - conformance == "B" ->>>>>>> refs/remotes/veraPDF/integration The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. conformance From 6c41b7863665c0e3a71472270d6f9ab93ec8a460 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Mon, 2 Nov 2015 09:34:44 +0200 Subject: [PATCH 095/557] Fix incorrect close tag --- PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml index e3db1022..d3d20b5c 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml @@ -2,7 +2,7 @@ ISO 19005-3:2012 - 6.8 Embedded files - Subtype The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. - If the MIME type is not known, the "application/octet-stream" shall be used. + If the MIME type is not known, the "application/octet-stream" shall be used. 2015-10-28T17:52:11Z sha-1 hash code From 2b20fd83d39495272516692403f7d453cc68518e Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Mon, 2 Nov 2015 09:35:05 +0200 Subject: [PATCH 096/557] Update global profiles --- PDF_A/PDFA-1B.html | 4 +- PDF_A/PDFA-1B.xml | 8 +- PDF_A/PDFA-3B.html | 367 ++++++++++++++ PDF_A/PDFA-3B.xml | 1205 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 1578 insertions(+), 6 deletions(-) create mode 100644 PDF_A/PDFA-3B.html create mode 100644 PDF_A/PDFA-3B.xml diff --git a/PDF_A/PDFA-1B.html b/PDF_A/PDFA-1B.html index 7aecd014..4a621da3 100644 --- a/PDF_A/PDFA-1B.html +++ b/PDF_A/PDFA-1B.html @@ -304,10 +304,10 @@ 826-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent -836-7-11-t02The PDF/A version of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1 +836-7-11-t02The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms.PDFAIdSchemapart == 1 -846-7-11-t03The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "B" +846-7-11-t03A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B.PDFAIdSchemaconformance == "B" || conformance == "A" 856-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index cf02353c..94d18101 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -3,7 +3,7 @@ PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium - 2015-10-28T11-03-07Z+02 + 2015-11-02T09-32-48Z+02 sha-1 hash code @@ -1136,7 +1136,7 @@ - The PDF/A version of a file shall be specified using the PDF/A Identification extension schema. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. part == 1 The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. @@ -1148,8 +1148,8 @@ - The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. - conformance == "B" + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" || conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. conformance diff --git a/PDF_A/PDFA-3B.html b/PDF_A/PDFA-3B.html new file mode 100644 index 00000000..b500d229 --- /dev/null +++ b/PDF_A/PDFA-3B.html @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IDNameDescriptionTypeRule
16-6-4-t02The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + compliance with this part of ISO 19005 shall use a value of 3.PDFAIdSchemapart == 3
26-8-t01The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. + If the MIME type is not known, the "application/octet-stream" shall be used.EmbeddedFileSubtype != null
36-8-t03In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, + a new (required) key has been defined and its presence (in the dictionary) is required.CosFileSpecificationAFRelationship != null
46-1-10-t01The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value.PDInlineImageF == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1)
56-1-13-t01A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648.CosInteger(intValue <= 2147483647) && (intValue >= -2147483648)
66-1-13-t02A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38CosReal(realValue >= -3.403e+38) && (realValue <= 3.403e+38)
76-1-13-t03A conforming file shall not contain any string longer than 32767 bytes.CosStringvalue.length() < 32767
86-1-13-t04A conforming file shall not contain any name longer than 127 bytes.CosNameorigLength <= 127
96-1-13-t07A conforming file shall not contain more than 8388607 indirect objectsCosDocumentnrIndirects <= 8388607
106-1-13-t08A conforming file shall not nest q/Q pairs by more than 28 nesting levelsOp_q_gsavenestingLevel <= 28
116-1-13-t09A conforming file shall not contain a DeviceN colour space with more than 32 colourants.PDDeviceNnrComponents <= 32
126-1-13-t10A conforming file shall not contain a CID value greater than 65535.CIDGlyphCID <= 65535
136-1-13-t11The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units + in either direction, nor shall it be greater than 14 400 units in either direction.CosBBoxtop - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400
146-1-2-t01The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h)CosDocumentheaderOffset == 0 && /%PDF-1\.[0-7]/.test(header)
156-1-2-t02The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127CosDocumentheaderByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
166-1-3-t01The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4CosDocumentlastID
176-1-3-t02The keyword Encrypt shall not be used in the trailer dictionaryCosTrailerisEncrypted != true
186-1-3-t03No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5.CosDocumentpostEOFDataSize == 0
196-1-4-t02The xref keyword and the cross-reference subsection header shall be separated by a single EOL markerCosXRefxrefEOLMarkersComplyPDFA
206-1-6-t01Hexadecimal strings shall contain an even number of non-white-space charactersCosString(isHex != true) || hexCount % 2 == 0
216-1-6-t02A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)CosString(isHex != true) || isHexSymbols
226-1-7-t01The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword.CosStreamisLengthCorrect
236-1-7-t02The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker.CosStreamstreamKeywordCRLFCompliant && endstreamKeywordEOLCompliant
246-1-7-t03A stream dictionary shall not contain the F, FFilter, or FDecodeParams keysCosStreamF == null && FFilter == null && FDecodeParms == null
256-1-7-t04All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode.CosStreamfilters == null || filters.indexOf("LZWDecode") == -1
266-1-8-t01Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences.CosUnicodeNameisCorrectUtf8 == true
276-1-9-t01The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker.CosIndirectspacingCompliesPDFA
286-2-10-t01Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary.PDExtGStateBM == null || BM == "Normal" || BM = "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity"
296-2-11-2-t01All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionaryPDFontType == "Font"
306-2-11-2-t02All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fontsPDFontSubtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
316-2-11-2-t03All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont != null
326-2-11-2-t04All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null
336-2-11-2-t05All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null
346-2-11-2-t06All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
356-2-11-3-t01For 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap.PDType0FontcmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true)
366-2-11-3-t02ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117.PDCIDFontSubtype != "CIDFontType2" || CIDToGIDMap != null
376-2-11-3-t03All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5.PDCMapCMapName == "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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1
386-2-11-3-t04For 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.CMapFileWMode == dictWMode
396-2-11-4-t01The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9.PDFontSubtype == "Type3" || Subtype == "Type0" || fontFile_size == 1
406-2-11-4-t02Embedded fonts shall define all glyphs referenced for rendering within the conforming file.GlyphisGlyphPresent == true
416-2-11-4-t03If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not.PDType1FontCharSet == null || charSetListsAllGlyphs == true
426-2-11-4-t04If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not.PDCIDFontCIDSet_size == 0 || cidSetListsAllGlyphs == true
436-2-11-5-t01For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent.GlyphisWidthConsistent == true
446-2-11-6-t01For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out.TrueTypeFontProgramisSymbolic == true || nrCmaps >= 1
456-2-11-6-t02No 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.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true)
466-2-11-6-t03Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null
476-2-11-6-t04Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding.TrueTypeFontProgramisSymbolic == false || nrCmaps == 1 || cmap30Present == true
486-2-11-8-t01A PDF/A-2 compliant document 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.Glyphname != ".notdef"
496-2-2-t01Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + by the BX/EX compatibility operators.Op_Undefinedfalse
506-2-3-t01The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK".ICCOutputProfile(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
516-2-3-t02If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream.PDOutputIntentdestOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect
526-2-3-t03In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent.PDOutputIntentDestOutputProfileRef_size == 0
536-2-4-t01The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1.ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0
546-2-4-t02DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile.PDDeviceRGBgOutputCS != null && gOutputCS == "RGB "
556-2-4-t03DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile.PDDeviceCMYKgOutputCS != null && gOutputCS == "CMYK"
566-2-4-t04DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + or if a PDF/A OutputIntent is present.PDDeviceGraygOutputCS != null
576-2-4-t05For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present.PDDeviceNareColorantsPresent == true
586-2-4-t06All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored.PDSeparationareTintAndAlternateConsistent == true
596-2-5-t01An ExtGState dictionary shall not contain the TR keyPDExtGStateTR == null
606-2-5-t02An ExtGState dictionary shall not contain the TR2 key with a value other than DefaultPDExtGStateTR2 == null || TR2 == "Default"
616-2-5-t03An ExtGState dictionary shall not contain the HTP keyPDExtGStateHTP_size == 0
626-2-5-t04All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key.PDHalftoneHalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
636-2-5-t05Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key.PDHalftoneHalftoneName == null
646-2-6-t01Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation.CosRenderingIntentvalue == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation"
656-2-8-t01An Image dictionary shall not contain the Alternates keyPDXImageAlternates_size == 0
666-2-8-t02An Image dictionary shall not contain the OPI keyPDXImageOPI_size == 0
676-2-8-t03If an Image dictionary contains the Interpolate key, its value shall be false. + For an inline image, the I key shall have a value of false.PDXImageInterpolate == false
686-2-9-t01A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key.PDXForm(Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0
696-2-9-t02A conforming file shall not contain any reference XObjectsPDXFormRef_size == 0
706-2-9-t03A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS"
716-3-1-t01Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted.PDAnnotSubtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact"
726-3-2-t01Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key.PDAnnotSubtype == "Popup" || F != null
736-3-2-t02If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0.PDAnnotF == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0)
746-3-2-t03Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1.PDAnnotSubtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1)
756-3-3-t01Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link.PDAnnot(width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null
766-3-3-t02For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream.PDAnnotAP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) )
776-4-1-t01A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys.PDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0)
786-4-1-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys.PDFormFieldAA_size == 0
796-4-1-t03The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false.PDAcroFormNeedAppearances == null || NeedAppearances == false
806-4-2-t01The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key.PDAcroFormXFA_size == 0
816-4-2-t02A document's Catalog shall not contain the NeedsRendering key.CosDocumentNeedsRendering == false
826-5-1-t01The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted.PDActionS == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
836-5-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted.PDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
846-5-2-t01The document's Catalog shall not include an AA entry for an additional-actions dictionary.PDDocumentAA_size == 0
856-5-2-t02The Page dictionary shall not include an AA entry for an additional-actions dictionary.PDPageAA_size == 0
866-6-4-t03Level B conforming file shall specify the value of pdfaid:conformance as B.PDFAIdSchemaconformance == "B"
876-8-t02The file specification dictionary for an embedded file shall contain the F and UF keysCosFileSpecificationEF_size == 0 || (F != null && UF != null)
+ + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml new file mode 100644 index 00000000..6833e033 --- /dev/null +++ b/PDF_A/PDFA-3B.xml @@ -0,0 +1,1205 @@ + + + PDF/A-1B validation profile + Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 + veraPDF Consortium + 2015-11-02T09-29-05Z+02 + sha-1 hash code + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + compliance with this part of ISO 19005 shall use a value of 3. + part == 3 + + The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. + part + + + ISO 19005-3:2012 + 6.6.4 + + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. + If the MIME type is not known, the "application/octet-stream" shall be used. + Subtype != null + + An embedded file dictionary doe snot contain the MIME type information (Subtype entry) + + + ISO19005-3:2012 + E.1 + + + + In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, + a new (required) key has been defined and its presence (in the dictionary) is required. + AFRelationship != null + + The file specification dictionary for an embedded file does not contain the AFRelationship key + + + ISO19005-3:2012 + E.2 + + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value. + F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) + + Inline image uses LZW, Crypt or one of the unknown filters + + + ISO19005-2:2011 + 6.1.10 + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 + (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + Real value out of range + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain any string longer than 32767 bytes. + value.length() < 32767 + + Maximum length of a String (32767) exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain any name longer than 127 bytes. + origLength <= 127 + + Maximum length of a Name (127) exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain more than 8388607 indirect objects + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not nest q/Q pairs by more than 28 nesting levels + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + nrComponents <= 32 + + Maximum number of DeviceN components (32) is exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + A conforming file shall not contain a CID value greater than 65535. + CID <= 65535 + + Maximum value of a CID (65535) is exceeded + + + ISO19005-2:2011 + 6.1.13 + + + + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units + in either direction, nor shall it be greater than 14 400 units in either direction. + top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + + One of the bage boundaries is out of range (3-14400) in one of the directions + + + ISO19005-2:2011 + 6.1.13 + + + + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h) + headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + + + ISO19005-2:2011 + 6.1.2 + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + ISO19005-2:2011 + 6.1.2 + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID + + Missing ID in the document trailer + + + ISO19005-2:2011 + 6.1.3 + + ISO32000-1:2008 + 14.4 + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + ISO19005-2:2011 + 6.1.3 + + + + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + ISO19005-2:2011 + 6.1.3 + + ISO32000-1:2008 + 7.5.5 + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + ISO19005-2:2011 + 6.1.4 + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + ISO19005-2 + 6.1.6 + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || isHexSymbols + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + ISO32000-1:2008 + 3.2.3 + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + ISO19005-2:2011 + 6.1.7.1 + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker. + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + ISO19005-2:2011 + 6.1.7.1 + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + ISO19005-2:2011 + 6.1.7.1 + + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + ISO19005-2:2011 + 6.1.7.2 + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isCorrectUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + ISO19005-2:2011 + 6.1.8 + + ISO32000-1:2008 + 7.3.5 + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + ISO19005-2 + 6.1.9 + + + + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + BM == null || BM == "Normal" || BM = "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" + + The document uses the blend mode not defined in ISO 32000-1:2008 + + + ISO19005-2:2011 + 6.2.10 + + ISO32000-1:2008 + 11.3.5, Tables 136-137 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + ISO19005-2:2011 + 6.2.11.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.6.5, Table 112 + + + ISO32000-1:2008 + 9.7.4.1, Table 117 + + + ISO32000-1:2008 + 9.7.6.1, Table 121 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + ISO19005-2:2011 + 6.2.11.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.6.2.3 + + + ISO32000-1:2008 + 9.6.3 + + + ISO32000-1:2008 + 9.6.5, Table 112 + + + ISO32000-1:2008 + 9.7.4.1, Table 117 + + + ISO32000-1:2008 + 9.7.6.1, Table 121 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || BaseFont != null + + A BaseFont entry is missing or has invalid type + + + ISO19005-2:2011 + 6.3.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.7.4.1, Table 117 + + + ISO32000-1:2008 + 9.7.6.1, Table 121 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + ISO19005-2:2011 + 6.2.11.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.6.5, Table 112 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + ISO19005-2:2011 + 6.2.11.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.6.5, Table 112 + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + ISO19005-2:2011 + 6.2.11.2 + + ISO32000-1:2008 + 9.6.2.1, Table 111 + + + ISO32000-1:2008 + 9.6.5, Table 112 + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + ISO19005-2:2011 + 6.2.11.3.1 + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + ISO19005-2:2011 + 6.2.11.3.2 + + ISO32000-1:2008 + 9.7.4, Table 117 + + + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + ISO19005-1 + 6.2.11.3.3 + + ISO32000-1:2008 + 9.7.5.2, Table 118 + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + ISO19005-2:2011 + 6.2.11.3.3 + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + ISO19005-2:2011 + 6.2.11.4.1 + + ISO32000-1:2008 + 9.9 + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + ISO19005-2:2011 + 6.2.11.4.1 + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + ISO19005-2:2011 + 6.2.11.4.2 + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + ISO19005-2:2011 + 6.2.11.4.2 + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + ISO19005-2:2011 + 6.2.11.5 + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps >= 1 + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + ISO19005-2:2011 + 6.2.11.6 + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + ISO19005-2:2011 + 6.2.11.6 + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + ISO32000-1:2008 + 6.2.11.6 + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + ISO32000-1:2008 + 6.2.11.6 + + + + A PDF/A-2 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + ISO19005-2:2011 + 6.2.11.8 + + + + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + by the BX/EX compatibility operators. + false + + A content stream contains an operator not defined in ISO 32000-1 + + + ISO19005-2:2011 + 6.2.2 + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + ISO19005-2:2011 + 6.2.3 + + ISO32000-1:2008 + 14.11.5 + + + + + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + ISO19005-2:2011 + 6.2.3 + + + + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + DestOutputProfileRef_size == 0 + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + ISO19005-2:2011 + 6.2.3 + + ISO15930-7:2010 + Annex A + + + + + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements + + + ISO19005-2:2011 + 6.2.4.2 + + ISO 32000-1:2008 + 8.6.5.5 + + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + ISO19005-2:2011 + 6.2.4.3 + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + ISO19005-2:2011 + 6.2.4.3 + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + or if a PDF/A OutputIntent is present. + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + ISO19005-2:2011 + 6.2.4.3 + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + ISO19005-2:2011 + 6.2.4.4 + + ISO32000-1:2008 + 8.6.6.5, Table 71 + + + + + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + ISO19005-2:2011 + 6.2.4.4 + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + ISO19005-2:2011 + 6.2.5 + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + ISO19005-2:2011 + 6.2.5 + + + + An ExtGState dictionary shall not contain the HTP key + HTP_size == 0 + + An ExtGState dictionary contains the HTP key + + + ISO19005-2:2011 + 6.2.5 + + + + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + ISO19005-2:2011 + 6.2.5 + + + + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + ISO19005-2:2011 + 6.2.5 + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. + value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + + A rendering intent with non-standard value is used + + + ISO19005-2:2011 + 6.2.6 + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + ISO19005-2:2011 + 6.2.8.1 + + + + An Image dictionary shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + ISO19005-2:2011 + 6.2.8.1 + + + + If an Image dictionary contains the Interpolate key, its value shall be false. + For an inline image, the I key shall have a value of false. + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + ISO19005-2:2011 + 6.2.8.1 + + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + + The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key + + + ISO19005-2:2011 + 6.2.9.1 + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + ISO19005-2:2011 + 6.2.9.2 + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + ISO19005-2:2011 + 6.2.9.3 + + + + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" + + Unknown or not permitted annotation type + + + ISO19005-2:2011 + 6.3.1 + + PDF 1.4 Reference + 12.5.6.1, Table 169 + + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + ISO19005-2 + 6.3.2 + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + ISO19005-2 + 6.3.2 + + + + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. + Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) + + Text annotation has one of the flags NoZoom or NoRotate set to 0 + + + ISO19005-2 + 6.3.2 + + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + An annotation does not contain an appearance dictionary + + + ISO19005-2:2011 + 6.3.3 + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + ISO19005-2:2011 + 6.3.3 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + ISO19005-2:2011 + 6.4.1 + + + ISO19005-2:2011 + 6.5.2 + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + AA_size == 0 + + A Form field dictionary contains the AA entry + + + ISO19005-2:2011 + 6.4.1 + + + ISO19005-2:2011 + 6.5.2 + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + ISO19005-2:2011 + 6.4.1 + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + XFA_size == 0 + + The interactive form dictionary contains the XFA key + + + ISO19005-2:2011 + 6.4.2 + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + ISO19005-2:2011 + 6.4.2 + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + ISO19005-2 + 6.5.1 + + ISO32000-1:2008 + 12.6.4.1, Table 198 + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + ISO19005-2:2011 + 6.5.1 + + ISO32000-1:2008 + 12.6.4.11, Table 211 + + + + + The document's Catalog shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-2:2011 + 6.5.2 + + + + The Page dictionary shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The Page dictionary contains an additional-actions dictionary (AA entry) + + + ISO19005-2:2011 + 6.5.2 + + + + Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" + + The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. + conformance + + + ISO 19005-2:2011 + 6.6.4 + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + EF_size == 0 || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + ISO19005-2:2011 + 6.8 + + + + + + null + gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + From 2c99bd9d06d103109bad373bf1d1ffe737100cc9 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 2 Nov 2015 12:52:38 +0300 Subject: [PATCH 097/557] Updated the description of the conformance rule --- PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml b/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml index b640fec1..98e48f84 100644 --- a/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml @@ -1,13 +1,13 @@ ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + A Level A conforming file shall specify the value of pdfaid:conformance as A. veraPDF Consortium 2015-06-29T10:19:00Z sha-1 hash code - The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. + A Level A conforming file shall specify the value of pdfaid:conformance as A. conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1A conforming file. From ff313987d6085affa746cda4c93a3436db66763d Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Tue, 3 Nov 2015 18:44:42 +0200 Subject: [PATCH 098/557] Fix mistakes in separate profiles --- .../6.1.6 String objects/verapdf-profile-6-1-6-t02.xml | 2 +- .../6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml | 2 +- .../6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml | 2 +- .../6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml index 1b6e2753..ba5b21ed 100644 --- a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml @@ -8,7 +8,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || isHexSymbols + (isHex != true) || containsOnlyHex Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml index ef9b28a0..01413a35 100644 --- a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml @@ -10,7 +10,7 @@ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. - isCorrectUtf8 == true + isValidUtf8 == true The name object does not represent a correct Utf8 byte sequence diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml index c5c90151..4ba6acea 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml @@ -8,7 +8,7 @@ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM = "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml index 158700c0..fe05a3f8 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml @@ -12,7 +12,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || BaseFont != null + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type From c2715c812a4a7d97e33e752ff77fa40280d5a7f5 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Tue, 3 Nov 2015 18:47:00 +0200 Subject: [PATCH 099/557] Update global profiles --- PDF_A/PDFA-2B.html | 8 ++++---- PDF_A/PDFA-2B.xml | 8 ++++---- PDF_A/PDFA-3B.html | 8 ++++---- PDF_A/PDFA-3B.xml | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/PDF_A/PDFA-2B.html b/PDF_A/PDFA-2B.html index 60b0bd60..43040a76 100644 --- a/PDF_A/PDFA-2B.html +++ b/PDF_A/PDFA-2B.html @@ -72,7 +72,7 @@ 176-1-6-t01Hexadecimal strings shall contain an even number of non-white-space charactersCosString(isHex != true) || hexCount % 2 == 0 -186-1-6-t02A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)CosString(isHex != true) || isHexSymbols +186-1-6-t02A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)CosString(isHex != true) || containsOnlyHex 196-1-7-t01The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character @@ -90,7 +90,7 @@ 236-1-8-t01Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences.CosUnicodeNameisCorrectUtf8 == true + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences.CosUnicodeNameisValidUtf8 == true 246-1-9-t01The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be @@ -98,7 +98,7 @@ keywords shall each be followed by an EOL marker.CosIndirectspacingCompliesPDFA -256-2-10-t01Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary.PDExtGStateBM == null || BM == "Normal" || BM = "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || +256-2-10-t01Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary.PDExtGStateBM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" @@ -117,7 +117,7 @@ 286-2-11-2-t03All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont != null + BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || fontName != null 296-2-11-2-t04All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index de1c81d9..2e9e48e4 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -207,7 +207,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || isHexSymbols + (isHex != true) || containsOnlyHex Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f @@ -265,7 +265,7 @@ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. - isCorrectUtf8 == true + isValidUtf8 == true The name object does not represent a correct Utf8 byte sequence @@ -293,7 +293,7 @@ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM = "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" @@ -380,7 +380,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || BaseFont != null + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type diff --git a/PDF_A/PDFA-3B.html b/PDF_A/PDFA-3B.html index b500d229..25c1ff6b 100644 --- a/PDF_A/PDFA-3B.html +++ b/PDF_A/PDFA-3B.html @@ -84,7 +84,7 @@ 206-1-6-t01Hexadecimal strings shall contain an even number of non-white-space charactersCosString(isHex != true) || hexCount % 2 == 0 -216-1-6-t02A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)CosString(isHex != true) || isHexSymbols +216-1-6-t02A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)CosString(isHex != true) || containsOnlyHex 226-1-7-t01The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character @@ -102,7 +102,7 @@ 266-1-8-t01Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences.CosUnicodeNameisCorrectUtf8 == true + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences.CosUnicodeNameisValidUtf8 == true 276-1-9-t01The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be @@ -110,7 +110,7 @@ keywords shall each be followed by an EOL marker.CosIndirectspacingCompliesPDFA -286-2-10-t01Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary.PDExtGStateBM == null || BM == "Normal" || BM = "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || +286-2-10-t01Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary.PDExtGStateBM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" @@ -129,7 +129,7 @@ 316-2-11-2-t03All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || BaseFont != null + BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || fontName != null 326-2-11-2-t04All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 6833e033..d5760f01 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -244,7 +244,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || isHexSymbols + (isHex != true) || containsOnlyHex Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f @@ -302,7 +302,7 @@ Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. - isCorrectUtf8 == true + isValidUtf8 == true The name object does not represent a correct Utf8 byte sequence @@ -330,7 +330,7 @@ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM = "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" @@ -417,7 +417,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || BaseFont != null + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type From f54835697e0a6f37f1fdad4763043df4a5ce0760 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Fri, 13 Nov 2015 02:05:11 +0200 Subject: [PATCH 100/557] Remove incorrect property call (origLength -> internalRepresentation.length()) --- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml index 40ed1084..da9ff773 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml @@ -8,7 +8,7 @@ A conforming file shall not contain any name longer than 127 bytes. - origLength <= 127 + internalRepresentation.length() <= 127 Maximum length of a Name (127) exceeded diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 2e9e48e4..113ad0a3 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -53,7 +53,7 @@ A conforming file shall not contain any name longer than 127 bytes. - origLength <= 127 + internalRepresentaion.length() <= 127 Maximum length of a Name (127) exceeded diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d5760f01..0d31f6b8 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -90,7 +90,7 @@ A conforming file shall not contain any name longer than 127 bytes. - origLength <= 127 + internalRepresentation.length() <= 127 Maximum length of a Name (127) exceeded From adf5705046ba0d1d775db3a9e69712d2c59af5a9 Mon Sep 17 00:00:00 2001 From: Evgeniy Muravitskiy Date: Fri, 13 Nov 2015 02:22:57 +0200 Subject: [PATCH 101/557] Fix mistake in field name --- PDF_A/PDFA-2B.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 113ad0a3..07001377 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -53,7 +53,7 @@ A conforming file shall not contain any name longer than 127 bytes. - internalRepresentaion.length() <= 127 + internalRepresentation.length() <= 127 Maximum length of a Name (127) exceeded From 894caef9ce3e42876313326ad58c5ff2ef73b3eb Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Tue, 24 Nov 2015 12:53:05 +0300 Subject: [PATCH 102/557] Modify general profiles --- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2B.xml | 8 ++++---- PDF_A/PDFA-3B.xml | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 996427e0..972da78d 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ - PDF/A-1B validation profile + PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium 2015-10-28T11-03-49Z+02 diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 94d18101..036ced45 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,5 +1,5 @@ - + PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 veraPDF Consortium diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 07001377..420673bd 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,7 +1,7 @@ - - PDF/A-1B validation profile - Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 + + PDF/A-2B validation profile + Validation rules against ISO 19005-2:2011 veraPDF Consortium 2015-10-28T13-24-41Z+02 sha-1 hash code @@ -519,7 +519,7 @@ A non-standard CMap is not embedded - ISO19005-1 + ISO19005-2 6.2.11.3.3 ISO32000-1:2008 diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 0d31f6b8..e354def8 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,7 +1,7 @@ - - PDF/A-1B validation profile - Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 + + PDF/A-3B validation profile + Validation rules against ISO 19005-3:2012 veraPDF Consortium 2015-11-02T09-29-05Z+02 sha-1 hash code From f665816f8a3cb4199680c50dc9817aa08d2c0083 Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Tue, 15 Dec 2015 16:35:27 +0300 Subject: [PATCH 103/557] Modify profile description --- PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml index ac18340c..84b64c11 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml @@ -7,7 +7,7 @@ sha-1 hash code - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0 ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 From d1aed776142138b69e69d687b4bdd96e74548466 Mon Sep 17 00:00:00 2001 From: Carl Wilson Date: Mon, 18 Jan 2016 03:14:15 -0500 Subject: [PATCH 104/557] Added converted PDF/A 1a profile. --- PDF_A/PDFA-1A.xml | 2405 +++++++++++++++++++++------------------------ 1 file changed, 1106 insertions(+), 1299 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 972da78d..fb1a5244 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,1344 +1,1151 @@ - - - PDF/A-1A validation profile - Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 - veraPDF Consortium - 2015-10-28T11-03-49Z+02 - sha-1 hash code + + +
+ PDF/A-1A validation profile + Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 +
+ - - The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. - conformance == "A" - - The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1A conforming file. - conformance - - - ISO 19005-1:2005 - 6.7.11 - - - - The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true - Marked == true - - /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false - - - ISO19005-1 - 6.8.2.2 - - PDF 1.4 Reference - 9.7.1 - - - - - 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 PDF Reference 9.6 - StructTreeRoot_size == 1 - - StructTreeRoot entry is not present in the document catalog - - - ISO19005-1 - 6.8.3.3 - - PDF 1.4 Reference - 9.6.1 - - - - - Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem - Type == "StructElem" - - Missing or invalid Type entry in the structure element dictionary - - - ISO19005-1 - 6.8.3.3 - - PDF 1.4 Reference - 9.6.1 - - - - - The LZWDecode filter shall not be permitted - filters == null || filters.indexOf("LZWDecode") == -1 - - LZW compression is used - - - ISO19005-1 - 6.1.10 - - - - The LZWDecode filter shall not be permitted - F == null || F.indexOf("LZW") == -1 - - LZW compression is used in the inline image - - - ISO19005-1 - 6.1.10 - - - - A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 - - A file specification dictionary contains the EF key - - - ISO19005-1 - 6.1.11 - - PDF 1.4 Reference - 3.10.2 - - - - - A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 - - The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) - - - ISO19005-1 - 6.1.11 - - PDF 1.4 Reference - 3.6.3 - - - - - Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 - (intValue <= 2147483647) && (intValue >= -2147483648) + + + Maximum number of DeviceN components is 8 + nrComponents <= 8 - Integer value out of range + Maximum number of DeviceN components is exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - - Absolute real value must be less than or equal to 32767.0 - (realValue >= -32767.0) && (realValue <= 32767.0) + + + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 - Real value out of range + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + + + + A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionary + S != "Transparency" + + A transparency group is present in a form XObject or page dictionary + + + + + + + + + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + doesInfoMatchXMP + + Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + + + + + + + + + The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true + Marked == true + + /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false + + + + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + + A rendering intent with non-standard value is used + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - + + + The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. + corr == null + + The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + Maximum length of a string (in bytes) is 65535 value.length() < 65536 Maximum length of a String (65535) exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - - Maximum length of a name (in bytes) is 127 - internalRepresentation.length() <= 127 + + + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" - Maximum length of a Name (127) exceeded - internalRepresentation.length() - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - + Unknown or not permitted annotation type + +
+ + + +
+ + + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null + + A Type1 font subset does not define CharSet entry in its Descriptor dictionary + + + + + + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + + + + + + + Maximum value of a CID (character identifier) is 65,535 + CID <= 65535 + + Maximum value of a CID (65,535) is exceeded + + + + + + + + + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + + Annotation's color or interior color is used without specifying RGB-based destination output profile + + + + + + + Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem + Type == "StructElem" + + Missing or invalid Type entry in the structure element dictionary + + + + + + + + + The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. + conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1A conforming file. + + conformance + + + + + + + Metadata object stream dictionaries shall not contain the Filter key. + Filter == null + + The metadata object stream dictionary contains the Filter key. + + + + + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 + + An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 + + + + + + + Interactive form fields shall not perform actions of any type + Subtype != "Widget" || A_size == 0 + + Interactive form field contains an action object ('A' key) + + + + + + + The PDF/A version of a file shall be specified using the PDF/A Identification extension schema. + part == 1 + + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + + part + + + + + + + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 + + The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information + + + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 + + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + + + + + + + + + A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key + EF_size == 0 + + A file specification dictionary contains the EF key + + + + + + + + + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") + + A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding + + + + + + + + + The document catalog dictionary shall not contain a key with the name OCProperties + isOptionalContentPresent == false + + The document catalog dictionary contains the OCProperties entry + + + + + + + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatible + areRegistryOrderingCompatible == true + + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements + + + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + + + + Maximum capacity of an array (in elements) is 8191 size <= 8191 Maximum capacity of an array (8191) exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - - Maximum capacity of a dictionary (in entries) is 4095 - size <= 4095 + + + If an Image dictionary contains the Interpolate key, its value shall be false + Interpolate == false - Maximum capacity of a dictionary (4095) exceeded + The value of the Interpolate key in the Image dictionary is true + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - - Maximum number of indirect objects in a PDF file is 8,388,607 - nrIndirects <= 8388607 + + + An annotation dictionary shall not contain the CA key with a value other than 1.0 + CA == null || CA == 1.0 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded + An annotation dictionary contains the CA key with value other than 1.0 + + + + + + + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + subsectionHeaderSpaceSeparated == true + + Spacings of subsection headers in the cross reference table do not comply PDF/A specification + + + + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + subdictionary; otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + + + + All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + + A Field dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + A Field dictionary contains an additional-actions dictionary (AA entry) + + + + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + + + + + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + Subtype != "Widget" || AA_size == 0 + + A Widget annotation contains an additional-actions dictionary (AA entry) + + + + + + + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + + + The LZWDecode filter shall not be permitted + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + + + + + If an SMask key appears in an ExtGState dictionary, its value shall be None + SMask == null || SMask == "None" + + An ExtGState contains SMask key with a value other than None + + + + + + + The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. + isMetadataValid + + %1 + + errorMessage + + + + + + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 + + LZW compression is used in the inline image + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - + + + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + + Missing ID in the document trailer + + + + + + + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + + The form XObject dictionary contains a PS key or Subtype2 key with value PS + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + + + + + + + The file header line shall be immediately followed by a comment consisting of a % character followed by at + least four characters, each of whose encoded byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + 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 PDF Reference 9.6 + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + + The PDF/A Identification Schema has required prefix "pdfaid". + prefix == "pdfaid" + + A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". + + prefix + + + + + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 + + An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 + + + + + + + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + isSymbolic == false || nrCmaps == 1 + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + + + + All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + AA_size == 0 + + A Form field dictionary contains the AA entry + + + + + + + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0 + F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 + + Annotation flags are either missing or have forbidden values + + + + + + + Absolute real value must be less than or equal to 32767.0 + (realValue >= -32767.0) && (realValue <= 32767.0) + + Real value out of range + + + + + + + + Maximum depth of graphics state nesting by q and Q operators is 28 nestingLevel <= 28 Maximum depth of graphics state nesting (q and Q operators) is exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - - Maximum number of DeviceN components is 8 - nrComponents <= 8 + + + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible + BM == null || BM == "Normal" || BM == "Compatible" - Maximum number of DeviceN components is exceeded + An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - - Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 - Maximum value of a CID (65,535) is exceeded + Hexadecimal string contains odd number of non-white-space characters + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - The document catalog dictionary shall not contain a key with the name OCProperties - isOptionalContentPresent == false - - The document catalog dictionary contains the OCProperties entry - - - ISO19005-1 - 6.1.13 - - - - The % character of the file header shall occur at byte offset 0 of the file. - The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms - headerOffset == 0 && /%PDF-\d\.\d/.test(header) - - File header does not start at byte offset 0 or does not correctly identify the version of the PDF document - - - ISO19005-1 - 6.1.2 - - PDF 1.4 Reference - 3.4.1 - - - - - The file header line shall be immediately followed by a comment consisting of a % character followed by at - least four characters, each of whose encoded byte values shall have a decimal value greater than 127 - headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - - Binary comment in the file header is missing or does not comply PDF/A requirements - - - ISO19005-1 - 6.1.2 - - - - The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, - as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 - (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - - Missing ID in the document trailer - - - ISO19005-1:2005 - 6.1.3 - - - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true - - Encrypt keyword is present in the trailer dictionary - - - ISO19005-1:2005 - 6.1.3 - - - - No data shall follow the last end-of-file marker except a single optional end-of-line marker. - postEOFDataSize == 0 - - Data is present after the last end-of-file marker - - - ISO19005-1:2005 - 6.1.3 - - - - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - (isLinearized != true)|| lastID == null || (firstPageID == lastID) - - Last ID is present in the Linearized PDF and does not match the first page ID - - - ISO 19005-1:2005/Cor.2:2011 - 6.1.3 - - - - In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) - subsectionHeaderSpaceSeparated == true - - Spacings of subsection headers in the cross reference table do not comply PDF/A specification - - - ISO19005-1:2005 - 6.1.4 - - - - The xref keyword and the cross reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA - - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - - - ISO19005-1:2005 - 6.1.4 - - - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 - - Hexadecimal string contains odd number of non-white-space characters - - - ISO19005-1 - 6.1.6 - - - - All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - (isHex != true) || containsOnlyHex - - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - - - ISO19005-1 - 6.1.6 - - - - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file - following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword - isLengthCorrect - - Actual length of the stream does not match the value of the Length key in the Stream dictionary - - - ISO19005-1 - 6.1.7 - - - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - - - ISO19005-1 - 6.1.7 - - - - A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys - F == null && FFilter == null && FDecodeParms == null - - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - - - ISO19005-1 - 6.1.7 - - - 19005-1:2005/Cor.2:2011 - 6.1.7 - - - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword - shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. - spacingCompliesPDFA - - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - ISO19005-1 - 6.1.8 - - - - A content stream shall not contain any operators not defined in PDF Reference - even if such operators are bracketed by the BX/EX compatibility operators - false - - A content stream contains an operator not defined in PDF Reference - - - ISO19005-1 - 6.2.10 - - - - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents - array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 - - The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information - - - ISO19005-1 - 6.2.2 - - PDF 1.4 Reference - 9.4.10 - - - - - If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - - - ISO19005-1 - 6.2.2 - - - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 - - The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements - - - ISO19005-1 - 6.2.3 - - PDF 1.4 Reference - 4.5.4, ICCBased Color Spaces - - - - - DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space - gOutputCS != null && gOutputCS == "RGB " - - DeviceRGB colour space is used without RGB output intent profile - - - ISO19005-1 - 6.2.3.3 - - - - DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space - gOutputCS != null && gOutputCS == "CMYK" - - DeviceCMYK colour space is used without CMYK output intent profile - - - ISO19005-1 - 6.2.3.3 - - - - If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 - gOutputCS != null - - DeviceGray colour space is used without output intent profile - - - ISO19005-1 - 6.2.3.3 - - - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) - - The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile - - - ISO19005-1 - 6.2.3.2 - - PDF 1.4 Reference - 4.5.4, Table 4.16 - - - - - An Image dictionary shall not contain the Alternates key - Alternates_size == 0 - - Alternates key is present in the Image dictionary( - - - ISO19005-1 - 6.2.4 - - - - An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 - - OPI key is present in the XObject dictionary( - - - ISO19005-1 - 6.2.4 - - - ISO19005-1 - 6.2.5 - - - - - If an Image dictionary contains the Interpolate key, its value shall be false - Interpolate == false - - The value of the Interpolate key in the Image dictionary is true - - - ISO19005-1 - 6.2.4 - - - - A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 - - The form XObject dictionary contains a PS key or Subtype2 key with value PS - - - ISO19005-1 - 6.2.5 - - - - A conforming file shall not contain any reference XObjects - Ref_size == 0 - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - ISO19005-1 - 6.2.6 - - - - A conforming file shall not contain any PostScript XObjects - Subtype != "PS" - - The document contains a PostScript XObject - - - ISO19005-1 - 6.2.7 - - - - An ExtGState dictionary shall not contain the TR key - TR == null - - An ExtGState dictionary contains the TR key - - - ISO19005-1 - 6.2.8 - - - - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" - - An ExtGState dictionary contains the TR2 key with a value other than Default - - - ISO19005-1 - 6.2.8 - - - - Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - - A rendering intent with non-standard value is used - - - ISO19005-1 - 6.2.9 - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" - - A Font dictionary has missing or invalid Type entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - - A Font dictionary has missing or invalid Subtype entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null - - A BaseFont entry is missing or has invalid type - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || FirstChar != null - - A non-standard simple font dictionary has missing or invalid FirstChar entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || LastChar != null - - A non-standard simple font dictionary has missing or invalid LastChar entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - - Widths array is missing or has invalid size - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatible - areRegistryOrderingCompatible == true - - Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - ISO19005-1 - 6.3.3.1 - - PDF 1.4 Reference - 5.6.2 - - - - - For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 - Subtype != "CIDFontType2" || CIDToGIDMap != null - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - ISO19005-1 - 6.3.3.2 - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - - - All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 - CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 - - A CMap is different from "Identity-H" or "Identity-V" and is not embedded - - - ISO19005-1 - 6.3.3.3 - - PDF 1.4 Reference - 5.6.4 - - - - - 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 - WMode == dictWMode - - WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - ISO19005-1 - 6.3.3.3 - - - - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile + + + + + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + + + + + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + + + + + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + Last ID is present in the Linearized PDF and does not match the first page ID + + + + + + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + + + + + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - - The font program is not embedded - - - ISO19005-1 - 6.3.4 - - PDF 1.4 Reference - 5.8 - - - - - Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - ISO19005-1 - 6.3.5 - - - - For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null - - A Type1 font subset does not define CharSet entry in its Descriptor dictionary - - - ISO19005-1 - 6.3.5 - - PDF 1.4 Reference - 5.5.3 - - - - - For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 - - A CID Font subset does not define CIDSet entry in its Descriptor dictionary - - - ISO19005-1 - 6.3.5 - - PDF 1.4 Reference - 5.5.3 - - - - - For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + headerOffset == 0 && /%PDF-\d\.\d/.test(header) + + File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + + + + + + + + + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the font dictionary and in the embedded font program shall be consistent - isWidthConsistent == true - - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - ISO19005-1 - 6.3.6 - - - - All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - - A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - - All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - - Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding - isSymbolic == false || nrCmaps == 1 - - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - - If an SMask key appears in an ExtGState dictionary, its value shall be None - SMask == null || SMask == "None" - - An ExtGState contains SMask key with a value other than None - - - ISO19005-1 - 6.4 - - - - An XObject dictionary shall not contain the SMask key - SMask_size == 0 - - An XObject contains an SMask key - - - ISO19005-1:2005/Cor.2:2011 - 6.4 - - - - A Group object with an S key with a value of Transparency shall not be included in a form XObject. - A Group object with an S key with a value of Transparency shall not be included in a page dictionary - S != "Transparency" - - A transparency group is present in a form XObject or page dictionary - - - ISO19005-1:2005/Cor.2:2011 - 6.4 - - - - The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible - BM == null || BM == "Normal" || BM == "Compatible" - - An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible - - - ISO19005-1 - 6.4 - - - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 - - An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 - - - ISO19005-1 - 6.4 - - - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 - - An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 - - - ISO19005-1 - 6.4 - - - - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, - Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" - - Unknown or not permitted annotation type - - - ISO19005-1 - 6.5.2 - - PDF 1.4 Reference - 8.4.5 - - - - - An annotation dictionary shall not contain the CA key with a value other than 1.0 - CA == null || CA == 1.0 - - An annotation dictionary contains the CA key with value other than 1.0 - - - ISO19005-1 - 6.5.3 - - - - An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, - Invisible and NoView flag bits shall be set to 0 - F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - - Annotation flags are either missing or have forbidden values - - - ISO19005-1 - 6.5.3 - - - - An annotation dictionary shall not contain the C array or the IC array unless the colour space of the - DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - - Annotation's color or interior color is used without specifying RGB-based destination output profile - - - ISO19005-1 - 6.5.3 - - - - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) - - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - - - ISO19005-1/Cor.2:2011 - 6.5.3 - - - - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) - S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - - Unknown or not permitted action type - - - ISO19005-1 - 6.6.1 - - PDF 1.4 Reference - 8.5.3 - Table 8.34 - - - - ISO19005-1:2005/Cor.2:2011 - 6.6.1 - - - - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - - Unknown or not permitted action type - - - ISO19005-1 - 6.6.1 - - PDF 1.4 Reference - 8.5.3 - Named Actions - Table 8.45 - - - - - Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 - - Interactive form field contains an action object ('A' key) - - - ISO19005-1 - 6.6.1 - - - - A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 - - A Widget annotation contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2 - - - - A Field dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 - - A Field dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2, 6.9 - - - - The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 - - The document catalog dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2 - - - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - ispdfaidNSPresent - - The document metadata stream doesn't contains PDF/A Identification Schema. - - - ISO 19005-1:2005 - 6.7.11 - - - - The PDF/A version of a file shall be specified using the PDF/A Identification extension schema. - part == 1 - - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. - part - - - ISO 19005-1:2005 - 6.7.11 - - - - The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. - corr == null - - The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. - - - ISO 19005-1:2005 - 6.7.11 - - - - The PDF/A Identification Schema has required prefix "pdfaid". - prefix == "pdfaid" - - A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". - prefix - - - ISO 19005-1:2005 - 6.7.11 - - - - The document catalog dictionary of a conforming file shall contain the Metadata key. - metadata_size == 1 - - The document catalog dictionary doesn't contain metadata key. - - - ISO 19005-1:2005 - 6.7.2 - - - - Metadata object stream dictionaries shall not contain the Filter key. - Filter == null - - The metadata object stream dictionary contains the Filter key. - - - ISO 19005-1:2005 - 6.7.2 - - - - If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. - doesInfoMatchXMP - - Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.3 - - - - The bytes attribute shall not be used in the header of an XMP packet. - bytes == null - - The XMP Package contains bytes attribute. - - - ISO 19005-1:2005 - 6.7.5 - - - - The encoding attribute shall not be used in the header of an XMP packet. - encoding == null - - The XMP Package contains encoding attribute. - - - ISO 19005-1:2005 - 6.7.5 - - - - The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. - isMetadataValid - - %1 - errorMessage - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false - NeedAppearances == null || NeedAppearances == false - - The interactive form dictionary contains the NeedAppearances flag with value true - - - ISO19005-1 - 6.9 - - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) - - A Widget annotation contains either A or AA entry - - - ISO19005-1 - 6.9 - - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 - - A Form field dictionary contains the AA entry - - - ISO19005-1 - 6.9 - - + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + The document catalog dictionary of a conforming file shall contain the Metadata key. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + Maximum capacity of a dictionary (in entries) is 4095 + size <= 4095 + + Maximum capacity of a dictionary (4095) exceeded + + + + + + + + + No data shall follow the last end-of-file marker except a single optional end-of-line marker. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + + Maximum length of a name (in bytes) is 127 + internalRepresentation.length() <= 127 + + Maximum length of a Name (127) exceeded + + internalRepresentation.length() + + + + + + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + ispdfaidNSPresent + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + + + An XObject dictionary shall not contain the SMask key + SMask_size == 0 + + An XObject contains an SMask key + + + + + + + + + The xref keyword and the cross reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + A CMap is different from "Identity-H" or "Identity-V" and is not embedded + + + + + + + + + A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operators + false + + A content stream contains an operator not defined in PDF Reference + + + + + + + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + + + Maximum number of indirect objects in a PDF file is 8,388,607 + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + + + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted action type + + + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + + 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 + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + An XObject dictionary (Image or Form) shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + +
- - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect - - null - S == "GTS_PDFA1" ? colorSpace : gOutputCS - + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS +
+ + null + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect +
From eed811af51fde0c8a6cf08735fc1f4e2dd4a5696 Mon Sep 17 00:00:00 2001 From: Carl Wilson Date: Mon, 18 Jan 2016 03:14:36 -0500 Subject: [PATCH 105/557] Added converted PDF/A 1b profile. --- PDF_A/PDFA-1B.xml | 2312 +++++++++++++++++++++------------------------ 1 file changed, 1064 insertions(+), 1248 deletions(-) diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 036ced45..0a00f092 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,1299 +1,1115 @@ - - - PDF/A-1B validation profile - Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 - veraPDF Consortium - 2015-11-02T09-32-48Z+02 - sha-1 hash code + + +
+ PDF/A-1B validation profile + Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 +
+ - - The LZWDecode filter shall not be permitted - filters == null || filters.indexOf("LZWDecode") == -1 - - LZW compression is used - - - ISO19005-1 - 6.1.10 - - - - The LZWDecode filter shall not be permitted - F == null || F.indexOf("LZW") == -1 - - LZW compression is used in the inline image - - - ISO19005-1 - 6.1.10 - - - - A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 - - A file specification dictionary contains the EF key - - - ISO19005-1 - 6.1.11 - - PDF 1.4 Reference - 3.10.2 - - - - - A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 - - The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) - - - ISO19005-1 - 6.1.11 - - PDF 1.4 Reference - 3.6.3 - - - - - Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 - (intValue <= 2147483647) && (intValue >= -2147483648) + + + The file header line shall be immediately followed by a comment consisting of a % character followed by at + least four characters, each of whose encoded byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Integer value out of range + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + Maximum number of DeviceN components is 8 + nrComponents <= 8 + + Maximum number of DeviceN components is exceeded + + + + + + + + + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + + + + A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionary + S != "Transparency" + + A transparency group is present in a form XObject or page dictionary + + + + + + + + + The PDF/A Identification Schema has required prefix "pdfaid". + prefix == "pdfaid" + + A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". + + prefix + + + + + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 + + An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 + + + + + + + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + doesInfoMatchXMP + + Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + + + + + + + + + All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + + + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + isSymbolic == false || nrCmaps == 1 + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + + + + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0 + F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 + + Annotation flags are either missing or have forbidden values + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + AA_size == 0 + + A Form field dictionary contains the AA entry + + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + + A rendering intent with non-standard value is used + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - + + Absolute real value must be less than or equal to 32767.0 (realValue >= -32767.0) && (realValue <= 32767.0) Real value out of range + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - + + + Maximum depth of graphics state nesting by q and Q operators is 28 + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + + + + + + + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible + BM == null || BM == "Normal" || BM == "Compatible" + + An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible + + + + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + Hexadecimal string contains odd number of non-white-space characters + + + + + + + The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. + corr == null + + The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + + Maximum length of a string (in bytes) is 65535 value.length() < 65536 Maximum length of a String (65535) exceeded + + + + + + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile + + + + + + + + + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + + + + + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" + + Unknown or not permitted annotation type + + + + + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + + + + + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null + + A Type1 font subset does not define CharSet entry in its Descriptor dictionary + + + + + + + + + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + Last ID is present in the Linearized PDF and does not match the first page ID + + + + + + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + + + + + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + + + + + + + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3 + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + Maximum value of a CID (character identifier) is 65,535 + CID <= 65535 + + Maximum value of a CID (65,535) is exceeded + + + + + + + + + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + + Annotation's color or interior color is used without specifying RGB-based destination output profile + + + + + + + The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + headerOffset == 0 && /%PDF-\d\.\d/.test(header) + + File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + + + + + + + + + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistent + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 + + An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 + + + + + + + Metadata object stream dictionaries shall not contain the Filter key. + Filter == null + + The metadata object stream dictionary contains the Filter key. + + + + + + + The document catalog dictionary of a conforming file shall contain the Metadata key. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + Interactive form fields shall not perform actions of any type + Subtype != "Widget" || A_size == 0 + + Interactive form field contains an action object ('A' key) + + + + + + + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 + + The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information + + + + + + + + + Maximum capacity of a dictionary (in entries) is 4095 + size <= 4095 + + Maximum capacity of a dictionary (4095) exceeded + + + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + + No data shall follow the last end-of-file marker except a single optional end-of-line marker. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 + + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + + + + + + + + + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") + + A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding + + + + + + + + + A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key + EF_size == 0 + + A file specification dictionary contains the EF key + + + + + + + + + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + The document catalog dictionary shall not contain a key with the name OCProperties + isOptionalContentPresent == false + + The document catalog dictionary contains the OCProperties entry + + + + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 1 + + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + + part + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatible + areRegistryOrderingCompatible == true + + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - + + Maximum length of a name (in bytes) is 127 internalRepresentation.length() <= 127 Maximum length of a Name (127) exceeded - internalRepresentation.length() - - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - + + internalRepresentation.length() + +
+ + + +
+ + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + ispdfaidNSPresent + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + + + + + An XObject dictionary shall not contain the SMask key + SMask_size == 0 + + An XObject contains an SMask key + + + + + + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements + + + + + + + + Maximum capacity of an array (in elements) is 8191 size <= 8191 Maximum capacity of an array (8191) exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - - Maximum capacity of a dictionary (in entries) is 4095 - size <= 4095 + + + If an Image dictionary contains the Interpolate key, its value shall be false + Interpolate == false - Maximum capacity of a dictionary (4095) exceeded + The value of the Interpolate key in the Image dictionary is true + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - + + + The xref keyword and the cross reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + + An annotation dictionary shall not contain the CA key with a value other than 1.0 + CA == null || CA == 1.0 + + An annotation dictionary contains the CA key with value other than 1.0 + + + + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operators + false + + A content stream contains an operator not defined in PDF Reference + + + + + + + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + A CMap is different from "Identity-H" or "Identity-V" and is not embedded + + + + + + + + + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + + + + + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + subsectionHeaderSpaceSeparated == true + + Spacings of subsection headers in the cross reference table do not comply PDF/A specification + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + + Maximum number of indirect objects in a PDF file is 8,388,607 nrIndirects <= 8388607 Maximum number of indirect objects (8,388,607) in a PDF file exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - - Maximum depth of graphics state nesting by q and Q operators is 28 - nestingLevel <= 28 + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Maximum depth of graphics state nesting (q and Q operators) is exceeded + Unknown or not permitted action type + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - - Maximum number of DeviceN components is 8 - nrComponents <= 8 + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" - Maximum number of DeviceN components is exceeded + An ExtGState dictionary contains the TR2 key with a value other than Default + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - - Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + subdictionary; otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) - Maximum value of a CID (65,535) is exceeded + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - - - - The document catalog dictionary shall not contain a key with the name OCProperties - isOptionalContentPresent == false - - The document catalog dictionary contains the OCProperties entry - - - ISO19005-1 - 6.1.13 - - - - The % character of the file header shall occur at byte offset 0 of the file. - The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms - headerOffset == 0 && /%PDF-\d\.\d/.test(header) - - File header does not start at byte offset 0 or does not correctly identify the version of the PDF document - - - ISO19005-1 - 6.1.2 - - PDF 1.4 Reference - 3.4.1 - - - - - The file header line shall be immediately followed by a comment consisting of a % character followed by at - least four characters, each of whose encoded byte values shall have a decimal value greater than 127 - headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - - Binary comment in the file header is missing or does not comply PDF/A requirements - - - ISO19005-1 - 6.1.2 - - - - The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, - as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 - (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - - Missing ID in the document trailer - - - ISO19005-1:2005 - 6.1.3 - - - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true - - Encrypt keyword is present in the trailer dictionary - - - ISO19005-1:2005 - 6.1.3 - - - - No data shall follow the last end-of-file marker except a single optional end-of-line marker. - postEOFDataSize == 0 - - Data is present after the last end-of-file marker - - - ISO19005-1:2005 - 6.1.3 - - - - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - (isLinearized != true)|| lastID == null || (firstPageID == lastID) - - Last ID is present in the Linearized PDF and does not match the first page ID - - - ISO 19005-1:2005/Cor.2:2011 - 6.1.3 - - - - In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) - subsectionHeaderSpaceSeparated == true - - Spacings of subsection headers in the cross reference table do not comply PDF/A specification - - - ISO19005-1:2005 - 6.1.4 - - - - The xref keyword and the cross reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA - - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - - - ISO19005-1:2005 - 6.1.4 - - - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 - - Hexadecimal string contains odd number of non-white-space characters - - - ISO19005-1 - 6.1.6 - - - - All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - (isHex != true) || containsOnlyHex - - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - - - ISO19005-1 - 6.1.6 - - - - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file - following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword - isLengthCorrect - - Actual length of the stream does not match the value of the Length key in the Stream dictionary - - - ISO19005-1 - 6.1.7 - - - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - - - ISO19005-1 - 6.1.7 - - - - A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys - F == null && FFilter == null && FDecodeParms == null - - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - - - ISO19005-1 - 6.1.7 - - - 19005-1:2005/Cor.2:2011 - 6.1.7 - - - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. - spacingCompliesPDFA - - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - ISO19005-1 - 6.1.8 - - - - A content stream shall not contain any operators not defined in PDF Reference - even if such operators are bracketed by the BX/EX compatibility operators - false - - A content stream contains an operator not defined in PDF Reference - - - ISO19005-1 - 6.2.10 - - - - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents - array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 - - The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information - - - ISO19005-1 - 6.2.2 - - PDF 1.4 Reference - 9.4.10 - - - - - If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - - - ISO19005-1 - 6.2.2 - - - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 - - The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements - - - ISO19005-1 - 6.2.3 - - PDF 1.4 Reference - 4.5.4, ICCBased Color Spaces - - - - - DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space - gOutputCS != null && gOutputCS == "RGB " - - DeviceRGB colour space is used without RGB output intent profile - - - ISO19005-1 - 6.2.3.3 - - - - DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space - gOutputCS != null && gOutputCS == "CMYK" - - DeviceCMYK colour space is used without CMYK output intent profile - - - ISO19005-1 - 6.2.3.3 - - - - If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 - gOutputCS != null - - DeviceGray colour space is used without output intent profile - - - ISO19005-1 - 6.2.3.3 - - - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) - - The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile - - - ISO19005-1 - 6.2.3.2 - - PDF 1.4 Reference - 4.5.4, Table 4.16 - - - - - An Image dictionary shall not contain the Alternates key - Alternates_size == 0 - - Alternates key is present in the Image dictionary( - - - ISO19005-1 - 6.2.4 - - - - An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 - - OPI key is present in the XObject dictionary( - - - ISO19005-1 - 6.2.4 - - - ISO19005-1 - 6.2.5 - - - - - If an Image dictionary contains the Interpolate key, its value shall be false - Interpolate == false - - The value of the Interpolate key in the Image dictionary is true - - - ISO19005-1 - 6.2.4 - - - - A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 - - The form XObject dictionary contains a PS key or Subtype2 key with value PS - - - ISO19005-1 - 6.2.5 - - - - A conforming file shall not contain any reference XObjects - Ref_size == 0 - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - ISO19005-1 - 6.2.6 - - - - A conforming file shall not contain any PostScript XObjects - Subtype != "PS" - - The document contains a PostScript XObject - - - ISO19005-1 - 6.2.7 - - - - An ExtGState dictionary shall not contain the TR key - TR == null - - An ExtGState dictionary contains the TR key - - - ISO19005-1 - 6.2.8 - - - - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" - - An ExtGState dictionary contains the TR2 key with a value other than Default - - - ISO19005-1 - 6.2.8 - - - - Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - - A rendering intent with non-standard value is used - - - ISO19005-1 - 6.2.9 - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" - - A Font dictionary has missing or invalid Type entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - - A Font dictionary has missing or invalid Subtype entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null - - A BaseFont entry is missing or has invalid type - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || FirstChar != null - - A non-standard simple font dictionary has missing or invalid FirstChar entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || LastChar != null - - A non-standard simple font dictionary has missing or invalid LastChar entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - - Widths array is missing or has invalid size - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatible - areRegistryOrderingCompatible == true - - Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - ISO19005-1 - 6.3.3.1 - - PDF 1.4 Reference - 5.6.2 - - - - - For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 - Subtype != "CIDFontType2" || CIDToGIDMap != null - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - ISO19005-1 - 6.3.3.2 - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - - - All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 - CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 - - A CMap is different from "Identity-H" or "Identity-V" and is not embedded - - - ISO19005-1 - 6.3.3.3 - - PDF 1.4 Reference - 5.6.4 - - - - - 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 - WMode == dictWMode - - WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - ISO19005-1 - 6.3.3.3 - - - - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3 - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - - The font program is not embedded - - - ISO19005-1 - 6.3.4 - - PDF 1.4 Reference - 5.8 - - - - - Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - ISO19005-1 - 6.3.5 - - - - For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null - - A Type1 font subset does not define CharSet entry in its Descriptor dictionary - - - ISO19005-1 - 6.3.5 - - PDF 1.4 Reference - 5.5.3 - - - - - For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 - - A CID Font subset does not define CIDSet entry in its Descriptor dictionary - - - ISO19005-1 - 6.3.5 - - PDF 1.4 Reference - 5.5.3 - - - - - For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistent - isWidthConsistent == true - - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - ISO19005-1 - 6.3.6 - - - - All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - - A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - - All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - - Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding - isSymbolic == false || nrCmaps == 1 - - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - - If an SMask key appears in an ExtGState dictionary, its value shall be None - SMask == null || SMask == "None" - - An ExtGState contains SMask key with a value other than None - - - ISO19005-1 - 6.4 - - - - An XObject dictionary shall not contain the SMask key - SMask_size == 0 - - An XObject contains an SMask key - - - ISO19005-1:2005/Cor.2:2011 - 6.4 - - - - A Group object with an S key with a value of Transparency shall not be included in a form XObject. - A Group object with an S key with a value of Transparency shall not be included in a page dictionary - S != "Transparency" - - A transparency group is present in a form XObject or page dictionary - - - ISO19005-1:2005/Cor.2:2011 - 6.4 - - - - The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible - BM == null || BM == "Normal" || BM == "Compatible" - - An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible - - - ISO19005-1 - 6.4 - - - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 - - An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 - - - ISO19005-1 - 6.4 - - - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 - - An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 - - - ISO19005-1 - 6.4 - - - - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, - Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" - - Unknown or not permitted annotation type - - - ISO19005-1 - 6.5.2 - - PDF 1.4 Reference - 8.4.5 - - - - - An annotation dictionary shall not contain the CA key with a value other than 1.0 - CA == null || CA == 1.0 - - An annotation dictionary contains the CA key with value other than 1.0 - - - ISO19005-1 - 6.5.3 - - - - An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, - Invisible and NoView flag bits shall be set to 0 - F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - - Annotation flags are either missing or have forbidden values - - - ISO19005-1 - 6.5.3 - - - - An annotation dictionary shall not contain the C array or the IC array unless the colour space of the - DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - - Annotation's color or interior color is used without specifying RGB-based destination output profile - - - ISO19005-1 - 6.5.3 - - - - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) - - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - - - ISO19005-1/Cor.2:2011 - 6.5.3 - - - - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + A Field dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + A Field dictionary contains an additional-actions dictionary (AA entry) + + + + + + + All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + Subtype != "Widget" || AA_size == 0 + + A Widget annotation contains an additional-actions dictionary (AA entry) + + + + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + + + The LZWDecode filter shall not be permitted + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + + + + + If an SMask key appears in an ExtGState dictionary, its value shall be None + SMask == null || SMask == "None" + + An ExtGState contains SMask key with a value other than None + + + + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" || conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. + + conformance + + + + + + + The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. + isMetadataValid + + %1 + + errorMessage + + + + + + + + + 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 + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 + + LZW compression is used in the inline image + + + + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + + + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + + Missing ID in the document trailer + + + + + + + An XObject dictionary (Image or Form) shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) - S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - - Unknown or not permitted action type - - - ISO19005-1 - 6.6.1 - - PDF 1.4 Reference - 8.5.3 - Table 8.34 - - - - ISO19005-1:2005/Cor.2:2011 - 6.6.1 - - - - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - - Unknown or not permitted action type - - - ISO19005-1 - 6.6.1 - - PDF 1.4 Reference - 8.5.3 - Named Actions - Table 8.45 - - - - - Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 - - Interactive form field contains an action object ('A' key) - - - ISO19005-1 - 6.6.1 - - - - A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 - - A Widget annotation contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2 - - - - A Field dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 - - A Field dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2, 6.9 - - - - The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 - - The document catalog dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2 - - - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - ispdfaidNSPresent - - The document metadata stream doesn't contains PDF/A Identification Schema. - - - ISO 19005-1:2005 - 6.7.11 - - - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. - part == 1 - - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. - part - - - ISO 19005-1:2005 - 6.7.11 - - - - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" || conformance == "A" - - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. - conformance - - - ISO 19005-1:2005 - 6.7.11 - - - - The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. - corr == null - - The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. - - - ISO 19005-1:2005 - 6.7.11 - - - - The PDF/A Identification Schema has required prefix "pdfaid". - prefix == "pdfaid" - - A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". - prefix - - - ISO 19005-1:2005 - 6.7.11 - - - - The document catalog dictionary of a conforming file shall contain the Metadata key. - metadata_size == 1 - - The document catalog dictionary doesn't contain metadata key. - - - ISO 19005-1:2005 - 6.7.2 - - - - Metadata object stream dictionaries shall not contain the Filter key. - Filter == null - - The metadata object stream dictionary contains the Filter key. - - - ISO 19005-1:2005 - 6.7.2 - - - - If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. - doesInfoMatchXMP - - Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.3 - - - - The bytes attribute shall not be used in the header of an XMP packet. - bytes == null - - The XMP Package contains bytes attribute. - - - ISO 19005-1:2005 - 6.7.5 - - - - The encoding attribute shall not be used in the header of an XMP packet. - encoding == null - - The XMP Package contains encoding attribute. - - - ISO 19005-1:2005 - 6.7.5 - - - - The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. - isMetadataValid - - %1 - errorMessage - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false - NeedAppearances == null || NeedAppearances == false - - The interactive form dictionary contains the NeedAppearances flag with value true - - - ISO19005-1 - 6.9 - - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) - - A Widget annotation contains either A or AA entry - - - ISO19005-1 - 6.9 - - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 - - A Form field dictionary contains the AA entry - - - ISO19005-1 - 6.9 - - + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + + + + + + + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + + The form XObject dictionary contains a PS key or Subtype2 key with value PS + + + +
- - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect - - null - S == "GTS_PDFA1" ? colorSpace : gOutputCS - + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + null + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect + From c314309252b23b76b532872e0d01ccbe00263a22 Mon Sep 17 00:00:00 2001 From: Carl Wilson Date: Mon, 18 Jan 2016 03:14:55 -0500 Subject: [PATCH 106/557] Added converted PDF/A 2b profile. --- PDF_A/PDFA-2B.xml | 2101 +++++++++++++++++++++------------------------ 1 file changed, 965 insertions(+), 1136 deletions(-) diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 420673bd..daf77bfe 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,1193 +1,1022 @@ - - - PDF/A-2B validation profile - Validation rules against ISO 19005-2:2011 - veraPDF Consortium - 2015-10-28T13-24-41Z+02 - sha-1 hash code + + +
+ PDF/A-2B validation profile + Validation rules against ISO 19005-2:2011 +
+ - - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. - F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) - - Inline image uses LZW, Crypt or one of the unknown filters - - - ISO19005-2:2011 - 6.1.10 - - - + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + An annotation does not contain an appearance dictionary + + + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" + + The document uses the blend mode not defined in ISO 32000-1:2008 + + + + + + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + compliance with this part of ISO 19005 shall use a value of 2. + part == 2 + + The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. + + part + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) Integer value out of range + - - ISO19005-2:2011 - 6.1.13 - + - - A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 - (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value. + F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) - Real value out of range + Inline image uses LZW, Crypt or one of the unknown filters + - - ISO19005-2:2011 - 6.1.13 - + - - A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null - Maximum length of a String (32767) exceeded + A symbolic TrueType font specifies an Encoding entry in its dictionary + - - ISO19005-2:2011 - 6.1.13 - + - - A conforming file shall not contain any name longer than 127 bytes. - internalRepresentation.length() <= 127 + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Maximum length of a Name (127) exceeded + Widths array is missing or has invalid size + - - ISO19005-2:2011 - 6.1.13 - + + + + - + + A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 Maximum number of indirect objects (8,388,607) in a PDF file exceeded + - - ISO19005-2:2011 - 6.1.13 - + - - A conforming file shall not nest q/Q pairs by more than 28 nesting levels - nestingLevel <= 28 + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true - Maximum depth of graphics state nesting (q and Q operators) is exceeded + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + - - ISO19005-2:2011 - 6.1.13 - + - - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. - nrComponents <= 32 + + + An ExtGState dictionary shall not contain the TR key + TR == null - Maximum number of DeviceN components (32) is exceeded + An ExtGState dictionary contains the TR key + - - ISO19005-2:2011 - 6.1.13 - + - - A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + + + A conforming file shall not contain any string longer than 32767 bytes. + value.length() < 32767 - Maximum value of a CID (65535) is exceeded + Maximum length of a String (32767) exceeded + + + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + + + + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + - - ISO19005-2:2011 - 6.1.13 - + - + + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 One of the bage boundaries is out of range (3-14400) in one of the directions + - - ISO19005-2:2011 - 6.1.13 - + - - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h) - headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) - - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification - - - ISO19005-2:2011 - 6.1.2 - - - - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 - headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - - Binary comment in the file header is missing or does not comply PDF/A requirements - - - ISO19005-2:2011 - 6.1.2 - - - - The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID - - Missing ID in the document trailer - - - ISO19005-2:2011 - 6.1.3 - - ISO32000-1:2008 - 14.4 - - - - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true - - Encrypt keyword is present in the trailer dictionary - - - ISO19005-2:2011 - 6.1.3 - - - - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. - postEOFDataSize == 0 - - Data is present after the last end-of-file marker - - - ISO19005-2:2011 - 6.1.3 - - ISO32000-1:2008 - 7.5.5 - - - - - The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA - - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - - - ISO19005-2:2011 - 6.1.4 - - - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 - - The number of hexadecimal digits in a hexadecimal string shall always be even - - - ISO19005-2 - 6.1.6 - - - - A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex - - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - - - ISO32000-1:2008 - 3.2.3 - - - - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect - - Actual length of the stream does not match the value of the Length key in the Stream dictionary - - - ISO19005-2:2011 - 6.1.7.1 - - - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant - - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - - - ISO19005-2:2011 - 6.1.7.1 - - - - A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys - F == null && FFilter == null && FDecodeParms == null - - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - - - ISO19005-2:2011 - 6.1.7.1 - - - - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. - filters == null || filters.indexOf("LZWDecode") == -1 - - LZW compression is used - - - ISO19005-2:2011 - 6.1.7.2 - - - - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. - isValidUtf8 == true - - The name object does not represent a correct Utf8 byte sequence - - - ISO19005-2:2011 - 6.1.8 - - ISO32000-1:2008 - 7.3.5 - - - - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. - spacingCompliesPDFA - - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - ISO19005-2 - 6.1.9 - - - - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" - - The document uses the blend mode not defined in ISO 32000-1:2008 - - - ISO19005-2:2011 - 6.2.10 - - ISO32000-1:2008 - 11.3.5, Tables 136-137 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" - - A Font dictionary has missing or invalid Type entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - ISO32000-1:2008 - 9.7.4.1, Table 117 - - - ISO32000-1:2008 - 9.7.6.1, Table 121 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - - A Font dictionary has missing or invalid Subtype entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.2.3 - - - ISO32000-1:2008 - 9.6.3 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - ISO32000-1:2008 - 9.7.4.1, Table 117 - - - ISO32000-1:2008 - 9.7.6.1, Table 121 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null - - A BaseFont entry is missing or has invalid type - - - ISO19005-2:2011 - 6.3.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.7.4.1, Table 117 - - - ISO32000-1:2008 - 9.7.6.1, Table 121 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + + The document's Catalog shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + + + + + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 + (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + Real value out of range + + + + + + + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + DestOutputProfileRef_size == 0 + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + + + + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + EF_size == 0 || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || FirstChar != null - - A non-standard simple font dictionary has missing or invalid FirstChar entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || LastChar != null - - A non-standard simple font dictionary has missing or invalid LastChar entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - - Widths array is missing or has invalid size - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - - - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + or if a PDF/A OutputIntent is present. + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + A conforming file shall not nest q/Q pairs by more than 28 nesting levels + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + + + + + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + by the BX/EX compatibility operators. + false + + A content stream contains an operator not defined in ISO 32000-1 + + + + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - ISO19005-2:2011 - 6.2.11.3.1 - - - - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - ISO19005-2:2011 - 6.2.11.3.2 - - ISO32000-1:2008 - 9.7.4, Table 117 - - - - - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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-EUC-H" || CMapName == "GBK2K-EUC-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" || - embeddedFile_size == 1 - - A non-standard CMap is not embedded - - - ISO19005-2 - 6.2.11.3.3 - - ISO32000-1:2008 - 9.7.5.2, Table 118 - - - - - 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. - WMode == dictWMode - - WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - ISO19005-2:2011 - 6.2.11.3.3 - - - - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - - The font program is not embedded - - - ISO19005-2:2011 - 6.2.11.4.1 - - ISO32000-1:2008 - 9.9 - - - - - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - ISO19005-2:2011 - 6.2.11.4.1 - - - - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. + Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) + + Text annotation has one of the flags NoZoom or NoRotate set to 0 + + + + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + + + + + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements + + + + + + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true - - A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program - - - ISO19005-2:2011 - 6.2.11.4.2 - - - - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. - CIDSet_size == 0 || cidSetListsAllGlyphs == true - - A CID Font subset does not define CIDSet entry in its Descriptor dictionary - - - ISO19005-2:2011 - 6.2.11.4.2 - - - - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + + The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key + + + + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - isWidthConsistent == true - - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - ISO19005-2:2011 - 6.2.11.5 - - - - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + nrComponents <= 32 + + Maximum number of DeviceN components (32) is exceeded + + + + + + + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + AA_size == 0 + + A Form field dictionary contains the AA entry + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + + + + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 - - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - - - ISO19005-2:2011 - 6.2.11.6 - - - - 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - - - ISO19005-2:2011 - 6.2.11.6 - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - ISO32000-1:2008 - 6.2.11.6 - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. - isSymbolic == false || nrCmaps == 1 || cmap30Present == true - - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - ISO32000-1:2008 - 6.2.11.6 - - - - A PDF/A-2 compliant document 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. - name != ".notdef" - - The document contains a reference to the .notdef glyph - - - ISO19005-2:2011 - 6.2.11.8 - - - - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators. - false - - A content stream contains an operator not defined in ISO 32000-1 - - - ISO19005-2:2011 - 6.2.2 - - - - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - - The embedded PDF/A Output Intent colour profile has invalid header - - - ISO19005-2:2011 - 6.2.3 - - ISO32000-1:2008 - 14.11.5 - - - - - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - - - ISO19005-2:2011 - 6.2.3 - - - - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 - - The output intent dictionary contains forbidden entry DestOutputProfileRef - - - ISO19005-2:2011 - 6.2.3 - - ISO15930-7:2010 - Annex A - - - - - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 - - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - - - ISO19005-2:2011 - 6.2.4.2 - - ISO 32000-1:2008 - 8.6.5.5 - - - - - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " - - DeviceRGB colour space is used without RGB output intent profile - - - ISO19005-2:2011 - 6.2.4.3 - - - - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - gOutputCS != null && gOutputCS == "CMYK" - - DeviceCMYK colour space is used without CMYK output intent profile - - - ISO19005-2:2011 - 6.2.4.3 - - - - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present. - gOutputCS != null - - DeviceGray colour space is used without output intent profile - - - ISO19005-2:2011 - 6.2.4.3 - - - - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. - areColorantsPresent == true - - A colorant of the DeviceN color space is not defined in the Colorants dictionary - - - ISO19005-2:2011 - 6.2.4.4 - - ISO32000-1:2008 - 8.6.6.5, Table 71 - - - - - All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + isSymbolic == true || nrCmaps >= 1 + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. + value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + + A rendering intent with non-standard value is used + + + + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + + A conforming file shall not contain a CID value greater than 65535. + CID <= 65535 + + Maximum value of a CID (65535) is exceeded + + + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + + + + + If an Image dictionary contains the Interpolate key, its value shall be false. + For an inline image, the I key shall have a value of false. + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + + A conforming file shall not contain any name longer than 127 bytes. + internalRepresentation.length() <= 127 + + Maximum length of a Name (127) exceeded + + + + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + + + + + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + + + + + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" + + Unknown or not permitted annotation type + + + + + + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID + + Missing ID in the document trailer + + + + + + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + XFA_size == 0 + + The interactive form dictionary contains the XFA key + + + + + + + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true - - Several occurrances of a Separation colour space with the same name are not consistent - - - ISO19005-2:2011 - 6.2.4.4 - - - - An ExtGState dictionary shall not contain the TR key - TR == null - - An ExtGState dictionary contains the TR key - - - ISO19005-2:2011 - 6.2.5 - - - - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" - - An ExtGState dictionary contains the TR2 key with a value other than Default - - - ISO19005-2:2011 - 6.2.5 - - - - An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 - - An ExtGState dictionary contains the HTP key - - - ISO19005-2:2011 - 6.2.5 - - - - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. - HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - - A Halftone has type other than 1 or 5 - - - ISO19005-2:2011 - 6.2.5 - - - - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. - HalftoneName == null - - A Halftone dictionary contains the HalftoneName key - - - ISO19005-2:2011 - 6.2.5 - - - - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" - - A rendering intent with non-standard value is used - - - ISO19005-2:2011 - 6.2.6 - - - - An Image dictionary shall not contain the Alternates key - Alternates_size == 0 - - Alternates key is present in the Image dictionary( - - - ISO19005-2:2011 - 6.2.8.1 - - - - An Image dictionary shall not contain the OPI key - OPI_size == 0 - - OPI key is present in the XObject dictionary( - - - ISO19005-2:2011 - 6.2.8.1 - - - - If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false. - Interpolate == false - - The value of the Interpolate key in the Image dictionary is true - - - ISO19005-2:2011 - 6.2.8.1 - - - - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 - - The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key - - - ISO19005-2:2011 - 6.2.9.1 - - - - A conforming file shall not contain any reference XObjects - Ref_size == 0 - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - ISO19005-2:2011 - 6.2.9.2 - - - - A conforming file shall not contain any PostScript XObjects - Subtype != "PS" - - The document contains a PostScript XObject - - - ISO19005-2:2011 - 6.2.9.3 - - - - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" - - Unknown or not permitted annotation type - - - ISO19005-2:2011 - 6.3.1 - - PDF 1.4 Reference - 12.5.6.1, Table 169 - - - - - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null - - A dictionary of a non-Popup annotation does not contain F key - - - ISO19005-2 - 6.3.2 - - - - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. - F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) - - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - - - ISO19005-2 - 6.3.2 - - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - ISO19005-2 - 6.3.2 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. - (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null - - An annotation does not contain an appearance dictionary - - - ISO19005-2:2011 - 6.3.3 - - - - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + + Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" + + The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. + + conformance + + + + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + + + + + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is + compliant with either ISO 19005-1 or this part of ISO 19005. + isValidPDFA12 == true + + An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 + + + + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h) + headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + + + + + + + An Image dictionary shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker. + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + + + + + + + An ExtGState dictionary shall not contain the HTP key + HTP_size == 0 + + An ExtGState dictionary contains the HTP key + + + + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) - - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - - - ISO19005-2:2011 - 6.3.3 - - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) - - A Widget annotation contains either A or AA entry - - - ISO19005-2:2011 - 6.4.1 - - - ISO19005-2:2011 - 6.5.2 - - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 - - A Form field dictionary contains the AA entry - - - ISO19005-2:2011 - 6.4.1 - - - ISO19005-2:2011 - 6.5.2 - - - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. - NeedAppearances == null || NeedAppearances == false - - The interactive form dictionary contains the NeedAppearances flag with value true - - - ISO19005-2:2011 - 6.4.1 - - - - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, - if present, shall not contain the XFA key. - XFA_size == 0 - - The interactive form dictionary contains the XFA key - - - ISO19005-2:2011 - 6.4.2 - - - - A document's Catalog shall not contain the NeedsRendering key. - NeedsRendering == false - - A document's Catalog contains NeedsRendering flag set to true - - - ISO19005-2:2011 - 6.4.2 - - - - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - - Unknown or not permitted action type - - - ISO19005-2 - 6.5.1 - - ISO32000-1:2008 - 12.6.4.1, Table 198 - - - - - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - - Unknown or not permitted named action - - - ISO19005-2:2011 - 6.5.1 - - ISO32000-1:2008 - 12.6.4.11, Table 211 - - - - - The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 - - The document catalog dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-2:2011 - 6.5.2 - - - - The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 - - The Page dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-2:2011 - 6.5.2 - - - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 2. - part == 2 - - The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. - part - - - ISO 19005-2:2011 - 6.6.4 - - - - Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" - - The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. - conformance - - - ISO 19005-2:2011 - 6.6.4 - - - - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is - compliant with either ISO 19005-1 or this part of ISO 19005. - isValidPDFA12 == true - - An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 - - - ISO19005-2:2011 - 6.8 - - - - The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) - - The file specification dictionary for an embedded file does not contain either F or EF key - - - ISO19005-2:2011 - 6.8 - - + AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + + The Page dictionary shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The Page dictionary contains an additional-actions dictionary (AA entry) + + + + + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + + A PDF/A-2 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + - - null - gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect - - null - S == "GTS_PDFA1" ? colorSpace : gOutputCS - + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + null + gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect +
From 0ee9eba7533bfbbfd9603f29609e068f98d42db8 Mon Sep 17 00:00:00 2001 From: Carl Wilson Date: Mon, 18 Jan 2016 03:15:10 -0500 Subject: [PATCH 107/557] Added converted PDF/A 3b profile. --- PDF_A/PDFA-3B.xml | 2140 +++++++++++++++++++++------------------------ 1 file changed, 984 insertions(+), 1156 deletions(-) diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index e354def8..e88f4af2 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,1205 +1,1033 @@ - - - PDF/A-3B validation profile - Validation rules against ISO 19005-3:2012 - veraPDF Consortium - 2015-11-02T09-29-05Z+02 - sha-1 hash code + + +
+ PDF/A-3B validation profile + Validation rules against ISO 19005-3:2012 +
+ - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 3. - part == 3 - - The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. - part - - - ISO 19005-3:2012 - 6.6.4 - - - - The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. - If the MIME type is not known, the "application/octet-stream" shall be used. - Subtype != null - - An embedded file dictionary doe snot contain the MIME type information (Subtype entry) - - - ISO19005-3:2012 - E.1 - - - - In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, - a new (required) key has been defined and its presence (in the dictionary) is required. - AFRelationship != null - - The file specification dictionary for an embedded file does not contain the AFRelationship key - - - ISO19005-3:2012 - E.2 - - - - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. - F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) - - Inline image uses LZW, Crypt or one of the unknown filters - - - ISO19005-2:2011 - 6.1.10 - - - - A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. - (intValue <= 2147483647) && (intValue >= -2147483648) + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Integer value out of range + Unknown or not permitted named action + - - ISO19005-2:2011 - 6.1.13 - + + + - - A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 - (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - Real value out of range + A Halftone has type other than 1 or 5 + - - ISO19005-2:2011 - 6.1.13 - + - - A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 - Maximum length of a String (32767) exceeded + The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key + - - ISO19005-2:2011 - 6.1.13 - + - - A conforming file shall not contain any name longer than 127 bytes. - internalRepresentation.length() <= 127 - - Maximum length of a Name (127) exceeded - - - ISO19005-2:2011 - 6.1.13 - - - + + A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + + + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + An annotation does not contain an appearance dictionary + + + + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps >= 1 + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + - - ISO19005-2:2011 - 6.1.13 - + - + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + + + + + + + An Image dictionary shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + + + + A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 Maximum depth of graphics state nesting (q and Q operators) is exceeded + - - ISO19005-2:2011 - 6.1.13 - + - - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. - nrComponents <= 32 + + + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - Maximum number of DeviceN components (32) is exceeded + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + - - ISO19005-2:2011 - 6.1.13 - + - - A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + + + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" - Maximum value of a CID (65535) is exceeded + The document uses the blend mode not defined in ISO 32000-1:2008 + + + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" + + The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. + + conformance + + + + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + + + + + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + - - ISO19005-2:2011 - 6.1.13 - + - + + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 One of the bage boundaries is out of range (3-14400) in one of the directions + - - ISO19005-2:2011 - 6.1.13 - + - - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h) - headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) - - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification - - - ISO19005-2:2011 - 6.1.2 - - - - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 - headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - - Binary comment in the file header is missing or does not comply PDF/A requirements - - - ISO19005-2:2011 - 6.1.2 - - - - The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID - - Missing ID in the document trailer - - - ISO19005-2:2011 - 6.1.3 - - ISO32000-1:2008 - 14.4 - - - - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true - - Encrypt keyword is present in the trailer dictionary - - - ISO19005-2:2011 - 6.1.3 - - - - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. - postEOFDataSize == 0 - - Data is present after the last end-of-file marker - - - ISO19005-2:2011 - 6.1.3 - - ISO32000-1:2008 - 7.5.5 - - - - - The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA - - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - - - ISO19005-2:2011 - 6.1.4 - - - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 - - The number of hexadecimal digits in a hexadecimal string shall always be even - - - ISO19005-2 - 6.1.6 - - - - A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex - - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - - - ISO32000-1:2008 - 3.2.3 - - - - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect - - Actual length of the stream does not match the value of the Length key in the Stream dictionary - - - ISO19005-2:2011 - 6.1.7.1 - - - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant - - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - - - ISO19005-2:2011 - 6.1.7.1 - - - - A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys - F == null && FFilter == null && FDecodeParms == null - - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - - - ISO19005-2:2011 - 6.1.7.1 - - - - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. - filters == null || filters.indexOf("LZWDecode") == -1 - - LZW compression is used - - - ISO19005-2:2011 - 6.1.7.2 - - - - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. - isValidUtf8 == true - - The name object does not represent a correct Utf8 byte sequence - - - ISO19005-2:2011 - 6.1.8 - - ISO32000-1:2008 - 7.3.5 - - - - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. - spacingCompliesPDFA - - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - ISO19005-2 - 6.1.9 - - - - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" - - The document uses the blend mode not defined in ISO 32000-1:2008 - - - ISO19005-2:2011 - 6.2.10 - - ISO32000-1:2008 - 11.3.5, Tables 136-137 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" - - A Font dictionary has missing or invalid Type entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - ISO32000-1:2008 - 9.7.4.1, Table 117 - - - ISO32000-1:2008 - 9.7.6.1, Table 121 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + + A conforming file shall not contain a CID value greater than 65535. + CID <= 65535 + + Maximum value of a CID (65535) is exceeded + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + nrComponents <= 32 + + Maximum number of DeviceN components (32) is exceeded + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - - A Font dictionary has missing or invalid Subtype entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.2.3 - - - ISO32000-1:2008 - 9.6.3 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - ISO32000-1:2008 - 9.7.4.1, Table 117 - - - ISO32000-1:2008 - 9.7.6.1, Table 121 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null - - A BaseFont entry is missing or has invalid type - - - ISO19005-2:2011 - 6.3.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.7.4.1, Table 117 - - - ISO32000-1:2008 - 9.7.6.1, Table 121 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || FirstChar != null - - A non-standard simple font dictionary has missing or invalid FirstChar entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || LastChar != null - - A non-standard simple font dictionary has missing or invalid LastChar entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - - Widths array is missing or has invalid size - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - - - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h) + headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + + + + + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. + If the MIME type is not known, the "application/octet-stream" shall be used. + Subtype != null + + An embedded file dictionary doe snot contain the MIME type information (Subtype entry) + + + + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + or if a PDF/A OutputIntent is present. + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + An ExtGState dictionary shall not contain the HTP key + HTP_size == 0 + + An ExtGState dictionary contains the HTP key + + + + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + A PDF/A-2 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - ISO19005-2:2011 - 6.2.11.3.1 - - - - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - ISO19005-2:2011 - 6.2.11.3.2 - - ISO32000-1:2008 - 9.7.4, Table 117 - - - - - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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-EUC-H" || CMapName == "GBK2K-EUC-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" || - embeddedFile_size == 1 - - A non-standard CMap is not embedded - - - ISO19005-1 - 6.2.11.3.3 - - ISO32000-1:2008 - 9.7.5.2, Table 118 - - - - - 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. - WMode == dictWMode - - WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - ISO19005-2:2011 - 6.2.11.3.3 - - - - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - - The font program is not embedded - - - ISO19005-2:2011 - 6.2.11.4.1 - - ISO32000-1:2008 - 9.9 - - - - - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - ISO19005-2:2011 - 6.2.11.4.1 - - - - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true - - A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program - - - ISO19005-2:2011 - 6.2.11.4.2 - - - - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. - CIDSet_size == 0 || cidSetListsAllGlyphs == true - - A CID Font subset does not define CIDSet entry in its Descriptor dictionary - - - ISO19005-2:2011 - 6.2.11.4.2 - - - - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - isWidthConsistent == true - - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - ISO19005-2:2011 - 6.2.11.5 - - - - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 - - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - - - ISO19005-2:2011 - 6.2.11.6 - - - - 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - - - ISO19005-2:2011 - 6.2.11.6 - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - ISO32000-1:2008 - 6.2.11.6 - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. - isSymbolic == false || nrCmaps == 1 || cmap30Present == true - - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - ISO32000-1:2008 - 6.2.11.6 - - - - A PDF/A-2 compliant document 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. - name != ".notdef" - - The document contains a reference to the .notdef glyph - - - ISO19005-2:2011 - 6.2.11.8 - - - - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 + (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + Real value out of range + + + + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + + + + + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. - false - - A content stream contains an operator not defined in ISO 32000-1 - - - ISO19005-2:2011 - 6.2.2 - - - - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - - The embedded PDF/A Output Intent colour profile has invalid header - - - ISO19005-2:2011 - 6.2.3 - - ISO32000-1:2008 - 14.11.5 - - - - - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - - - ISO19005-2:2011 - 6.2.3 - - - - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 - - The output intent dictionary contains forbidden entry DestOutputProfileRef - - - ISO19005-2:2011 - 6.2.3 - - ISO15930-7:2010 - Annex A - - - - - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 - - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - - - ISO19005-2:2011 - 6.2.4.2 - - ISO 32000-1:2008 - 8.6.5.5 - - - - - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " - - DeviceRGB colour space is used without RGB output intent profile - - - ISO19005-2:2011 - 6.2.4.3 - - - - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - gOutputCS != null && gOutputCS == "CMYK" - - DeviceCMYK colour space is used without CMYK output intent profile - - - ISO19005-2:2011 - 6.2.4.3 - - - - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present. - gOutputCS != null - - DeviceGray colour space is used without output intent profile - - - ISO19005-2:2011 - 6.2.4.3 - - - - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. - areColorantsPresent == true - - A colorant of the DeviceN color space is not defined in the Colorants dictionary - - - ISO19005-2:2011 - 6.2.4.4 - - ISO32000-1:2008 - 8.6.6.5, Table 71 - - - - - All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true - - Several occurrances of a Separation colour space with the same name are not consistent - - - ISO19005-2:2011 - 6.2.4.4 - - - - An ExtGState dictionary shall not contain the TR key - TR == null - - An ExtGState dictionary contains the TR key - - - ISO19005-2:2011 - 6.2.5 - - - - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" - - An ExtGState dictionary contains the TR2 key with a value other than Default - - - ISO19005-2:2011 - 6.2.5 - - - - An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 - - An ExtGState dictionary contains the HTP key - - - ISO19005-2:2011 - 6.2.5 - - - - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. - HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - - A Halftone has type other than 1 or 5 - - - ISO19005-2:2011 - 6.2.5 - - - - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. - HalftoneName == null - - A Halftone dictionary contains the HalftoneName key - - - ISO19005-2:2011 - 6.2.5 - - - - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + false + + A content stream contains an operator not defined in ISO 32000-1 + + + + + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value. + F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) + + Inline image uses LZW, Crypt or one of the unknown filters + + + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + + + + + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements + + + + + + + + + The document's Catalog shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + XFA_size == 0 + + The interactive form dictionary contains the XFA key + + + + + + + A conforming file shall not contain any name longer than 127 bytes. + internalRepresentation.length() <= 127 + + Maximum length of a Name (127) exceeded + + + + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker. + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID + + Missing ID in the document trailer + + + + + + + + + In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, + a new (required) key has been defined and its presence (in the dictionary) is required. + AFRelationship != null + + The file specification dictionary for an embedded file does not contain the AFRelationship key + + + + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + EF_size == 0 || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + DestOutputProfileRef_size == 0 + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" - - A rendering intent with non-standard value is used - - - ISO19005-2:2011 - 6.2.6 - - - - An Image dictionary shall not contain the Alternates key - Alternates_size == 0 - - Alternates key is present in the Image dictionary( - - - ISO19005-2:2011 - 6.2.8.1 - - - - An Image dictionary shall not contain the OPI key - OPI_size == 0 - - OPI key is present in the XObject dictionary( - - - ISO19005-2:2011 - 6.2.8.1 - - - - If an Image dictionary contains the Interpolate key, its value shall be false. + value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + + A rendering intent with non-standard value is used + + + + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + AA_size == 0 + + A Form field dictionary contains the AA entry + + + + + + + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. - Interpolate == false - - The value of the Interpolate key in the Image dictionary is true - - - ISO19005-2:2011 - 6.2.8.1 - - - - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 - - The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key - - - ISO19005-2:2011 - 6.2.9.1 - - - - A conforming file shall not contain any reference XObjects - Ref_size == 0 - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - ISO19005-2:2011 - 6.2.9.2 - - - - A conforming file shall not contain any PostScript XObjects - Subtype != "PS" - - The document contains a PostScript XObject - - - ISO19005-2:2011 - 6.2.9.3 - - - - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" - - Unknown or not permitted annotation type - - - ISO19005-2:2011 - 6.3.1 - - PDF 1.4 Reference - 12.5.6.1, Table 169 - - - - - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null - - A dictionary of a non-Popup annotation does not contain F key - - - ISO19005-2 - 6.3.2 - - - - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. - F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) - - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - - - ISO19005-2 - 6.3.2 - - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - ISO19005-2 - 6.3.2 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. - (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null - - An annotation does not contain an appearance dictionary - - - ISO19005-2:2011 - 6.3.3 - - - - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) - - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - - - ISO19005-2:2011 - 6.3.3 - - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) - - A Widget annotation contains either A or AA entry - - - ISO19005-2:2011 - 6.4.1 - - - ISO19005-2:2011 - 6.5.2 - - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 - - A Form field dictionary contains the AA entry - - - ISO19005-2:2011 - 6.4.1 - - - ISO19005-2:2011 - 6.5.2 - - - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. - NeedAppearances == null || NeedAppearances == false - - The interactive form dictionary contains the NeedAppearances flag with value true - - - ISO19005-2:2011 - 6.4.1 - - - - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, - if present, shall not contain the XFA key. - XFA_size == 0 - - The interactive form dictionary contains the XFA key - - - ISO19005-2:2011 - 6.4.2 - - - - A document's Catalog shall not contain the NeedsRendering key. - NeedsRendering == false - - A document's Catalog contains NeedsRendering flag set to true - - - ISO19005-2:2011 - 6.4.2 - - - - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - - Unknown or not permitted action type - - - ISO19005-2 - 6.5.1 - - ISO32000-1:2008 - 12.6.4.1, Table 198 - - - - - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - - Unknown or not permitted named action - - - ISO19005-2:2011 - 6.5.1 - - ISO32000-1:2008 - 12.6.4.11, Table 211 - - - - - The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 - - The document catalog dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-2:2011 - 6.5.2 - - - - The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 - - The Page dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-2:2011 - 6.5.2 - - - - Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" - - The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. - conformance - - - ISO 19005-2:2011 - 6.6.4 - - - - The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) - - The file specification dictionary for an embedded file does not contain either F or EF key - - - ISO19005-2:2011 - 6.8 - - + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + + + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" + + Unknown or not permitted annotation type + + + + + + + + + A conforming file shall not contain any string longer than 32767 bytes. + value.length() < 32767 + + Maximum length of a String (32767) exceeded + + + + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + compliance with this part of ISO 19005 shall use a value of 3. + part == 3 + + The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. + + part + + + + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + + The Page dictionary shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The Page dictionary contains an additional-actions dictionary (AA entry) + + + + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. + Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) + + Text annotation has one of the flags NoZoom or NoRotate set to 0 + + + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + + + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + + + + + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + - - null - gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect - - null - S == "GTS_PDFA1" ? colorSpace : gOutputCS - + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + null + gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect +
From d237895564cca1cc698d0f6caba93831a27e2d8b Mon Sep 17 00:00:00 2001 From: Carl Wilson Date: Mon, 18 Jan 2016 03:15:51 -0500 Subject: [PATCH 108/557] Added XSD for ValidationProfiles. --- validationProfile.xsd | 119 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 validationProfile.xsd diff --git a/validationProfile.xsd b/validationProfile.xsd new file mode 100644 index 00000000..b344a987 --- /dev/null +++ b/validationProfile.xsd @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 055452b7d6e538aa62285eb371929492d8b0f660 Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Mon, 15 Feb 2016 10:59:04 +0300 Subject: [PATCH 109/557] Converted all atomic profiles into the new view --- .../verapdf-profile-6-7-11-t03.xml | 41 +- .../verapdf-profile-6-8-2-t01.xml | 44 +- .../verapdf-profile-6-8-3-t01.xml | 44 +- .../verapdf-profile-6-8-3-t02.xml | 44 +- .../6.1 File structure/6.1 File structure.xml | 649 ++++++++---------- .../verapdf-profile-6-1-10-t01.xml | 38 +- .../verapdf-profile-6-1-10-t02.xml | 38 +- .../verapdf-profile-6-1-11-t01.xml | 44 +- .../verapdf-profile-6-1-11-t02.xml | 44 +- .../verapdf-profile-6-1-12-t01.xml | 32 +- .../verapdf-profile-6-1-12-t02.xml | 32 +- .../verapdf-profile-6-1-12-t03.xml | 32 +- .../verapdf-profile-6-1-12-t04.xml | 35 +- .../verapdf-profile-6-1-12-t05.xml | 32 +- .../verapdf-profile-6-1-12-t06.xml | 32 +- .../verapdf-profile-6-1-12-t07.xml | 32 +- .../verapdf-profile-6-1-12-t08.xml | 32 +- .../verapdf-profile-6-1-12-t09.xml | 32 +- .../verapdf-profile-6-1-12-t10.xml | 32 +- .../verapdf-profile-6-1-13-t01.xml | 38 +- .../verapdf-profile-6-1-2-t01.xml | 44 +- .../verapdf-profile-6-1-2-t02.xml | 38 +- .../verapdf-profile-6-1-3-t01.xml | 38 +- .../verapdf-profile-6-1-3-t02.xml | 39 +- .../verapdf-profile-6-1-3-t03.xml | 38 +- .../verapdf-profile-6-1-3-t04.xml | 40 +- .../verapdf-profile-6-1-4-t01.xml | 38 +- .../verapdf-profile-6-1-4-t02.xml | 38 +- .../verapdf-profile-6-1-6-t01.xml | 38 +- .../verapdf-profile-6-1-6-t02.xml | 38 +- .../verapdf-profile-6-1-7-t01.xml | 38 +- .../verapdf-profile-6-1-7-t02.xml | 38 +- .../verapdf-profile-6-1-7-t03.xml | 44 +- .../verapdf-profile-6-1-8-t01.xml | 38 +- .../verapdf-profile-6-2-10-t01.xml | 38 +- .../verapdf-profile-6-2-2-t01.xml | 44 +- .../verapdf-profile-6-2-2-t02.xml | 49 +- .../verapdf-profile-6-2-3-t01.xml | 46 +- .../verapdf-profile-6-2-3-t02.xml | 49 +- .../verapdf-profile-6-2-3-t03.xml | 49 +- .../verapdf-profile-6-2-3-t04.xml | 49 +- .../verapdf-profile-6-2-3-t05.xml | 44 +- .../verapdf-profile-6-2-4-t01.xml | 38 +- .../verapdf-profile-6-2-4-t02.xml | 43 +- .../verapdf-profile-6-2-4-t03.xml | 38 +- .../verapdf-profile-6-2-5-t01.xml | 38 +- .../verapdf-profile-6-2-6-t01.xml | 38 +- .../verapdf-profile-6-2-7-t01.xml | 38 +- .../verapdf-profile-6-2-8-t01.xml | 38 +- .../verapdf-profile-6-2-8-t02.xml | 38 +- .../verapdf-profile-6-2-9-t01.xml | 38 +- .../verapdf-profile-6-3-2-t01.xml | 59 +- .../verapdf-profile-6-3-2-t02.xml | 69 +- .../verapdf-profile-6-3-2-t03.xml | 59 +- .../verapdf-profile-6-3-2-t04.xml | 49 +- .../verapdf-profile-6-3-2-t05.xml | 49 +- .../verapdf-profile-6-3-2-t06.xml | 49 +- .../verapdf-profile-6-3-3-t01.xml | 44 +- .../verapdf-profile-6-3-3-t02.xml | 44 +- .../verapdf-profile-6-3-3-t03.xml | 44 +- .../verapdf-profile-6-3-3-t04.xml | 38 +- .../verapdf-profile-6-3-4-t01.xml | 44 +- .../verapdf-profile-6-3-5-t01.xml | 38 +- .../verapdf-profile-6-3-5-t02.xml | 44 +- .../verapdf-profile-6-3-5-t03.xml | 44 +- .../verapdf-profile-6-3-6-t01.xml | 38 +- .../verapdf-profile-6-3-7-t01.xml | 40 +- .../verapdf-profile-6-3-7-t02.xml | 40 +- .../verapdf-profile-6-3-7-t03.xml | 40 +- .../verapdf-profile-6-4-t01.xml | 38 +- .../verapdf-profile-6-4-t02.xml | 40 +- .../verapdf-profile-6-4-t03.xml | 40 +- .../verapdf-profile-6-4-t04.xml | 38 +- .../verapdf-profile-6-4-t05.xml | 38 +- .../verapdf-profile-6-4-t06.xml | 38 +- .../verapdf-profile-6-5-2-t01.xml | 50 +- .../verapdf-profile-6-5-3-t01.xml | 38 +- .../verapdf-profile-6-5-3-t02.xml | 38 +- .../verapdf-profile-6-5-3-t03.xml | 49 +- .../verapdf-profile-6-5-3-t04.xml | 40 +- .../verapdf-profile-6-6-1-t01.xml | 48 +- .../verapdf-profile-6-6-1-t02.xml | 44 +- .../verapdf-profile-6-6-1-t03.xml | 38 +- .../verapdf-profile-6-6-2-t01.xml | 38 +- .../verapdf-profile-6-6-2-t02.xml | 38 +- .../verapdf-profile-6-6-2-t03.xml | 40 +- .../6.7.11/verapdf-profile-6-7-11-t01.xml | 38 +- .../6.7.11/verapdf-profile-6-7-11-t02.xml | 41 +- .../6.7.11/verapdf-profile-6-7-11-t03.xml | 41 +- .../6.7.11/verapdf-profile-6-7-11-t04.xml | 38 +- .../6.7.11/verapdf-profile-6-7-11-t05.xml | 41 +- .../6.7.2/verapdf-profile-6-7-2-t01.xml | 38 +- .../6.7.2/verapdf-profile-6-7-2-t02.xml | 38 +- .../6.7.3/verapdf-profile-6-7-3-t01.xml | 40 +- .../6.7.5/verapdf-profile-6-7-5-t01.xml | 38 +- .../6.7.5/verapdf-profile-6-7-5-t02.xml | 38 +- .../6.7.9/verapdf-profile-6-7-9-t01.xml | 46 +- .../verapdf-profile-6-9-t01.xml | 38 +- .../verapdf-profile-6-9-t02.xml | 38 +- .../verapdf-profile-6-9-t03.xml | 38 +- .../verapdf-profile-6-1-10-t01.xml | 38 +- .../verapdf-profile-6-1-13-t01.xml | 26 +- .../verapdf-profile-6-1-13-t02.xml | 26 +- .../verapdf-profile-6-1-13-t03.xml | 26 +- .../verapdf-profile-6-1-13-t04.xml | 26 +- .../verapdf-profile-6-1-13-t07.xml | 26 +- .../verapdf-profile-6-1-13-t08.xml | 26 +- .../verapdf-profile-6-1-13-t09.xml | 26 +- .../verapdf-profile-6-1-13-t10.xml | 26 +- .../verapdf-profile-6-1-13-t11.xml | 26 +- .../verapdf-profile-6-1-2-t01.xml | 38 +- .../verapdf-profile-6-1-2-t02.xml | 38 +- .../verapdf-profile-6-1-3-t01.xml | 44 +- .../verapdf-profile-6-1-3-t02.xml | 39 +- .../verapdf-profile-6-1-3-t03.xml | 44 +- .../verapdf-profile-6-1-4-t02.xml | 38 +- .../verapdf-profile-6-1-6-t01.xml | 38 +- .../verapdf-profile-6-1-6-t02.xml | 38 +- .../verapdf-profile-6-1-7-t01.xml | 38 +- .../verapdf-profile-6-1-7-t02.xml | 38 +- .../verapdf-profile-6-1-7-t03.xml | 38 +- .../verapdf-profile-6-1-7-t04.xml | 38 +- .../verapdf-profile-6-1-8-t01.xml | 44 +- .../verapdf-profile-6-1-9-t01.xml | 38 +- .../verapdf-profile-6-2-10-t01.xml | 48 +- .../verapdf-profile-6-2-11-2-t01.xml | 59 +- .../verapdf-profile-6-2-11-2-t02.xml | 79 +-- .../verapdf-profile-6-2-11-2-t03.xml | 54 +- .../verapdf-profile-6-2-11-2-t04.xml | 49 +- .../verapdf-profile-6-2-11-2-t05.xml | 49 +- .../verapdf-profile-6-2-11-2-t06.xml | 49 +- .../verapdf-profile-6-2-11-3-t01.xml | 38 +- .../verapdf-profile-6-2-11-3-t02.xml | 44 +- .../verapdf-profile-6-2-11-3-t03.xml | 72 +- .../verapdf-profile-6-2-11-3-t04.xml | 38 +- .../verapdf-profile-6-2-11-4-t01.xml | 44 +- .../verapdf-profile-6-2-11-4-t02.xml | 38 +- .../verapdf-profile-6-2-11-4-t03.xml | 38 +- .../verapdf-profile-6-2-11-4-t04.xml | 38 +- .../verapdf-profile-6-2-11-5-t01.xml | 38 +- .../verapdf-profile-6-2-11-6-t01.xml | 38 +- .../verapdf-profile-6-2-11-6-t02.xml | 42 +- .../verapdf-profile-6-2-11-6-t03.xml | 38 +- .../verapdf-profile-6-2-11-6-t04.xml | 38 +- .../verapdf-profile-6-2-11-8-t01.xml | 38 +- .../verapdf-profile-6-2-2-t01.xml | 38 +- .../verapdf-profile-6-2-3-t01.xml | 49 +- .../verapdf-profile-6-2-3-t02.xml | 49 +- .../verapdf-profile-6-2-3-t03.xml | 44 +- .../verapdf-profile-6-2-4-t01.xml | 46 +- .../verapdf-profile-6-2-4-t02.xml | 49 +- .../verapdf-profile-6-2-4-t03.xml | 49 +- .../verapdf-profile-6-2-4-t04.xml | 49 +- .../verapdf-profile-6-2-4-t05.xml | 44 +- .../verapdf-profile-6-2-4-t06.xml | 38 +- .../verapdf-profile-6-2-5-t01.xml | 38 +- .../verapdf-profile-6-2-5-t02.xml | 38 +- .../verapdf-profile-6-2-5-t03.xml | 38 +- .../verapdf-profile-6-2-5-t04.xml | 38 +- .../verapdf-profile-6-2-5-t05.xml | 38 +- .../verapdf-profile-6-2-6-t01.xml | 38 +- .../verapdf-profile-6-2-8-t01.xml | 38 +- .../verapdf-profile-6-2-8-t02.xml | 38 +- .../verapdf-profile-6-2-8-t03.xml | 38 +- .../verapdf-profile-6-2-9-t01.xml | 38 +- .../verapdf-profile-6-2-9-t02.xml | 38 +- .../verapdf-profile-6-2-9-t03.xml | 38 +- .../verapdf-profile-6-3-1-t01.xml | 54 +- .../verapdf-profile-6-3-2-t01.xml | 38 +- .../verapdf-profile-6-3-2-t02.xml | 38 +- .../verapdf-profile-6-3-2-t03.xml | 38 +- .../verapdf-profile-6-3-3-t01.xml | 38 +- .../verapdf-profile-6-3-3-t02.xml | 38 +- .../verapdf-profile-6-4-1-t01.xml | 42 +- .../verapdf-profile-6-4-1-t02.xml | 42 +- .../verapdf-profile-6-4-1-t03.xml | 38 +- .../verapdf-profile-6-4-2-t01.xml | 38 +- .../verapdf-profile-6-4-2-t02.xml | 38 +- .../verapdf-profile-6-5-1-t01.xml | 44 +- .../verapdf-profile-6-5-1-t02.xml | 44 +- .../verapdf-profile-6-5-2-t01.xml | 40 +- .../verapdf-profile-6-5-2-t02.xml | 40 +- .../verapdf-profile-6-6-4-t02.xml | 41 +- .../verapdf-profile-6-6-4-t03.xml | 41 +- .../verapdf-profile-6-8-t01.xml | 38 +- .../verapdf-profile-6-8-t02.xml | 38 +- .../verapdf-profile-6-6-4-t02.xml | 41 +- .../verapdf-profile-6-8-t01.xml | 41 +- .../verapdf-profile-6-8-t03.xml | 38 +- 189 files changed, 4017 insertions(+), 4259 deletions(-) diff --git a/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml b/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml index 98e48f84..5a537200 100644 --- a/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml @@ -1,22 +1,23 @@ - - - ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - A Level A conforming file shall specify the value of pdfaid:conformance as A. - veraPDF Consortium - 2015-06-29T10:19:00Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + A Level A conforming file shall specify the value of pdfaid:conformance as A. +
+ - - A Level A conforming file shall specify the value of pdfaid:conformance as A. - conformance == "A" - - The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1A conforming file. - conformance - - - ISO 19005-1:2005 - 6.7.11 - - - + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. + conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1A conforming file. + + conformance + + + + +
+ diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml b/PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml index 5d7dec8f..8b9cc683 100644 --- a/PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml +++ b/PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.8.2 Tagged PDF - 6.8.2.2 Mark information dictionary - The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true - veraPDF Consortium - 2015-18-10T20:29:33Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.8.2 Tagged PDF - 6.8.2.2 Mark information dictionary + The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true +
+ - - The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true - Marked == true - - /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false - - - ISO19005-1 - 6.8.2.2 - - PDF 1.4 Reference - 9.7.1 - - - - + + + The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true + Marked == true + + /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false + + + + + + +
+ diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml b/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml index ab83db24..e251ae59 100644 --- a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml +++ b/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml @@ -1,26 +1,24 @@ - - - ISO 19005-1:2005 - 6.8.3 Artifacts - StructTreeRoot - The logical structure of the conforming file shall be described by a structure hierarchy rooted in the + + +
+ ISO 19005-1:2005 - 6.8.3 Artifacts - StructTreeRoot + 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 PDF Reference 9.6 - veraPDF Consortium - 2015-18-10T20:24:12Z - sha-1 hash code +
+ - - 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 PDF Reference 9.6 - StructTreeRoot_size == 1 - - StructTreeRoot entry is not present in the document catalog - - - ISO19005-1 - 6.8.3.3 - - PDF 1.4 Reference - 9.6.1 - - - - + + + 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 PDF Reference 9.6 + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + +
+ diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml b/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml index 9c78751c..0eb2d5d5 100644 --- a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml +++ b/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.8.3 Artifacts - Structure element type - Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem - veraPDF Consortium - 2015-18-10T20:24:12Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.8.3 Artifacts - Structure element type + Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem +
+ - - Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem - Type == "StructElem" - - Missing or invalid Type entry in the structure element dictionary - - - ISO19005-1 - 6.8.3.3 - - PDF 1.4 Reference - 9.6.1 - - - - + + + Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem + Type == "StructElem" + + Missing or invalid Type entry in the structure element dictionary + + + + + + +
+ diff --git a/PDF_A/1b/6.1 File structure/6.1 File structure.xml b/PDF_A/1b/6.1 File structure/6.1 File structure.xml index 4353851f..5946dc37 100644 --- a/PDF_A/1b/6.1 File structure/6.1 File structure.xml +++ b/PDF_A/1b/6.1 File structure/6.1 File structure.xml @@ -1,394 +1,341 @@ - - - PDF/A-1B validation profile - Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 - veraPDF Consortium - 2015-09-30T12-14-33Z+03 - sha-1 hash code + + +
+ PDF/A-1B validation profile + Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 +
+ - - The LZWDecode filter shall not be permitted - filters == null || filters.indexOf("LZWDecode") == -1 - - LZW compression is used - - - ISO19005-1 - 6.1.10 - - - - The LZWDecode filter shall not be permitted - F == null || F.indexOf("LZW") == -1 - - LZW compression is used in the inline image - - - ISO19005-1 - 6.1.10 - - - - A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF == null - - A file specification dictionary contains the EF key - - - ISO19005-1 - 6.1.7 - - PDF 1.4 Reference - 3.10.2 - - - - - A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 - - The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) - - - ISO19005-1 - 6.1.7 - - PDF 1.4 Reference - 3.6.3 - - - - - Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 - (intValue <= 2147483647) && (intValue >= -2147483648) + + + The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + pdfHeaderCompliesPDFA - Integer value out of range + File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - - Absolute real value must be less than or equal to 32767.0 - (realValue >= -32767.0) && (realValue <= 32767.0) + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword + isLengthCorrect - Real value out of range + Actual length of the stream does not match the value of the Length key in the Stream dictionary + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - + + Maximum length of a string (in bytes) is 65535 value.length() < 65536 Maximum length of a String (65535) exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - - Maximum length of a name (in bytes) is 127 - origLength <= 127 + + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 - Maximum length of a Name (127) exceeded - origLength + LZW compression is used in the inline image + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - - Maximum capacity of an array (in elements) is 8191 - size <= 8191 + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + spacingCompliesPDFA - Maximum capacity of an array (8191) exceeded + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - + + + Maximum number of DeviceN components is 8 + nrComponents <= 8 + + Maximum number of DeviceN components is exceeded + + + + + + + + + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + xrefHeaderSpacingsComplyPDFA + + Spacings of subsection headers in the cross reference table do not comply PDF/A specification + + + + + + Maximum capacity of a dictionary (in entries) is 4095 size <= 4095 Maximum capacity of a dictionary (4095) exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - - Maximum number of indirect objects in a PDF file is 8,388,607 - nrIndirects <= 8388607 + + + No data shall follow the last end-of-file marker except a single optional end-of-line marker. + eofCompliesPDFA - Maximum number of indirect objects (8,388,607) in a PDF file exceeded + Data is present after the last end-of-file marker + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - - Maximum depth of graphics state nesting by q and Q operators is 28 - nestingLevel <= 28 + + + All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f + (isHex != true) || isHexSymbols - Maximum depth of graphics state nesting (q and Q operators) is exceeded + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - - Maximum number of DeviceN components is 8 - nrComponents <= 8 + + + A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key + EF == null - Maximum number of DeviceN components is exceeded + A file specification dictionary contains the EF key + + + + + + + + + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + Last ID is present in the Linearized PDF and does not match the first page ID + + + + + + + + + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + + + Maximum length of a name (in bytes) is 127 + origLength <= 127 + + Maximum length of a Name (127) exceeded + + origLength + + + + + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + The LZWDecode filter shall not be permitted + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + - + + + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + + Missing ID in the document trailer + + + + + + + The xref keyword and the cross reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + Maximum value of a CID (character identifier) is 65,535 CID <= 65535 Maximum value of a CID (65,535) is exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - - The document catalog dictionary shall not contain a key with the name OCProperties - isOptionalContentPresent == false - - The document catalog dictionary contains the OCProperties entry - - - ISO19005-1 - 6.1.13 - - - - The % character of the file header shall occur at byte offset 0 of the file. - The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms - pdfHeaderCompliesPDFA - - File header does not start at byte offset 0 or does not correctly identify the version of the PDF document - - - ISO19005-1 - 6.1.2 - - PDF 1.4 Reference - 3.4.1 - - - - - The file header line shall be immediately followed by a comment consisting of a % character followed by at + + + Maximum depth of graphics state nesting by q and Q operators is 28 + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + + + + + + + Absolute real value must be less than or equal to 32767.0 + (realValue >= -32767.0) && (realValue <= 32767.0) + + Real value out of range + + + + + + + + + The document catalog dictionary shall not contain a key with the name OCProperties + isOptionalContentPresent == false + + The document catalog dictionary contains the OCProperties entry + + + + + + + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + + + + + + + Maximum number of indirect objects in a PDF file is 8,388,607 + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + + + + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + Hexadecimal string contains odd number of non-white-space characters + + + + + + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 + + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + + + + + + + + + The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127 - binaryHeaderComplyPDFA - - Binary comment in the file header is missing or does not comply PDF/A requirements - - - ISO19005-1 - 6.1.2 - - - - The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, - as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 - (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - - Missing ID in the document trailer - - - ISO19005-1:2005 - 6.1.3 - - - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true - - Encrypt keyword is present in the trailer dictionary - - - ISO19005-1:2005 - 6.1.3 - - - - No data shall follow the last end-of-file marker except a single optional end-of-line marker. - eofCompliesPDFA - - Data is present after the last end-of-file marker - - - ISO19005-1:2005 - 6.1.3 - - - - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - (isLinearized != true)|| lastID == null || (firstPageID == lastID) - - Last ID is present in the Linearized PDF and does not match the first page ID - - - ISO 19005-1:2005/Cor.2:2011 - 6.1.3 - - - - In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) - xrefHeaderSpacingsComplyPDFA - - Spacings of subsection headers in the cross reference table do not comply PDF/A specification - - - ISO19005-1:2005 - 6.1.4 - - - - The xref keyword and the cross reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA - - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - - - ISO19005-1:2005 - 6.1.4 - - - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 - - Hexadecimal string contains odd number of non-white-space characters - - - ISO19005-1 - 6.1.6 - - - - All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - (isHex != true) || isHexSymbols - - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - - - ISO19005-1 - 6.1.6 - - - - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file - following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword - isLengthCorrect - - Actual length of the stream does not match the value of the Length key in the Stream dictionary - - - ISO19005-1 - 6.1.7 - - - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - spacingCompliesPDFA - - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - - - ISO19005-1 - 6.1.7 - - - - A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys - F == null && FFilter == null && FDecodeParms == null - - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - - - ISO19005-1 - 6.1.7 - - - 19005-1:2005/Cor.2:2011 - 6.1.7 - - - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword - shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. - spacingCompliesPDFA - - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - ISO19005-1 - 6.1.8 - - + binaryHeaderComplyPDFA + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + Maximum capacity of an array (in elements) is 8191 + size <= 8191 + + Maximum capacity of an array (8191) exceeded + + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml index c8f629ba..5979063d 100644 --- a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.1.10 Filters - LZW - The LZWDecode filter shall not be permitted - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.10 Filters - LZW + The LZWDecode filter shall not be permitted +
+ - - The LZWDecode filter shall not be permitted - filters == null || filters.indexOf("LZWDecode") == -1 - - LZW compression is used - - - ISO19005-1 - 6.1.10 - - - + + + The LZWDecode filter shall not be permitted + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + + +
+ diff --git a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml index ff921e26..87000fc9 100644 --- a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.1.10 Filters - LZW in inline images - The LZWDecode filter shall not be permitted - veraPDF Consortium - 2015-08-20T15:37:34Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.10 Filters - LZW in inline images + The LZWDecode filter shall not be permitted +
+ - - The LZWDecode filter shall not be permitted - F == null || F.indexOf("LZW") == -1 - - LZW compression is used in the inline image - - - ISO19005-1 - 6.1.10 - - - + + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 + + LZW compression is used in the inline image + + + + +
+ diff --git a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml index 3dc8b088..3e4fc954 100644 --- a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.11 Embedded files - File specification dictionary - A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - veraPDF Consortium - 2015-09-25T11:38:11Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.11 Embedded files - File specification dictionary + A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key +
+ - - A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 - - A file specification dictionary contains the EF key - - - ISO19005-1 - 6.1.11 - - PDF 1.4 Reference - 3.10.2 - - - - + + + A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key + EF_size == 0 + + A file specification dictionary contains the EF key + + + + + + +
+ diff --git a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml index 00fa3252..98cf6e8f 100644 --- a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.11 Embedded files - EmbeddedFiles tree - A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - veraPDF Consortium - 2015-07-14T16:52:37Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.11 Embedded files - EmbeddedFiles tree + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key +
+ - - A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 - - The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) - - - ISO19005-1 - 6.1.11 - - PDF 1.4 Reference - 3.6.3 - - - - + + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 + + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + + + + + + +
+ diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml index 6952a9ca..8fe5ae01 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.12 Implementation limits - Integer - Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Integer + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 +
+ - + + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 (intValue <= 2147483647) && (intValue >= -2147483648) Integer value out of range + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - +
+ diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml index 01d64ef6..61ba54a4 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.12 Implementation limits - Real - Largest and smallest real values are +/-32767.0 - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Real + Largest and smallest real values are +/-32767.0 +
+ - + + Absolute real value must be less than or equal to 32767.0 (realValue >= -32767.0) && (realValue <= 32767.0) Real value out of range + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - +
+ diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml index 13ff5aec..f908d1f7 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.12 Implementation limits - String - Maximum length of a string (in bytes) is 65535 - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - String + Maximum length of a string (in bytes) is 65535 +
+ - + + Maximum length of a string (in bytes) is 65535 value.length() < 65536 Maximum length of a String (65535) exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml index 22617796..37ea336f 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml @@ -1,26 +1,25 @@ - - - ISO 19005-1:2005 - 6.1.12 Implementation limits - Name - Maximum length of a name (in bytes) is 127 - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Name + Maximum length of a name (in bytes) is 127 +
+ - + + Maximum length of a name (in bytes) is 127 internalRepresentation.length() <= 127 Maximum length of a Name (127) exceeded - internalRepresentation.length() + + internalRepresentation.length() + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml index 77a2c8b7..bd9d251b 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.12 Implementation limits - Array - Maximum capacity of an array (in elements) is 8191 - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Array + Maximum capacity of an array (in elements) is 8191 +
+ - + + Maximum capacity of an array (in elements) is 8191 size <= 8191 Maximum capacity of an array (8191) exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml index dac8ce02..9ef2e961 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.12 Implementation limits - Dictionary - Maximum capacity of a dictionary (in entries) is 4095 - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Dictionary + Maximum capacity of a dictionary (in entries) is 4095 +
+ - + + Maximum capacity of a dictionary (in entries) is 4095 size <= 4095 Maximum capacity of a dictionary (4095) exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml index 54f8bb47..83e59ee5 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.12 Implementation limits - Indirect obejcts - Maximum number of indirect objects in a PDF file is 8,388,607 - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Indirect obejcts + Maximum number of indirect objects in a PDF file is 8,388,607 +
+ - + + Maximum number of indirect objects in a PDF file is 8,388,607 nrIndirects <= 8388607 Maximum number of indirect objects (8,388,607) in a PDF file exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml index 309af981..022a2045 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.12 Implementation limits - Graphics state nesting - Maximum depth of graphics state nesting by q and Q operators is 28 - veraPDF Consortium - 2015-08-20T12:21:56Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - Graphics state nesting + Maximum depth of graphics state nesting by q and Q operators is 28 +
+ - + + Maximum depth of graphics state nesting by q and Q operators is 28 nestingLevel <= 28 Maximum depth of graphics state nesting (q and Q operators) is exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml index c8c75015..47538554 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.12 Implementation limits - DeviceN components - Maximum number of DeviceN components is 8 - veraPDF Consortium - 2015-08-20T12:14:23Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - DeviceN components + Maximum number of DeviceN components is 8 +
+ - + + Maximum number of DeviceN components is 8 nrComponents <= 8 Maximum number of DeviceN components is exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml index a4266cbb..46bebd1a 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.12 Implementation limits - CID - Maximum value of a CID (character identifier) is 65,535 - veraPDF Consortium - 2015-08-20T14:48:51Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.12 Implementation limits - CID + Maximum value of a CID (character identifier) is 65,535 +
+ - + + Maximum value of a CID (character identifier) is 65,535 CID <= 65535 Maximum value of a CID (65,535) is exceeded + - - ISO19005-1 - 6.1.12 - - PDF Reference 1.4 - Table C.1 - - + + + - + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.13 Optional content/verapdf-profile-6-1-13-t01.xml b/PDF_A/1b/6.1 File structure/6.1.13 Optional content/verapdf-profile-6-1-13-t01.xml index dd2aa72d..49612314 100644 --- a/PDF_A/1b/6.1 File structure/6.1.13 Optional content/verapdf-profile-6-1-13-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.13 Optional content/verapdf-profile-6-1-13-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.1.13 Optional content - The document catalog dictionary shall not contain a key with the name OCProperties - veraPDF Consortium - 2015-07-14T17:40:19Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.13 Optional content + The document catalog dictionary shall not contain a key with the name OCProperties +
+ - - The document catalog dictionary shall not contain a key with the name OCProperties - isOptionalContentPresent == false - - The document catalog dictionary contains the OCProperties entry - - - ISO19005-1 - 6.1.13 - - - + + + The document catalog dictionary shall not contain a key with the name OCProperties + isOptionalContentPresent == false + + The document catalog dictionary contains the OCProperties entry + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml index 160259c3..e2f60b15 100644 --- a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -1,27 +1,25 @@ - - - ISO 19005-1:2005 - 6.1.2 File header - PDF header - The % character of the file header shall occur at byte offset 0 of the file. + + +
+ ISO 19005-1:2005 - 6.1.2 File header - PDF header + The % character of the file header shall occur at byte offset 0 of the file. The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code +
+ - - The % character of the file header shall occur at byte offset 0 of the file. + + + The % character of the file header shall occur at byte offset 0 of the file. The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms - headerOffset == 0 && /%PDF-\d\.\d/.test(header) - - File header does not start at byte offset 0 or does not correctly identify the version of the PDF document - - - ISO19005-1 - 6.1.2 - - PDF 1.4 Reference - 3.4.1 - - - - + headerOffset == 0 && /%PDF-\d\.\d/.test(header) + + File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + + + + + +
+ + diff --git a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml index 6bbd2b4a..17a5dbdf 100644 --- a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml @@ -1,23 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.2 File header - Binary comment - The file header line shall be immediately followed by a comment consisting of a % character followed by at + + +
+ ISO 19005-1:2005 - 6.1.2 File header - Binary comment + The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127 - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code +
+ - - The file header line shall be immediately followed by a comment consisting of a % character followed by at + + + The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127 - headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - - Binary comment in the file header is missing or does not comply PDF/A requirements - - - ISO19005-1 - 6.1.2 - - - + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index aa49ef06..d1afb43d 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -1,22 +1,22 @@ - - - ISO 19005-1:2005 - 6.1.3 File trailer - ID keyword - The file trailer dictionary shall contain the ID keyword - veraPDF Consortium - 2015-06-02T13:22:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.3 File trailer - ID keyword + The file trailer dictionary shall contain the ID keyword +
+ - - The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + + + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 - (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - - Missing ID in the document trailer - - - ISO19005-1:2005 - 6.1.3 - - - + (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + + Missing ID in the document trailer + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml index 94a5450d..187d4e5c 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml @@ -1,22 +1,21 @@ - - - ISO 19005-1:2005 - 6.1.3 File trailer - Encrypt - The keyword Encrypt shall not be used in the trailer dictionary - veraPDF Consortium - 2015-06-02T13:22:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.3 File trailer - Encrypt + The keyword Encrypt shall not be used in the trailer dictionary +
+ - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true - - Encrypt keyword is present in the trailer dictionary - - - ISO19005-1:2005 - 6.1.3 - - - + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + + + +
- diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml index 9bfdb724..3df8b347 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.1.3 File trailer - EOF - No data shall follow the last end-of-file marker except a single optional end-of-line marker. - veraPDF Consortium - 2015-06-02T13:38:12Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.3 File trailer - EOF + No data shall follow the last end-of-file marker except a single optional end-of-line marker. +
+ - - No data shall follow the last end-of-file marker except a single optional end-of-line marker. - postEOFDataSize == 0 - - Data is present after the last end-of-file marker - - - ISO19005-1:2005 - 6.1.3 - - - + + + No data shall follow the last end-of-file marker except a single optional end-of-line marker. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml index c350d439..164cd596 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml @@ -1,23 +1,25 @@ - - - ISO 19005-1:2005 - 6.1.3 File trailer - Linearized PDF - Matching IDs - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + + +
+ ISO 19005-1:2005 - 6.1.3 File trailer - Linearized PDF - Matching IDs + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - veraPDF Consortium - 2015-06-02T13:48:12Z - sha-1 hash code +
+ - - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + + + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - (isLinearized != true)|| lastID == null || (firstPageID == lastID) - - Last ID is present in the Linearized PDF and does not match the first page ID - - - ISO 19005-1:2005/Cor.2:2011 - 6.1.3 - - - + (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + Last ID is present in the Linearized PDF and does not match the first page ID + + + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml index 36759d18..09b12ca1 100644 --- a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.1.4 Cross reference table - Spacings of subsection headers - In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) - veraPDF Consortium - 2015-06-04T09:22:03Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.4 Cross reference table - Spacings of subsection headers + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) +
+ - - In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) - subsectionHeaderSpaceSeparated == true - - Spacings of subsection headers in the cross reference table do not comply PDF/A specification - - - ISO19005-1:2005 - 6.1.4 - - - + + + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + subsectionHeaderSpaceSeparated == true + + Spacings of subsection headers in the cross reference table do not comply PDF/A specification + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml index a4412284..9b6af6c6 100644 --- a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.1.4 Cross reference table - Spacings after xref - The xref keyword and the cross reference subsection header shall be separated by a single EOL marker - veraPDF Consortium - 2015-06-04T09:28:51Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.4 Cross reference table - Spacings after xref + The xref keyword and the cross reference subsection header shall be separated by a single EOL marker +
+ - - The xref keyword and the cross reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA - - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - - - ISO19005-1:2005 - 6.1.4 - - - + + + The xref keyword and the cross reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml index f4462380..ef2a8397 100644 --- a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.1.2 String objects - Even number of characters - Hexadecimal strings shall contain an even number of non-white-space characters - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.2 String objects - Even number of characters + Hexadecimal strings shall contain an even number of non-white-space characters +
+ - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 - - Hexadecimal string contains odd number of non-white-space characters - - - ISO19005-1 - 6.1.6 - - - + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + Hexadecimal string contains odd number of non-white-space characters + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml index 585e3090..e7d8c4de 100644 --- a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.1.2 String objects - Characters range - All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.2 String objects - Characters range + All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f +
+ - - All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - (isHex != true) || containsOnlyHex - - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - - - ISO19005-1 - 6.1.6 - - - + + + All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml index 1d4b226b..bafec872 100644 --- a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.7 Stream objects - Correct Length - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + + +
+ ISO 19005-1:2005 - 6.1.7 Stream objects - Correct Length + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code +
+ - - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword - isLengthCorrect - - Actual length of the stream does not match the value of the Length key in the Stream dictionary - - - ISO19005-1 - 6.1.7 - - - + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml index a4cc3fb3..31d659ef 100644 --- a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml @@ -1,23 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.7 Stream objects - Keywords spacing - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + + +
+ ISO 19005-1:2005 - 6.1.7 Stream objects - Keywords spacing + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code +
+ - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - - - ISO19005-1 - 6.1.7 - - - + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml index bd07abee..34a3a72d 100644 --- a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml +++ b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.1.7 Stream objects - File specification - A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys - veraPDF Consortium - 2015-07-14T16:16:22Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.1.7 Stream objects - File specification + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys +
+ - - A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys - F == null && FFilter == null && FDecodeParms == null - - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - - - ISO19005-1 - 6.1.7 - - - 19005-1:2005/Cor.2:2011 - 6.1.7 - - - + + + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + +
diff --git a/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml index 070c89f4..cffcb845 100644 --- a/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml @@ -1,25 +1,25 @@ - - - ISO 19005-1:2005 - 6.1.8 Indirect objects - Spacings - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + + +
+ ISO 19005-1:2005 - 6.1.8 Indirect objects - Spacings + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. - veraPDF Consortium - 2015-05-8T15:46:15Z - sha-1 hash code +
+ - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. - spacingCompliesPDFA - - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - ISO19005-1 - 6.1.8 - - - + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml index 4442f8fd..2a9e2574 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-1:2005 - 6.2.10 Content streams - A content stream shall not contain any operators not defined in PDF Reference + + +
+ ISO 19005-1:2005 - 6.2.10 Content streams + A content stream shall not contain any operators not defined in PDF Reference even if such operators are bracketed by the BX/EX compatibility operators - veraPDF Consortium - 2015-06-23T22:35:56Z - sha-1 hash code +
+ - - A content stream shall not contain any operators not defined in PDF Reference + + + A content stream shall not contain any operators not defined in PDF Reference even if such operators are bracketed by the BX/EX compatibility operators - false - - A content stream contains an operator not defined in PDF Reference - - - ISO19005-1 - 6.2.10 - - - + false + + A content stream contains an operator not defined in PDF Reference + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml index 916e1683..1cb3b4c1 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml @@ -1,27 +1,25 @@ - - - ISO 19005-1:2005 - 6.2.2 Output intent - Valid ICC output profile - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + + +
+ ISO 19005-1:2005 - 6.2.2 Output intent - Valid ICC output profile + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - veraPDF Consortium - 2015-06-15T21:52:15Z - sha-1 hash code +
+ - - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + + + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 - - The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information - - - ISO19005-1 - 6.2.2 - - PDF 1.4 Reference - 9.4.10 - - - - + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 + + The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information + + + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml index a916493c..adbf4ae3 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml @@ -1,29 +1,28 @@ - - - ISO 19005-1:2005 - 6.2.2 Output intent - Matching multiple output profiles - If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + + +
+ ISO 19005-1:2005 - 6.2.2 Output intent - Matching multiple output profiles + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - veraPDF Consortium - 2015-06-15T22:26:37Z - sha-1 hash code +
+ - - If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + + + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - - - ISO19005-1 - 6.2.2 - - - - - - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect - - + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + + null + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml index ace625e0..39e6c892 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml @@ -1,26 +1,24 @@ - - - ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.2 ICCBased colour spaces - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - veraPDF Consortium - 2015-06-15T22:36:27Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.2 ICCBased colour spaces + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 +
+ - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 - - The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements - - - ISO19005-1 - 6.2.3 - - PDF 1.4 Reference - 4.5.4, ICCBased Color Spaces - - - - + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements + + + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml index ce82dc5b..42a21930 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml @@ -1,27 +1,26 @@ - - - ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceRGB - DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space - veraPDF Consortium - 2015-06-15T22:46:23Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceRGB + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space +
+ - - DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space - gOutputCS != null && gOutputCS == "RGB " - - DeviceRGB colour space is used without RGB output intent profile - - - ISO19005-1 - 6.2.3.3 - - - - - - null - S == "GTS_PDFA1" ? colorSpace : gOutputCS - - + + + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml index 886e64af..7990c0c3 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml @@ -1,27 +1,26 @@ - - - ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceCMYK - DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space - veraPDF Consortium - 2015-06-15T22:46:23Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceCMYK + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space +
+ - - DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space - gOutputCS != null && gOutputCS == "CMYK" - - DeviceCMYK colour space is used without CMYK output intent profile - - - ISO19005-1 - 6.2.3.3 - - - - - - null - colorSpace - - + + + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + + null + colorSpace + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t04.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t04.xml index 2fd0e2b1..be1fc904 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t04.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t04.xml @@ -1,27 +1,26 @@ - - - ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceGray - If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 - veraPDF Consortium - 2015-07-14T17:24:18Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.3 Uncalibrated colour spaces - DeviceGray + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 +
+ - - If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 - gOutputCS != null - - DeviceGray colour space is used without output intent profile - - - ISO19005-1 - 6.2.3.3 - - - - - - null - S == "GTS_PDFA1" ? colorSpace : gOutputCS - - + + + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml index 1abd71d9..fe84ea45 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml @@ -1,29 +1,27 @@ - - - ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.2 ICCBased colour spaces - N key - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + + +
+ ISO 19005-1:2005 - 6.2.3 Colour Spaces - 6.2.3.2 ICCBased colour spaces - N key + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 - veraPDF Consortium - 2015-07-14T10:18:39Z - sha-1 hash code +
+ - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) - - The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile - - - ISO19005-1 - 6.2.3.2 - - PDF 1.4 Reference - 4.5.4, Table 4.16 - - - - + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile + + + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml index 685ba28c..65c33d4d 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.2.4 Images - Alternates - - veraPDF Consortium - 2015-06-16T22:22:45Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.4 Images - Alternates + +
+ - - An Image dictionary shall not contain the Alternates key - Alternates_size == 0 - - Alternates key is present in the Image dictionary( - - - ISO19005-1 - 6.2.4 - - - + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml index 6d3dceb3..7df73363 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml @@ -1,26 +1,21 @@ - - - ISO 19005-1:2005 - 6.2.4 Images - OPI - - veraPDF Consortium - 2015-06-16T22:29:21Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.4 Images - OPI + +
+ - - An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 - - OPI key is present in the XObject dictionary( - - - ISO19005-1 - 6.2.4 - - - ISO19005-1 - 6.2.5 - - - - + + + An XObject dictionary (Image or Form) shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml index c4268fdd..51467ac2 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.2.4 Images - Interpolate - - veraPDF Consortium - 2015-06-16T22:25:35Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.4 Images - Interpolate + +
+ - - If an Image dictionary contains the Interpolate key, its value shall be false - Interpolate == false - - The value of the Interpolate key in the Image dictionary is true - - - ISO19005-1 - 6.2.4 - - - + + + If an Image dictionary contains the Interpolate key, its value shall be false + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml index 4afa7030..754b7dcf 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.2.5 Form XObjects - PS - A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - veraPDF Consortium - 2015-06-16T22:24:12Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.5 Form XObjects - PS + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key +
+ - - A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 - - The form XObject dictionary contains a PS key or Subtype2 key with value PS - - - ISO19005-1 - 6.2.5 - - - + + + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + + The form XObject dictionary contains a PS key or Subtype2 key with value PS + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml index 62db12dc..f843774d 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.2.6 Reference XObjects - A conforming file shall not contain any reference XObjects - veraPDF Consortium - 2015-06-16T22:57:07Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.6 Reference XObjects + A conforming file shall not contain any reference XObjects +
+ - - A conforming file shall not contain any reference XObjects - Ref_size == 0 - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - ISO19005-1 - 6.2.6 - - - + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.7 PostScript XObjects/verapdf-profile-6-2-7-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.7 PostScript XObjects/verapdf-profile-6-2-7-t01.xml index d7f47f2d..13963179 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.7 PostScript XObjects/verapdf-profile-6-2-7-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.7 PostScript XObjects/verapdf-profile-6-2-7-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.2.7 PostScript XObjects - A conforming file shall not contain any PostScript XObjects - veraPDF Consortium - 2015-06-16T23:04:24Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.7 PostScript XObjects + A conforming file shall not contain any PostScript XObjects +
+ - - A conforming file shall not contain any PostScript XObjects - Subtype != "PS" - - The document contains a PostScript XObject - - - ISO19005-1 - 6.2.7 - - - + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t01.xml index 739cade0..46022621 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.2.8 Extended graphics state - TR key - An ExtGState dictionary shall not contain the TR key - veraPDF Consortium - 2015-06-23T21:28:29Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.8 Extended graphics state - TR key + An ExtGState dictionary shall not contain the TR key +
+ - - An ExtGState dictionary shall not contain the TR key - TR == null - - An ExtGState dictionary contains the TR key - - - ISO19005-1 - 6.2.8 - - - + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml index 7194ece8..bb43043a 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.2.8 Extended graphics state - TR2 key - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - veraPDF Consortium - 2015-06-23T21:34:12Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.2.8 Extended graphics state - TR2 key + An ExtGState dictionary shall not contain the TR2 key with a value other than Default +
+ - - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" - - An ExtGState dictionary contains the TR2 key with a value other than Default - - - ISO19005-1 - 6.2.8 - - - + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + + + +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml index 4c238753..e02d6041 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-1:2005 - 6.2.9 Rendering intents - Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + + +
+ ISO 19005-1:2005 - 6.2.9 Rendering intents + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - veraPDF Consortium - 2015-06-23T22:35:56Z - sha-1 hash code +
+ - - Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + + + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - - A rendering intent with non-standard value is used - - - ISO19005-1 - 6.2.9 - - - + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + + A rendering intent with non-standard value is used + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml index 1bcadad9..e35b3ec1 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml @@ -1,39 +1,28 @@ - - - ISO 19005-1:2005 - 6.3.2 Font types - Type entry - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + + +
+ ISO 19005-1:2005 - 6.3.2 Font types - Type entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - veraPDF Consortium - 2015-07-04T11:07:38Z - sha-1 hash code +
+ - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" - - A Font dictionary has missing or invalid Type entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - - + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml index fa333b13..2b9d59a8 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml @@ -1,42 +1,31 @@ - - - ISO 19005-1:2005 - 6.3.2 Font types - Subtype entry - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - veraPDF Consortium - 2015-07-04T11:07:38Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.3.2 Font types - Subtype entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts +
+ - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - - A Font dictionary has missing or invalid Subtype entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - - + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml index 5e4c072e..d9db8bf0 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t03.xml @@ -1,39 +1,28 @@ - - - ISO 19005-1:2005 - 6.3.2 Font types - BaseFont entry - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + + +
+ ISO 19005-1:2005 - 6.3.2 Font types - BaseFont entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font - veraPDF Consortium - 2015-07-04T11:26:11Z - sha-1 hash code +
+ - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null - - A BaseFont entry is missing or has invalid type - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - PDF 1.4 Reference - 5.6.5 - Table 5.17 - - - - + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t04.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t04.xml index d5520970..a5bee562 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t04.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t04.xml @@ -1,31 +1,26 @@ - - - ISO 19005-1:2005 - 6.3.2 Font types - FirstChar entry - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + + +
+ ISO 19005-1:2005 - 6.3.2 Font types - FirstChar entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - veraPDF Consortium - 2015-07-04T11:26:11Z - sha-1 hash code +
+ - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || FirstChar != null - - A non-standard simple font dictionary has missing or invalid FirstChar entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml index f3966a4f..f9d777ff 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml @@ -1,31 +1,26 @@ - - - ISO 19005-1:2005 - 6.3.2 Font types - LastChat entry - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + + +
+ ISO 19005-1:2005 - 6.3.2 Font types - LastChat entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array - veraPDF Consortium - 2015-07-04T11:49:54Z - sha-1 hash code +
+ - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || LastChar != null - - A non-standard simple font dictionary has missing or invalid LastChar entry - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml index 83d0b9bd..0217615e 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml @@ -1,31 +1,26 @@ - - - ISO 19005-1:2005 - 6.3.2 Font types - Widths entry - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + + +
+ ISO 19005-1:2005 - 6.3.2 Font types - Widths entry + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - veraPDF Consortium - 2015-07-04T11:55:44Z - sha-1 hash code +
+ - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - - Widths array is missing or has invalid size - - - ISO19005-1 - 6.3.2 - - PDF 1.4 Reference - 5.5.1 - Table 5.8 - - - PDF 1.4 Reference - 5.5.4 - Table 5.9 - - - - + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml index ed7d38b8..18f6b53c 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml @@ -1,27 +1,25 @@ - - - ISO 19005-1:2005 - 6.3.3 Composite fonts - Registry and Ordering - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + + +
+ ISO 19005-1:2005 - 6.3.3 Composite fonts - Registry and Ordering + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible - veraPDF Consortium - 2015-07-04T12:13:03Z - sha-1 hash code +
+ - - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + + + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible - areRegistryOrderingCompatible == true - - Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - ISO19005-1 - 6.3.3.1 - - PDF 1.4 Reference - 5.6.2 - - - - + areRegistryOrderingCompatible == true + + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml index 3f0ca696..d36165f1 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml @@ -1,27 +1,25 @@ - - - ISO 19005-1:2005 - 6.3.3 Composite fonts - CIDToGIDMap - For all Type 2 CIDFonts, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping + + +
+ ISO 19005-1:2005 - 6.3.3 Composite fonts - CIDToGIDMap + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 - veraPDF Consortium - 2015-07-04T12:20:18Z - sha-1 hash code +
+ - - For all Type 2 CIDFonts, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping + + + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 - Subtype != "CIDFontType2" || CIDToGIDMap != null - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - ISO19005-1 - 6.3.3.2 - - PDF 1.4 Reference - 5.6.3 - Table 5.13 - - - - + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t03.xml index 371f045a..fcc85a05 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t03.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.3.3 Composite fonts - CMaps - All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 - veraPDF Consortium - 2015-07-04T12:37:11Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.3.3 Composite fonts - CMaps + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 +
+ - - All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 - CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 - - A CMap is different from "Identity-H" or "Identity-V" and is not embedded - - - ISO19005-1 - 6.3.3.3 - - PDF 1.4 Reference - 5.6.4 - - - - + + + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + A CMap is different from "Identity-H" or "Identity-V" and is not embedded + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t04.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t04.xml index df592543..b8f922e6 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t04.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t04.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.3.3 Composite fonts - WMode - 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 - veraPDF Consortium - 2015-10-18T19:57:23Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.3.3 Composite fonts - WMode + 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 +
+ - - 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 - WMode == dictWMode - - WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - ISO19005-1 - 6.3.3.3 - - - + + + 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 + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml index 664e723b..a8cb9aae 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml @@ -1,27 +1,25 @@ - - - ISO 19005-1:2005 - 6.3.4 Embedded font programs - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + + +
+ ISO 19005-1:2005 - 6.3.4 Embedded font programs + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 - veraPDF Consortium - 2015-07-04T12:43:21Z - sha-1 hash code +
+ - - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + + + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - - The font program is not embedded - - - ISO19005-1 - 6.3.4 - - PDF 1.4 Reference - 5.8 - - - - + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml index 5151d0db..169fd7b4 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.3.5 Font subsets - Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - veraPDF Consortium - 2015-07-04T12:55:42Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.3.5 Font subsets + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file +
+ - - Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - ISO19005-1 - 6.3.5 - - - + + + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml index 7f3dbb0f..3a6c638a 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml @@ -1,27 +1,25 @@ - - - ISO 19005-1:2005 - 6.3.5 Font subsets - CharSet entry in Type1 subsets - For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + + +
+ ISO 19005-1:2005 - 6.3.5 Font subsets - CharSet entry in Type1 subsets + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - veraPDF Consortium - 2015-09-01T18:25:27Z - sha-1 hash code +
+ - - For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + + + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null - - A Type1 font subset does not define CharSet entry in its Descriptor dictionary - - - ISO19005-1 - 6.3.5 - - PDF 1.4 Reference - 5.5.3 - - - - + fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null + + A Type1 font subset does not define CharSet entry in its Descriptor dictionary + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml index 9808a0ab..ce56fba7 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml @@ -1,27 +1,25 @@ - - - ISO 19005-1:2005 - 6.3.5 Font subsets - CIDSet entry in CID Font subsets - For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + + +
+ ISO 19005-1:2005 - 6.3.5 Font subsets - CIDSet entry in CID Font subsets + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - veraPDF Consortium - 2015-09-01T18:29:02Z - sha-1 hash code +
+ - - For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + + + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 - - A CID Font subset does not define CIDSet entry in its Descriptor dictionary - - - ISO19005-1 - 6.3.5 - - PDF 1.4 Reference - 5.5.3 - - - - + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml index e457bebc..15a2d406 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-1:2005 - 6.3.6 Font metrics - For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + + +
+ ISO 19005-1:2005 - 6.3.6 Font metrics + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the font dictionary and in the embedded font program shall be consistent - veraPDF Consortium - 2015-07-04T12:58:33Z - sha-1 hash code +
+ - - For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + + + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the font dictionary and in the embedded font program shall be consistent - isWidthConsistent == true - - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - ISO19005-1 - 6.3.6 - - - + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml index 74d0eaa2..7b7542b6 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml @@ -1,25 +1,27 @@ - - - ISO 19005-1:2005 - 6.3.7 Character encodings - Non-symbolic TrueType fonts - All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + + +
+ ISO 19005-1:2005 - 6.3.7 Character encodings - Non-symbolic TrueType fonts + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - veraPDF Consortium - 2015-08-25T11:25:12Z - sha-1 hash code +
+ - - All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + + + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - - A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") + + A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml index abc7515a..40edb86b 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml @@ -1,21 +1,23 @@ - - - ISO 19005-1:2005 - 6.3.7 Character encodings - Symbolic TrueType fonts - All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary - veraPDF Consortium - 2015-08-25T11:29:32Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.3.7 Character encodings - Symbolic TrueType fonts + All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary +
+ - - All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - + + + All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml index fea7e295..eb4ac718 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml @@ -1,21 +1,23 @@ - - - ISO 19005-1:2005 - 6.3.7 Character encodings - Number of cmaps in the symbolic TrueType font program - Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding - veraPDF Consortium - 2015-08-25T11:33:12Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.3.7 Character encodings - Number of cmaps in the symbolic TrueType font program + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding +
+ - - Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding - isSymbolic == false || nrCmaps == 1 - - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - ISO19005-1:2005/Cor.2:2011 - 6.3.7 - - - + + + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + isSymbolic == false || nrCmaps == 1 + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + + +
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml index c873070b..66d42bbc 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.4 Transparency - SMask - If an SMask key appears in an ExtGState dictionary, its value shall be None - veraPDF Consortium - 2015-06-23T22:56:38Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.4 Transparency - SMask + If an SMask key appears in an ExtGState dictionary, its value shall be None +
+ - - If an SMask key appears in an ExtGState dictionary, its value shall be None - SMask == null || SMask == "None" - - An ExtGState contains SMask key with a value other than None - - - ISO19005-1 - 6.4 - - - + + + If an SMask key appears in an ExtGState dictionary, its value shall be None + SMask == null || SMask == "None" + + An ExtGState contains SMask key with a value other than None + + + + + +
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml index 356f2f57..a4d041a8 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml @@ -1,21 +1,23 @@ - - - ISO 19005-1:2005 - 6.4 Transparency - SMask - An XObject dictionary shall not contain the SMask key - veraPDF Consortium - 2015-06-24T10:23:11Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.4 Transparency - SMask + An XObject dictionary shall not contain the SMask key +
+ - - An XObject dictionary shall not contain the SMask key - SMask_size == 0 - - An XObject contains an SMask key - - - ISO19005-1:2005/Cor.2:2011 - 6.4 - - - + + + An XObject dictionary shall not contain the SMask key + SMask_size == 0 + + An XObject contains an SMask key + + + + + + + +
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml index d3c315c8..ca2d43c5 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml @@ -1,23 +1,25 @@ - - - ISO 19005-1:2005 - 6.4 Transparency - Transparency group - A Group object with an S key with a value of Transparency shall not be included in a form XObject. + + +
+ ISO 19005-1:2005 - 6.4 Transparency - Transparency group + A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionary - veraPDF Consortium - 2015-06-24T10:32:19Z - sha-1 hash code +
+ - - A Group object with an S key with a value of Transparency shall not be included in a form XObject. + + + A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionary - S != "Transparency" - - A transparency group is present in a form XObject or page dictionary - - - ISO19005-1:2005/Cor.2:2011 - 6.4 - - - + S != "Transparency" + + A transparency group is present in a form XObject or page dictionary + + + + + + + +
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml index 6fdeaf4b..17efcb14 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.4 Transparency - Blend mode - The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible - veraPDF Consortium - 2015-06-24T10:44:51Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.4 Transparency - Blend mode + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible +
+ - - The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible - BM == null || BM == "Normal" || BM == "Compatible" - - An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible - - - ISO19005-1 - 6.4 - - - + + + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible + BM == null || BM == "Normal" || BM == "Compatible" + + An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible + + + + + +
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml index 7183bfd8..d77b14c6 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.4 Transparency - Stroke alpha - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - veraPDF Consortium - 2015-06-24T10:50:27Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.4 Transparency - Stroke alpha + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 +
+ - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 - - An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 - - - ISO19005-1 - 6.4 - - - + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 + + An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 + + + + + +
diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml index ac18340c..f7c736d0 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.4 Transparency - Fill alpha - The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0 - veraPDF Consortium - 2015-06-24T10:51:13Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.4 Transparency - Fill alpha + The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0 +
+ - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 - - An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 - - - ISO19005-1 - 6.4 - - - + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 + + An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 + + + + + +
diff --git a/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml b/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml index 145452ef..5c9ced52 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml @@ -1,30 +1,28 @@ - - - ISO 19005-1:2005 - 6.5.2 Annotation types - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + + +
+ ISO 19005-1:2005 - 6.5.2 Annotation types + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, Sound and Movie types shall not be permitted - veraPDF Consortium - 2015-06-30T22:56:18Z - sha-1 hash code +
+ - - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + + + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" - - Unknown or not permitted annotation type - - - ISO19005-1 - 6.5.2 - - PDF 1.4 Reference - 8.4.5 - - - - + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" + + Unknown or not permitted annotation type + + + + + + + +
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml index 91e4e8a8..6eb66b6a 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Transparency - An annotation dictionary shall not contain the CA key with a value other than 1.0 - veraPDF Consortium - 2015-06-30T23:12:45Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Transparency + An annotation dictionary shall not contain the CA key with a value other than 1.0 +
+ - - An annotation dictionary shall not contain the CA key with a value other than 1.0 - CA == null || CA == 1.0 - - An annotation dictionary contains the CA key with value other than 1.0 - - - ISO19005-1 - 6.5.3 - - - + + + An annotation dictionary shall not contain the CA key with a value other than 1.0 + CA == null || CA == 1.0 + + An annotation dictionary contains the CA key with value other than 1.0 + + + + + +
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml index d183f68e..0ecb1521 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml @@ -1,23 +1,23 @@ - - - ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Flags - An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + + +
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Flags + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, Invisible and NoView flag bits shall be set to 0 - veraPDF Consortium - 2015-06-30T23:19:34Z - sha-1 hash code +
+ - - An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + + + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, Invisible and NoView flag bits shall be set to 0 - F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - - Annotation flags are either missing or have forbidden values - - - ISO19005-1 - 6.5.3 - - - + F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 + + Annotation flags are either missing or have forbidden values + + + + + +
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml index 0ac8a710..d16fd06e 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml @@ -1,29 +1,28 @@ - - - ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - RGB color - An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + + +
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - RGB color + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - veraPDF Consortium - 2015-06-30T23:41:04Z - sha-1 hash code +
+ - - An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + + + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - - Annotation's color or interior color is used without specifying RGB-based destination output profile - - - ISO19005-1 - 6.5.3 - - - - - - null - colorSpace - - + (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + + Annotation's color or interior color is used without specifying RGB-based destination output profile + + + + + + + + null + colorSpace + +
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml index f645a759..faee698f 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml @@ -1,25 +1,27 @@ - - - ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + + +
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. - veraPDF Consortium - 2015-06-30T23:44:18Z - sha-1 hash code +
+ - - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) - - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - - - ISO19005-1/Cor.2:2011 - 6.5.3 - - - + AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + + +
diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml index 01e14fd7..44d55743 100644 --- a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -1,31 +1,25 @@ - - - ISO 19005-1:2005 - 6.6.1 Actions General - Action types - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op + + +
+ ISO 19005-1:2005 - 6.6.1 Actions General - Action types + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) - veraPDF Consortium - 2015-07-01T00:08:33Z - sha-1 hash code +
+ - - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + + + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) - S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - - Unknown or not permitted action type - - - ISO19005-1 - 6.6.1 - - PDF 1.4 Reference - 8.5.3 - Table 8.34 - - - - ISO19005-1:2005/Cor.2:2011 - 6.6.1 - - - + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + + + + + +
diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml index 7c61aaf9..97e7d166 100644 --- a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml @@ -1,25 +1,23 @@ - - - ISO 19005-1:2005 - 6.6.1 Actions General - Named actions - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted - veraPDF Consortium - 2015-07-01T00:08:33Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.6.1 Actions General - Named actions + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted +
+ - - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - - Unknown or not permitted action type - - - ISO19005-1 - 6.6.1 - - PDF 1.4 Reference - 8.5.3 - Named Actions - Table 8.45 - - - - + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted action type + + + + + + + +
diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml index e3166d7e..044201fc 100644 --- a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.6.1 Actions General - Form fields - Interactive form fields shall not perform actions of any type. - veraPDF Consortium - 2015-07-01T00:22:56Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.6.1 Actions General - Form fields + Interactive form fields shall not perform actions of any type. +
+ - - Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 - - Interactive form field contains an action object ('A' key) - - - ISO19005-1 - 6.6.1 - - - + + + Interactive form fields shall not perform actions of any type + Subtype != "Widget" || A_size == 0 + + Interactive form field contains an action object ('A' key) + + + + + +
diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml index 59206ad5..01c3cd72 100644 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.6.2 Trigger events - Widgets - A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - veraPDF Consortium - 2015-07-01T00:30:31Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.6.2 Trigger events - Widgets + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary +
+ - - A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 - - A Widget annotation contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2 - - - + + + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + Subtype != "Widget" || AA_size == 0 + + A Widget annotation contains an additional-actions dictionary (AA entry) + + + + + +
diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml index a46adf02..6fe43bc7 100644 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.6.2 Trigger events - Form fields - A Field dictionary shall not include an AA entry for an additional-actions dictionary - veraPDF Consortium - 2015-07-02T17:05:31Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.6.2 Trigger events - Form fields + A Field dictionary shall not include an AA entry for an additional-actions dictionary +
+ - - A Field dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 - - A Field dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2, 6.9 - - - + + + A Field dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + A Field dictionary contains an additional-actions dictionary (AA entry) + + + + + +
diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml index 6901d1ab..12ba29b1 100644 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.6.2 Trigger events - Document - The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - veraPDF Consortium - 2015-07-01T00:45:12Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.6.2 Trigger events - Document + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary +
+ - - The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 - - The document catalog dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-1 - 6.6.2 - - - -
\ No newline at end of file + + + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml index 3294be5d..1a5a354c 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - veraPDF Consortium - 2015-06-29T10:13:55Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. +
+ - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - ispdfaidNSPresent - - The document metadata stream doesn't contains PDF/A Identification Schema. - - - ISO 19005-1:2005 - 6.7.11 - - - + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + ispdfaidNSPresent + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml index ef178deb..ed0d3e02 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml @@ -1,22 +1,23 @@ - - - ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. - veraPDF Consortium - 2015-06-29T10:15:00Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. +
+ - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. - part == 1 - - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. - part - - - ISO 19005-1:2005 - 6.7.11 - - - + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 1 + + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + + part + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml index 18844ee8..8fbcc875 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml @@ -1,22 +1,23 @@ - - - ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. - veraPDF Consortium - 2015-06-29T10:19:00Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. +
+ - - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" || conformance == "A" - - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. - conformance - - - ISO 19005-1:2005 - 6.7.11 - - - + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" || conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. + + conformance + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml index 72ebae34..668cacfc 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. - veraPDF Consortium - 2015-06-30T13:21:00Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. +
+ - - The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. - corr == null - - The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. - - - ISO 19005-1:2005 - 6.7.11 - - - + + + The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. + corr == null + + The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml index 46ee7ad4..6fa378de 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml @@ -1,22 +1,23 @@ - - - ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - The PDF/A Identification Schema has required prefix "pdfaid". - veraPDF Consortium - 2015-06-29T10:15:00Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + The PDF/A Identification Schema has required prefix "pdfaid". +
+ - - The PDF/A Identification Schema has required prefix "pdfaid". - prefix == "pdfaid" - - A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". - prefix - - - ISO 19005-1:2005 - 6.7.11 - - - + + + The PDF/A Identification Schema has required prefix "pdfaid". + prefix == "pdfaid" + + A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". + + prefix + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml index d9bff3d5..7d6dd6fa 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key - The document catalog dictionary of a conforming file shall contain the Metadata key. - veraPDF Consortium - 2015-06-26T14:30:10Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key + The document catalog dictionary of a conforming file shall contain the Metadata key. +
+ - - The document catalog dictionary of a conforming file shall contain the Metadata key. - metadata_size == 1 - - The document catalog dictionary doesn't contain metadata key. - - - ISO 19005-1:2005 - 6.7.2 - - - + + + The document catalog dictionary of a conforming file shall contain the Metadata key. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml index 80e45559..d7f6ce35 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key - Metadata object stream dictionaries shall not contain the Filter key. - veraPDF Consortium - 2015-06-26T15:20:40Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key + Metadata object stream dictionaries shall not contain the Filter key. +
+ - - Metadata object stream dictionaries shall not contain the Filter key. - Filter == null - - The metadata object stream dictionary contains the Filter key. - - - ISO 19005-1:2005 - 6.7.2 - - - + + + Metadata object stream dictionaries shall not contain the Filter key. + Filter == null + + The metadata object stream dictionary contains the Filter key. + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml index 9f34ffda..68f7d512 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml @@ -1,21 +1,23 @@ - - - ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Document Information Dictionary entries embedded in XMP. - If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. - veraPDF Consortium - 2015-06-29T08:55:20Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Document Information Dictionary entries embedded in XMP. + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. +
+ - - If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. - doesInfoMatchXMP - - Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. - - - ISO 19005-1:2005/Cor.1:2007/Cor.2:2011 - 6.7.3 - - - + + + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + doesInfoMatchXMP + + Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml index 785cb436..09e8845a 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.7.5 XMP Package - bytes attribute - The bytes attribute shall not be used in the header of an XMP packet. - veraPDF Consortium - 2015-06-29T09:02:30Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.5 XMP Package - bytes attribute + The bytes attribute shall not be used in the header of an XMP packet. +
+ - - The bytes attribute shall not be used in the header of an XMP packet. - bytes == null - - The XMP Package contains bytes attribute. - - - ISO 19005-1:2005 - 6.7.5 - - - + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml index 7ba86b9d..30f36b62 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.7.5 XMP Package - encoding attribute - The encoding attribute shall not be used in the header of an XMP packet. - veraPDF Consortium - 2015-06-29T09:04:30Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.5 XMP Package - encoding attribute + The encoding attribute shall not be used in the header of an XMP packet. +
+ - - The encoding attribute shall not be used in the header of an XMP packet. - encoding == null - - The XMP Package contains encoding attribute. - - - ISO 19005-1:2005 - 6.7.5 - - - + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml index c1daa52d..e2f397da 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml @@ -1,25 +1,25 @@ - - - ISO 19005-1:2005 - 6.7.9 XMP Package - Conforms to XMP Specification. - The metadata stream shall conform to XMP Specification. - veraPDF Consortium - 2015-06-29T09:44:55Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.7.9 XMP Package - Conforms to XMP Specification. + The metadata stream shall conform to XMP Specification. +
+ - - The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. - isMetadataValid - - %1 - errorMessage - - - ISO 19005-1:2005 - 6.7.9 - - XMP Specification January 2004 - - - - + + + The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. + isMetadataValid + + %1 + + errorMessage + + + + + + + +
diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t01.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t01.xml index d2bfec60..30454963 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t01.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.9 Interactive Forms - Need Appearances - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false - veraPDF Consortium - 2015-07-02T17:12:38Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.9 Interactive Forms - Need Appearances + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false +
+ - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false - NeedAppearances == null || NeedAppearances == false - - The interactive form dictionary contains the NeedAppearances flag with value true - - - ISO19005-1 - 6.9 - - - + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + +
diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml index af167fd2..b9a89f25 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.9 Interactive Fields - Widget annotations - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - veraPDF Consortium - 2015-07-14T17:57:23Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.9 Interactive Fields - Widget annotations + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys +
+ - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) - - A Widget annotation contains either A or AA entry - - - ISO19005-1 - 6.9 - - - + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + + + +
diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml index fee90ba8..af71b353 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-1:2005 - 6.9 Interactive Fields - Form fields - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - veraPDF Consortium - 2015-07-14T17:58:06Z - sha-1 hash code + + +
+ ISO 19005-1:2005 - 6.9 Interactive Fields - Form fields + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys +
+ - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 - - A Form field dictionary contains the AA entry - - - ISO19005-1 - 6.9 - - - + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + AA_size == 0 + + A Form field dictionary contains the AA entry + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml index 2ae794af..f0c02b8e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.1.10 Inline image dictionaries - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + + +
+ ISO 19005-2:2011 - 6.1.10 Inline image dictionaries + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. - veraPDF Consortium - 2015-10-20T17:45:34Z - sha-1 hash code +
+ - - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. - F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) - - Inline image uses LZW, Crypt or one of the unknown filters - - - ISO19005-2:2011 - 6.1.10 - - - + F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) + + Inline image uses LZW, Crypt or one of the unknown filters + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml index 4cfbfffe..e62c0bfc 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.12 Implementation limits - Integer - A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. - veraPDF Consortium - 2015-10-20T8:44:15Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.12 Implementation limits - Integer + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. +
+ - + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) Integer value out of range + - - ISO19005-2:2011 - 6.1.13 - + - + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml index 740a6e82..dde5efc4 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.12 Implementation limits - Real - A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 - veraPDF Consortium - 2015-10-20T8:48:15Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.12 Implementation limits - Real + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 +
+ - + + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 (realValue >= -3.403e+38) && (realValue <= 3.403e+38) Real value out of range + - - ISO19005-2:2011 - 6.1.13 - + - + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml index 10802b0b..29934f71 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.12 Implementation limits - String - A conforming file shall not contain any string longer than 32767 bytes. - veraPDF Consortium - 2015-10-20Z8:53:15Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.12 Implementation limits - String + A conforming file shall not contain any string longer than 32767 bytes. +
+ - + + A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32767 Maximum length of a String (32767) exceeded + - - ISO19005-2:2011 - 6.1.13 - + - + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml index da9ff773..c6b4f230 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.12 Implementation limits - Name - A conforming file shall not contain any name longer than 127 bytes. - veraPDF Consortium - 2015-10-20T8:55:15Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.12 Implementation limits - Name + A conforming file shall not contain any name longer than 127 bytes. +
+ - + + A conforming file shall not contain any name longer than 127 bytes. internalRepresentation.length() <= 127 Maximum length of a Name (127) exceeded + - - ISO19005-2:2011 - 6.1.13 - + - + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml index 955a681c..c61c84bc 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.12 Implementation limits - Indirect obejcts - A conforming file shall not contain more than 8388607 indirect objects - veraPDF Consortium - 2015-10-20T8:59:15Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.12 Implementation limits - Indirect obejcts + A conforming file shall not contain more than 8388607 indirect objects +
+ - + + A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 Maximum number of indirect objects (8,388,607) in a PDF file exceeded + - - ISO19005-2:2011 - 6.1.13 - + - + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml index 477c790a..dcc1b1e4 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.12 Implementation limits - Graphics state nesting - A conforming file shall not nest q/Q pairs by more than 28 nesting levels. - veraPDF Consortium - 2015-10-20T9:00:56Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.12 Implementation limits - Graphics state nesting + A conforming file shall not nest q/Q pairs by more than 28 nesting levels. +
+ - + + A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 Maximum depth of graphics state nesting (q and Q operators) is exceeded + - - ISO19005-2:2011 - 6.1.13 - + - + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml index 3bf14150..60d7e8ca 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.12 Implementation limits - DeviceN components - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. - veraPDF Consortium - 2015-08-20T12:14:23Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.12 Implementation limits - DeviceN components + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. +
+ - + + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. nrComponents <= 32 Maximum number of DeviceN components (32) is exceeded + - - ISO19005-2:2011 - 6.1.13 - + - + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml index 076c791f..77455b68 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.12 Implementation limits - CID - A conforming file shall not contain a CID value greater than 65535. - veraPDF Consortium - 2015-10-20T9:03:51Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.12 Implementation limits - CID + A conforming file shall not contain a CID value greater than 65535. +
+ - + + A conforming file shall not contain a CID value greater than 65535. CID <= 65535 Maximum value of a CID (65535) is exceeded + - - ISO19005-2:2011 - 6.1.13 - + - + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml index 58cd0a14..9126b8eb 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.1.12 Implementation limits - page boundaries - The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, + + +
+ ISO 19005-2:2011 - 6.1.12 Implementation limits - page boundaries + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. - veraPDF Consortium - 2015-10-20T9:13:51Z - sha-1 hash code +
+ - + + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 One of the bage boundaries is out of range (3-14400) in one of the directions + - - ISO19005-2:2011 - 6.1.13 - + - + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml index 42d7df86..1ea93b1b 100644 --- a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.1.2 File header - PDF header - The file header shall begin at byte zero and shall consist of “%PDF-1.n” followed by a single EOL marker, + + +
+ ISO 19005-2:2011 - 6.1.2 File header - PDF header + The file header shall begin at byte zero and shall consist of “%PDF-1.n” followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) - veraPDF Consortium - 2015-10-20T17:00:34Z - sha-1 hash code +
+ - - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + + + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) - headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) - - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification - - - ISO19005-2:2011 - 6.1.2 - - - + headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml index f03a5265..b6492018 100644 --- a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.1.2 File header - Binary comment - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values + + +
+ ISO 19005-2:2011 - 6.1.2 File header - Binary comment + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 - veraPDF Consortium - 2015-10-20T17:18:24Z - sha-1 hash code +
+ - - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 - headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - - Binary comment in the file header is missing or does not comply PDF/A requirements - - - ISO19005-2:2011 - 6.1.2 - - - + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index 75e35235..8a2cf731 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -1,25 +1,23 @@ - - - ISO 19005-2:2011 - 6.1.3 File trailer - ID keyword - The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - veraPDF Consortium - 2015-10-20T17:20:50Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.3 File trailer - ID keyword + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 +
+ - - The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID - - Missing ID in the document trailer - - - ISO19005-2:2011 - 6.1.3 - - ISO32000-1:2008 - 14.4 - - - - + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID + + Missing ID in the document trailer + + + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml index ae48a20a..fc98af00 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml @@ -1,22 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.3 File trailer - Encrypt - The keyword Encrypt shall not be used in the trailer dictionary - veraPDF Consortium - 2015-10-20T17:22:23Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.3 File trailer - Encrypt + The keyword Encrypt shall not be used in the trailer dictionary +
+ - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true - - Encrypt keyword is present in the trailer dictionary - - - ISO19005-2:2011 - 6.1.3 - - - + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + + + +
- diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml index 7f2e146f..ef962def 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -1,25 +1,23 @@ - - - ISO 19005-2:2011 - 6.1.3 File trailer - EOF - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. - veraPDF Consortium - 2015-10-20T17:25:34Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.3 File trailer - EOF + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. +
+ - - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. - postEOFDataSize == 0 - - Data is present after the last end-of-file marker - - - ISO19005-2:2011 - 6.1.3 - - ISO32000-1:2008 - 7.5.5 - - - - + + + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml index 8ddfd463..d899154f 100644 --- a/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.4 Cross reference table - Spacings after xref - The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker - veraPDF Consortium - 2015-10-20T17:29:13Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.4 Cross reference table - Spacings after xref + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker +
+ - - The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA - - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - - - ISO19005-2:2011 - 6.1.4 - - - + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml index 1779e8e1..40e40a6a 100644 --- a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.6 String objects - Even number of characters - The number of hexadecimal digits in a hexadecimal string shall always be even - veraPDF Consortium - 2015-10-20T17:31:15Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.6 String objects - Even number of characters + The number of hexadecimal digits in a hexadecimal string shall always be even +
+ - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 - - The number of hexadecimal digits in a hexadecimal string shall always be even - - - ISO19005-2 - 6.1.6 - - - + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml index ba5b21ed..d27f4773 100644 --- a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.6 String objects - Characters range - A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - veraPDF Consortium - 2015-10-20T17:33:15Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.6 String objects - Characters range + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) +
+ - - A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex - - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - - - ISO32000-1:2008 - 3.2.3 - - - + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml index 6bb30703..d07b25f2 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - Correct Length - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + + +
+ ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - Correct Length + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - veraPDF Consortium - 2015-10-20T17:36:15Z - sha-1 hash code +
+ - - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect - - Actual length of the stream does not match the value of the Length key in the Stream dictionary - - - ISO19005-2:2011 - 6.1.7.1 - - - + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml index 3576e39c..8833f23b 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - Keywords spacing - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. + + +
+ ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - Keywords spacing + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. - veraPDF Consortium - 2015-10-20T15:46:15Z - sha-1 hash code +
+ - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant - - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - - - ISO19005-2:2011 - 6.1.7.1 - - - + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml index 55b54feb..9aaa877e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - File specification - A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys - veraPDF Consortium - 2015-10-20T17:39:22Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - File specification + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys +
+ - - A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys - F == null && FFilter == null && FDecodeParms == null - - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - - - ISO19005-2:2011 - 6.1.7.1 - - - + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml index 10e37130..474b32e1 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.2 Filters - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. - veraPDF Consortium - 2015-10-20T17:48:15Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.2 Filters + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. +
+ - - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. - filters == null || filters.indexOf("LZWDecode") == -1 - - LZW compression is used - - - ISO19005-2:2011 - 6.1.7.2 - - - + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml index 01413a35..e9e4695e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml @@ -1,27 +1,25 @@ - - - ISO 19005-2:2011 - 6.1.8 Name objects - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + + +
+ ISO 19005-2:2011 - 6.1.8 Name objects + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. - veraPDF Consortium - 2015-10-20T17:36:15Z - sha-1 hash code +
+ - - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. - isValidUtf8 == true - - The name object does not represent a correct Utf8 byte sequence - - - ISO19005-2:2011 - 6.1.8 - - ISO32000-1:2008 - 7.3.5 - - - - + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml index ee83a36b..baad403e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml @@ -1,25 +1,25 @@ - - - ISO 19005-2:2011 - 6.1.9 Indirect objects - Spacings - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + + +
+ ISO 19005-2:2011 - 6.1.9 Indirect objects - Spacings + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. - veraPDF Consortium - 2015-10-20T18:04:15Z - sha-1 hash code +
+ - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. - spacingCompliesPDFA - - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - ISO19005-2 - 6.1.9 - - - + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml index 4ba6acea..ea2633ca 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml @@ -1,27 +1,25 @@ - - - ISO 19005-2:2011 - 6.2.10 Transparency - Blend modes - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - veraPDF Consortium - 2015-10-25T12:19:07Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.10 Transparency - Blend modes + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. +
+ - - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" - - The document uses the blend mode not defined in ISO 32000-1:2008 - - - ISO19005-2:2011 - 6.2.10 - - ISO32000-1:2008 - 11.3.5, Tables 136-137 - - - - + + + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" + + The document uses the blend mode not defined in ISO 32000-1:2008 + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml index 98a95db7..032f7402 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml @@ -1,41 +1,30 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Type entry - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Type entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - veraPDF Consortium - 2015-10-25T12:32:38Z - sha-1 hash code +
+ - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" - - A Font dictionary has missing or invalid Type entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - ISO32000-1:2008 - 9.7.4.1, Table 117 - - - ISO32000-1:2008 - 9.7.6.1, Table 121 - - - - + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml index 61778ab2..b4ad19f4 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml @@ -1,52 +1,35 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Subtype entry - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Subtype entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - veraPDF Consortium - 2015-10-25T12:56:38Z - sha-1 hash code + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts +
+ - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - - A Font dictionary has missing or invalid Subtype entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.2.3 - - - ISO32000-1:2008 - 9.6.3 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - ISO32000-1:2008 - 9.7.4.1, Table 117 - - - ISO32000-1:2008 - 9.7.6.1, Table 121 - - - - + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts
+ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml index fe05a3f8..7ced51a9 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml @@ -1,37 +1,29 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - BaseFont entry - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - BaseFont entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font - veraPDF Consortium - 2015-10-25T12:48:11Z - sha-1 hash code +
+ - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null - - A BaseFont entry is missing or has invalid type - - - ISO19005-2:2011 - 6.3.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.7.4.1, Table 117 - - - ISO32000-1:2008 - 9.7.6.1, Table 121 - - - - + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml index 687bfd8c..97dbbd95 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml @@ -1,33 +1,28 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - FirstChar entry - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - FirstChar entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - veraPDF Consortium - 2015-10-25T12:57:11Z - sha-1 hash code +
+ - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || FirstChar != null - - A non-standard simple font dictionary has missing or invalid FirstChar entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - - + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml index 3f9fc143..0e5bfbca 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml @@ -1,33 +1,28 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - LastChat entry - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - LastChat entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array - veraPDF Consortium - 2015-10-25T12:57:54Z - sha-1 hash code +
+ - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || LastChar != null - - A non-standard simple font dictionary has missing or invalid LastChar entry - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - - + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml index 90e90634..4d5edbc0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml @@ -1,33 +1,28 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Widths entry - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Widths entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - veraPDF Consortium - 2015-10-25T12:54:44Z - sha-1 hash code +
+ - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - - Widths array is missing or has invalid size - - - ISO19005-2:2011 - 6.2.11.2 - - ISO32000-1:2008 - 9.6.2.1, Table 111 - - - ISO32000-1:2008 - 9.6.5, Table 112 - - - - + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml index 305dae85..438e2a46 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml @@ -1,31 +1,31 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDSystemInfo - For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDSystemInfo + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. - veraPDF Consortium - 2015-10-25T15:18:03Z - sha-1 hash code +
+ - - For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - ISO19005-2:2011 - 6.2.11.3.1 - - - + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml index 22c6368a..fc508145 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml @@ -1,27 +1,25 @@ - - - ISO 19005-1:2005 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDToGIDMap - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + + +
+ ISO 19005-1:2005 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDToGIDMap + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - veraPDF Consortium - 2015-10-25T15:26:18Z - sha-1 hash code +
+ - - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - ISO19005-2:2011 - 6.2.11.3.2 - - ISO32000-1:2008 - 9.7.4, Table 117 - - - - + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml index 4c7b5db4..df1e9d05 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml @@ -1,42 +1,40 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CMaps - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CMaps + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. - veraPDF Consortium - 2015-07-04T12:37:11Z - sha-1 hash code +
+ - - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. - 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-EUC-H" || CMapName == "GBK2K-EUC-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" || + 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-EUC-H" || CMapName == "GBK2K-EUC-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" || embeddedFile_size == 1 - - A non-standard CMap is not embedded - - - ISO19005-1 - 6.2.11.3.3 - - ISO32000-1:2008 - 9.7.5.2, Table 118 - - - - + + A non-standard CMap is not embedded + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml index 734f72d2..225e5629 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - WMode - For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - WMode + 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. - veraPDF Consortium - 2015-10-25T15:35:23Z - sha-1 hash code +
+ - - For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode value + + + 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. - WMode == dictWMode - - WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - ISO19005-2:2011 - 6.2.11.3.3 - - - + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml index 280773d4..c1c74535 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml @@ -1,25 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - General - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - veraPDF Consortium - 2015-10-25T17:16:21Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - General + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. +
+ - - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - - The font program is not embedded - - - ISO19005-2:2011 - 6.2.11.4.1 - - ISO32000-1:2008 - 9.9 - - - - + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml index 4433c181..2baf168d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - Glyphs - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - veraPDF Consortium - 2015-10-25T17:18:42Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - Glyphs + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. +
+ - - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - ISO19005-2:2011 - 6.2.11.4.1 - - - + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml index e7d59054..92e6c6e3 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CharSet entry in Type1 fonts - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CharSet entry in Type1 fonts + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - veraPDF Consortium - 2015-10-25T17:21:27Z - sha-1 hash code +
+ - - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true - - A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program - - - ISO19005-2:2011 - 6.2.11.4.2 - - - + CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml index 078d7ec8..983ff6ab 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CIDSet entry in CID Fonts - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CIDSet entry in CID Fonts + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - veraPDF Consortium - 2015-10-25T17:27:02Z - sha-1 hash code +
+ - - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - CIDSet_size == 0 || cidSetListsAllGlyphs == true - - A CID Font subset does not define CIDSet entry in its Descriptor dictionary - - - ISO19005-2:2011 - 6.2.11.4.2 - - - + CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml index 8b0f4114..17f06f57 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.5 Font metrics - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.5 Font metrics + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - veraPDF Consortium - 2015-10-25T17:32:33Z - sha-1 hash code +
+ - - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - isWidthConsistent == true - - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - ISO19005-2:2011 - 6.2.11.5 - - - + isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml index d8ba99ee..b60d6106 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - cmaps for non-symbolic TrueType fonts - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - cmaps for non-symbolic TrueType fonts + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - veraPDF Consortium - 2015-10-25T17:39:12Z - sha-1 hash code +
+ - - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 - - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - - - ISO19005-2:2011 - 6.2.11.6 - - - + isSymbolic == true || nrCmaps >= 1 + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml index e7af1039..f26d6451 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml @@ -1,26 +1,26 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Non-symbolic TrueType fonts - No non-symbolic TrueType font shall define a Differences array unless all of the glyph names in + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Non-symbolic TrueType fonts + 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. - veraPDF Consortium - 2015-10-25T20:39:12Z - sha-1 hash code + Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the "cmap" table. +
+ - - No non-symbolic TrueType font shall define a Differences array unless all of the glyph names in + + + 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the "cmap" table. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - - - ISO19005-2:2011 - 6.2.11.6 - - - + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml index 74149b2f..845d98b6 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Symbolic TrueType fonts - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - veraPDF Consortium - 2015-10-25T17:50:32Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Symbolic TrueType fonts + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary +
+ - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - ISO32000-1:2008 - 6.2.11.6 - - - + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml index e32c39ef..ee4ee952 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - cmaps in the symbolic TrueType font program - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - cmaps in the symbolic TrueType font program + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. - veraPDF Consortium - 2015-10-25T17:47:12Z - sha-1 hash code +
+ - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. - isSymbolic == false || nrCmaps == 1 || cmap30Present == true - - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - ISO32000-1:2008 - 6.2.11.6 - - - + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml index 00d191a3..790f6373 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.8 Use of .notdef glyph - A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.8 Use of .notdef glyph + A PDF/A-2 compliant document 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. - veraPDF Consortium - 2015-10-25T20:57:12Z - sha-1 hash code +
+ - - A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing + + + A PDF/A-2 compliant document 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. - name != ".notdef" - - The document contains a reference to the .notdef glyph - - - ISO19005-2:2011 - 6.2.11.8 - - - + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml index f87be3c7..0ad37d99 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml @@ -1,22 +1,22 @@ - - - ISO 19005-2:2011 - 6.2.2 Content streams - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. - veraPDF Consortium - 2015-10-22T8:43:56Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.2 Content streams + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. +
+ - - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + + + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. - false - - A content stream contains an operator not defined in ISO 32000-1 - - - ISO19005-2:2011 - 6.2.2 - - - + false + + A content stream contains an operator not defined in ISO 32000-1 + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml index 2cbba696..2404b11b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml @@ -1,28 +1,25 @@ - - - ISO 19005-2:2011 - 6.2.3 Output intent - Valid ICC output profile - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - - veraPDF Consortium - 2015-10-22T08:50:15Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.3 Output intent - Valid ICC output profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". +
+ - - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - - The embedded PDF/A Output Intent colour profile has invalid header - - - ISO19005-2:2011 - 6.2.3 - - ISO32000-1:2008 - 14.11.5 - - - - + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml index 8a01228b..13c4d126 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml @@ -1,32 +1,31 @@ - - - ISO 19005-2:2011 - 6.2.3 Output intent - Matching multiple output profiles - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 + + +
+ ISO 19005-2:2011 - 6.2.3 Output intent - Matching multiple output profiles + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream. - veraPDF Consortium - 2015-10-22T8:59:37Z - sha-1 hash code +
+ - - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + + + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - - - ISO19005-2:2011 - 6.2.3 - - - - - - null - gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect - - + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + + null + gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index 78f8814d..8bda2ece 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -1,25 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.3 Output intent - DestOutputProfileRef entry - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - veraPDF Consortium - 2015-10-24T23:30:37Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.3 Output intent - DestOutputProfileRef entry + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. +
+ - - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 - - The output intent dictionary contains forbidden entry DestOutputProfileRef - - - ISO19005-2:2011 - 6.2.3 - - ISO15930-7:2010 - Annex A - - - - + + + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + DestOutputProfileRef_size == 0 + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t01.xml index 873f559a..eabc7baf 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t01.xml @@ -1,26 +1,24 @@ - - - ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased colour spaces - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - veraPDF Consortium - 2015-10-24T23:35:27Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased colour spaces + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. +
+ - - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 - - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - - - ISO19005-2:2011 - 6.2.4.2 - - ISO 32000-1:2008 - 8.6.5.5 - - - - + + + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t02.xml index b846d1dd..4558392f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t02.xml @@ -1,29 +1,28 @@ - - - ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceRGB - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the + + +
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceRGB + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - veraPDF Consortium - 2015-10-24T23:45:23Z - sha-1 hash code +
+ - - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " - - DeviceRGB colour space is used without RGB output intent profile - - - ISO19005-2:2011 - 6.2.4.3 - - - - - - null - S == "GTS_PDFA1" ? colorSpace : gOutputCS - - + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t03.xml index d7e4817c..6bd3cf0c 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t03.xml @@ -1,29 +1,28 @@ - - - ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceCMYK - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + + +
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceCMYK + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - veraPDF Consortium - 2015-10-24T23:48:23Z - sha-1 hash code +
+ - - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - gOutputCS != null && gOutputCS == "CMYK" - - DeviceCMYK colour space is used without CMYK output intent profile - - - ISO19005-2:2011 - 6.2.4.3 - - - - - - null - S == "GTS_PDFA1" ? colorSpace : gOutputCS - - + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t04.xml index 95c70c51..9b84ac33 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t04.xml @@ -1,29 +1,28 @@ - - - ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceGray - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + + +
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceGray + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present. - veraPDF Consortium - 2015-10-24T23:52:18Z - sha-1 hash code +
+ - - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present. - gOutputCS != null - - DeviceGray colour space is used without output intent profile - - - ISO19005-2:2011 - 6.2.4.3 - - - - - - null - S == "GTS_PDFA1" ? colorSpace : gOutputCS - - + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t05.xml index 86bcd9e1..176ad081 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t05.xml @@ -1,25 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - DeviceN colorants - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. - veraPDF Consortium - 2015-10-24T23:20:18Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - DeviceN colorants + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. +
+ - - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. - areColorantsPresent == true - - A colorant of the DeviceN color space is not defined in the Colorants dictionary - - - ISO19005-2:2011 - 6.2.4.4 - - ISO32000-1:2008 - 8.6.6.5, Table 71 - - - - + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t06.xml index 7a8ecb50..43292978 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t06.xml @@ -1,26 +1,26 @@ - - - ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - Consistency of Separations - All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the + + +
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - Consistency of Separations + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - veraPDF Consortium - 2015-10-24T23:29:18Z - sha-1 hash code +
+ - - All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + + + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true - - Several occurrances of a Separation colour space with the same name are not consistent - - - ISO19005-2:2011 - 6.2.4.4 - - - + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml index 5f6af4a7..978c2c3f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR key - An ExtGState dictionary shall not contain the TR key - veraPDF Consortium - 2015-10-24T23:28:29Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR key + An ExtGState dictionary shall not contain the TR key +
+ - - An ExtGState dictionary shall not contain the TR key - TR == null - - An ExtGState dictionary contains the TR key - - - ISO19005-2:2011 - 6.2.5 - - - + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml index bae52d65..75363502 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR2 key - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - veraPDF Consortium - 2015-10-24T23:49:12Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR2 key + An ExtGState dictionary shall not contain the TR2 key with a value other than Default +
+ - - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" - - An ExtGState dictionary contains the TR2 key with a value other than Default - - - ISO19005-2:2011 - 6.2.5 - - - + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml index f863978d..a29efd0b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.5 Extended graphics state - HTP key - An ExtGState dictionary shall not contain the HTP key - veraPDF Consortium - 2015-10-24T23:50:12Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - HTP key + An ExtGState dictionary shall not contain the HTP key +
+ - - An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 - - An ExtGState dictionary contains the HTP key - - - ISO19005-2:2011 - 6.2.5 - - - + + + An ExtGState dictionary shall not contain the HTP key + HTP_size == 0 + + An ExtGState dictionary contains the HTP key + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml index 7a373cc8..a01a2dcc 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone type - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. - veraPDF Consortium - 2015-10-24T23:58:21Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone type + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. +
+ - - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. - HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - - A Halftone has type other than 1 or 5 - - - ISO19005-2:2011 - 6.2.5 - - - + + + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml index 105fd3ec..874b0dfa 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone name - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. - veraPDF Consortium - 2015-10-24T00:01:17Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone name + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. +
+ - - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. - HalftoneName == null - - A Halftone dictionary contains the HalftoneName key - - - ISO19005-2:2011 - 6.2.5 - - - + + + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml index b75bfa39..dc0b5888 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.6 Rendering intents - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + + +
+ ISO 19005-2:2011 - 6.2.6 Rendering intents + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - veraPDF Consortium - 2015-10-25T00:06:56Z - sha-1 hash code +
+ - - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" - - A rendering intent with non-standard value is used - - - ISO19005-2:2011 - 6.2.6 - - - + value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + + A rendering intent with non-standard value is used + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml index 29bfd0c6..34314102 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.8 Images - Alternates - An Image dictionary shall not contain the Alternates key - veraPDF Consortium - 2015-10-25T11:44:45Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.8 Images - Alternates + An Image dictionary shall not contain the Alternates key +
+ - - An Image dictionary shall not contain the Alternates key - Alternates_size == 0 - - Alternates key is present in the Image dictionary( - - - ISO19005-2:2011 - 6.2.8.1 - - - + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml index f5faf7a9..be4bb819 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.8 Images - OPI - An Image dictionary shall not contain the OPI key. - veraPDF Consortium - 2015-10-25T11:46:21Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.8 Images - OPI + An Image dictionary shall not contain the OPI key. +
+ - - An Image dictionary shall not contain the OPI key - OPI_size == 0 - - OPI key is present in the XObject dictionary( - - - ISO19005-2:2011 - 6.2.8.1 - - - + + + An Image dictionary shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml index 2a8d636d..09ca6bf5 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.2.8 Images - Interpolate - If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, + + +
+ ISO 19005-2:2011 - 6.2.8 Images - Interpolate + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. - veraPDF Consortium - 2015-10-25T11:49:35Z - sha-1 hash code +
+ - - If an Image dictionary contains the Interpolate key, its value shall be false. + + + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. - Interpolate == false - - The value of the Interpolate key in the Image dictionary is true - - - ISO19005-2:2011 - 6.2.8.1 - - - + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml index 053d07e9..054f8dd2 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.9 Form XObjects - 6.2.9.1 Form XObjects - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - veraPDF Consortium - 2015-10-25T12:02:12Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.9 Form XObjects - 6.2.9.1 Form XObjects + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. +
+ - - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 - - The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key - - - ISO19005-2:2011 - 6.2.9.1 - - - + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + + The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml index 29a33939..258b1691 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.9 XObjects - 6.2.9.2 Reference XObjects - A conforming file shall not contain any reference XObjects - veraPDF Consortium - 2015-10-25T12:07:07Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.9 XObjects - 6.2.9.2 Reference XObjects + A conforming file shall not contain any reference XObjects +
+ - - A conforming file shall not contain any reference XObjects - Ref_size == 0 - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - ISO19005-2:2011 - 6.2.9.2 - - - + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml index 58dd2ab0..5df84c42 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.2.9 XObjects - 6.2.9.3 PostScript XObjects - A conforming file shall not contain any PostScript XObjects - veraPDF Consortium - 2015-10-25T12:05:24Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.2.9 XObjects - 6.2.9.3 PostScript XObjects + A conforming file shall not contain any PostScript XObjects +
+ - - A conforming file shall not contain any PostScript XObjects - Subtype != "PS" - - The document contains a PostScript XObject - - - ISO19005-2:2011 - 6.2.9.3 - - - + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + + + +
diff --git a/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml index bb135494..4949006a 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -1,30 +1,28 @@ - - - ISO 19005-2:2011 - 6.3.1 Annotation types - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - veraPDF Consortium - 2015-10-25T21:03:18Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.3.1 Annotation types + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. +
+ - - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" - - Unknown or not permitted annotation type - - - ISO19005-2:2011 - 6.3.1 - - PDF 1.4 Reference - 12.5.6.1, Table 169 - - - - + + + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" + + Unknown or not permitted annotation type + + + + + + + +
diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml index 64dcd428..a284d9d8 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - F key - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - veraPDF Consortium - 2015-10-25T21:11:45Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - F key + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. +
+ - - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null - - A dictionary of a non-Popup annotation does not contain F key - - - ISO19005-2 - 6.3.2 - - - + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + + + +
diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml index 384b593c..36dd2011 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - Generic flag values - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. - veraPDF Consortium - 2015-10-25T21:16:34Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - Generic flag values + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. +
+ - - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. - F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) - - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - - - ISO19005-2 - 6.3.2 - - - + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + + + +
diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml index 8406c4d1..c34704e5 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - Flags of Text annotations - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - veraPDF Consortium - 2015-10-25T21:23:34Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - Flags of Text annotations + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. +
+ - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - ISO19005-2 - 6.3.2 - - - + + + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. + Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) + + Text annotation has one of the flags NoZoom or NoRotate set to 0 + + + + + +
diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml index 2f846555..ebf5a09c 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml @@ -1,27 +1,27 @@ - - - ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + + +
+ ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link. - veraPDF Consortium - 2015-10-25T21:49:18Z - sha-1 hash code +
+ - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link. - (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null - - An annotation does not contain an appearance dictionary - - - ISO19005-2:2011 - 6.3.3 - - - + (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + An annotation does not contain an appearance dictionary + + + + + +
diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml index 16a56ff2..bf564186 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -1,25 +1,25 @@ - - - ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + + +
+ ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - veraPDF Consortium - 2015-10-25T21:45:18Z - sha-1 hash code +
+ - - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) - - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - - - ISO19005-2:2011 - 6.3.3 - - - + AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + +
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index 76e01a85..6ac90c39 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -1,25 +1,21 @@ - - - ISO 19005-2:2011 - 6.4 Interactive Fields - 6.4.1 General - Widget annotation actions - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - veraPDF Consortium - 2015-07-14T17:57:23Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.4 Interactive Fields - 6.4.1 General - Widget annotation actions + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. +
+ - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) - - A Widget annotation contains either A or AA entry - - - ISO19005-2:2011 - 6.4.1 - - - ISO19005-2:2011 - 6.5.2 - - - + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + + + +
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml index c6cba954..50ddf87b 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml @@ -1,25 +1,21 @@ - - - ISO 19005-2:2011 - 6.4 Interactive forms - 6.4.1 General - Form field actions - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - veraPDF Consortium - 2015-10-25T21:58:06Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.4 Interactive forms - 6.4.1 General - Form field actions + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. +
+ - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 - - A Form field dictionary contains the AA entry - - - ISO19005-2:2011 - 6.4.1 - - - ISO19005-2:2011 - 6.5.2 - - - + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + AA_size == 0 + + A Form field dictionary contains the AA entry + + + + + +
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml index 079717cf..5aa1efd7 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.1 General - NeedAppearances flag - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. - veraPDF Consortium - 2015-10-25T21:52:38Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.1 General - NeedAppearances flag + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. +
+ - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. - NeedAppearances == null || NeedAppearances == false - - The interactive form dictionary contains the NeedAppearances flag with value true - - - ISO19005-2:2011 - 6.4.1 - - - + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + +
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml index 5e5720be..9b718015 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.2 XFA forms - XFA key - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + + +
+ ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.2 XFA forms - XFA key + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - veraPDF Consortium - 2015-10-25T22:09:38Z - sha-1 hash code +
+ - - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 - - The interactive form dictionary contains the XFA key - - - ISO19005-2:2011 - 6.4.2 - - - + XFA_size == 0 + + The interactive form dictionary contains the XFA key + + + + + +
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml index 770b2718..f30f5110 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.2 XFA forms - NeedsRendering flag - A document's Catalog shall not contain the NeedsRendering key. - veraPDF Consortium - 2015-10-25T22:11:38Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.2 XFA forms - NeedsRendering flag + A document's Catalog shall not contain the NeedsRendering key. +
+ - - A document's Catalog shall not contain the NeedsRendering key. - NeedsRendering == false - - A document's Catalog contains NeedsRendering flag set to true - - - ISO19005-2:2011 - 6.4.2 - - - + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + + + +
diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml index 6f176b09..8d09b968 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml @@ -1,27 +1,25 @@ - - - ISO 19005-2:2011 - 6.5 Actions - 6.5.1 General - Action types - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + + +
+ ISO 19005-2:2011 - 6.5 Actions - 6.5.1 General - Action types + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. - veraPDF Consortium - 2015-10-25T17:16:33Z - sha-1 hash code +
+ - - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - - Unknown or not permitted action type - - - ISO19005-2 - 6.5.1 - - ISO32000-1:2008 - 12.6.4.1, Table 198 - - - - + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + + + + + +
diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml index 7a70d17d..ac97da96 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml @@ -1,25 +1,23 @@ - - - ISO 19005-2:2011 - 6.5 Actions - 6.5.1 General - Named actions - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - veraPDF Consortium - 2015-10-25T17:21:33Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.5 Actions - 6.5.1 General - Named actions + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. +
+ - - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - - Unknown or not permitted named action - - - ISO19005-2:2011 - 6.5.1 - - ISO32000-1:2008 - 12.6.4.11, Table 211 - - - - + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + + + + + +
diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml index da021737..76efd892 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.5.2 Trigger events - Document - The document's Catalog shall not include an AA entry for an additional-actions dictionary. - veraPDF Consortium - 2015-10-25T17:28:12Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.5.2 Trigger events - Document + The document's Catalog shall not include an AA entry for an additional-actions dictionary. +
+ - - The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 - - The document catalog dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-2:2011 - 6.5.2 - - - -
\ No newline at end of file + + + The document's Catalog shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + + + + +
diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml index cd14c232..14e41ca3 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.5.2 Trigger events - Page - The Page dictionary shall not include an AA entry for an additional-actions dictionary. - veraPDF Consortium - 2015-10-25T17:29:12Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.5.2 Trigger events - Page + The Page dictionary shall not include an AA entry for an additional-actions dictionary. +
+ - - The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 - - The Page dictionary contains an additional-actions dictionary (AA entry) - - - ISO19005-2:2011 - 6.5.2 - - - -
\ No newline at end of file + + + The Page dictionary shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The Page dictionary contains an additional-actions dictionary (AA entry) + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml index b78c274e..5711bc2e 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml @@ -1,24 +1,25 @@ - - - ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Part number - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Part number + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with this part of ISO 19005 shall use a value of 2. - veraPDF Consortium - 2015-10-26T21:00:00Z - sha-1 hash code +
+ - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with this part of ISO 19005 shall use a value of 2. - part == 2 - - The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. - part - - - ISO 19005-2:2011 - 6.6.4 - - - + part == 2 + + The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. + + part + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 106c1ddd..e6fec239 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -1,22 +1,23 @@ - - - ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level - Level B conforming file shall specify the value of pdfaid:conformance as B. - veraPDF Consortium - 2015-10-26T20:57:00Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level + Level B conforming file shall specify the value of pdfaid:conformance as B. +
+ - - Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" - - The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. - conformance - - - ISO 19005-2:2011 - 6.6.4 - - - + + + Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" + + The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. + + conformance + + + + + +
diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t01.xml index 5b8a5b5d..4fa282bd 100644 --- a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t01.xml +++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t01.xml @@ -1,23 +1,23 @@ - - - ISO 19005-2:2011 - 6.8 Embedded files - EF key - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file + + +
+ ISO 19005-2:2011 - 6.8 Embedded files - EF key + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is compliant with either ISO 19005-1 or this part of ISO 19005. - veraPDF Consortium - 2015-10-25T17:50:11Z - sha-1 hash code +
+ - - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is compliant with either ISO 19005-1 or this part of ISO 19005. - isValidPDFA12 == true - - An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 - - - ISO19005-2:2011 - 6.8 - - - + isValidPDFA12 == true + + An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 + + + + + +
diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml index 29c92e41..93f0ff67 100644 --- a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml +++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml @@ -1,21 +1,21 @@ - - - ISO 19005-2:2011 - 6.8 Embedded files - F and UF keys - The file specification dictionary for an embedded file shall contain the F and UF keys - veraPDF Consortium - 2015-10-25T17:54:37Z - sha-1 hash code + + +
+ ISO 19005-2:2011 - 6.8 Embedded files - F and UF keys + The file specification dictionary for an embedded file shall contain the F and UF keys +
+ - - The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) - - The file specification dictionary for an embedded file does not contain either F or EF key - - - ISO19005-2:2011 - 6.8 - - - + + + The file specification dictionary for an embedded file shall contain the F and UF keys + EF_size == 0 || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + +
diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml index 333c3352..56f42dd7 100644 --- a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml +++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml @@ -1,24 +1,25 @@ - - - ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Part number - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with + + +
+ ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Part number + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with this part of ISO 19005 shall use a value of 3. - veraPDF Consortium - 2015-10-26T21:00:00Z - sha-1 hash code +
+ - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with this part of ISO 19005 shall use a value of 3. - part == 3 - - The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. - part - - - ISO 19005-3:2012 - 6.6.4 - - - + part == 3 + + The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. + + part + + + + + +
diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml index d3d20b5c..d666f254 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml @@ -1,22 +1,23 @@ - - - ISO 19005-3:2012 - 6.8 Embedded files - Subtype - The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. - If the MIME type is not known, the "application/octet-stream" shall be used. - 2015-10-28T17:52:11Z - sha-1 hash code + + +
+ ISO 19005-3:2012 - 6.8 Embedded files - Subtype + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. + If the MIME type is not known, the "application/octet-stream" shall be used. +
+ - - The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. - If the MIME type is not known, the "application/octet-stream" shall be used. - Subtype != null - - An embedded file dictionary doe snot contain the MIME type information (Subtype entry) - - - ISO19005-3:2012 - E.1 - - - + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. + If the MIME type is not known, the "application/octet-stream" shall be used. + Subtype != null + + An embedded file dictionary doe snot contain the MIME type information (Subtype entry) + + + + + +
diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml index 1716f176..16b90046 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml @@ -1,23 +1,23 @@ - - - ISO 19005-3:2012 - 6.8 Embedded files - AFRelationship - In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, + + +
+ ISO 19005-3:2012 - 6.8 Embedded files - AFRelationship + In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, a new (required) key has been defined and its presence (in the dictionary) is required. - veraPDF Consortium - 2015-10-25T17:54:37Z - sha-1 hash code +
+ - - In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, + + + In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, a new (required) key has been defined and its presence (in the dictionary) is required. - AFRelationship != null - - The file specification dictionary for an embedded file does not contain the AFRelationship key - - - ISO19005-3:2012 - E.2 - - - + AFRelationship != null + + The file specification dictionary for an embedded file does not contain the AFRelationship key + + + + + +
From b6f1956f662273a52162be0e963c05c7ef476a5c Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Mon, 15 Feb 2016 16:14:38 +0300 Subject: [PATCH 110/557] Update verapdf-profile-6-3-2-t02.xml Fixed misprint in the boolean test condition --- .../6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml index 384b593c..ee124174 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml @@ -8,7 +8,7 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. - F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 From 83e211b92538beceefa2a6a09498eda62efc34f6 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Mon, 15 Feb 2016 16:17:54 +0300 Subject: [PATCH 111/557] Update PDFA-2B.xml Fixed a misprint in the test condition for the annotation flag --- PDF_A/PDFA-2B.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index daf77bfe..e3ff0af7 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -370,7 +370,7 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. - F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 From c0bbf5b8968e31d5ff0ff057c6f87927755a78e7 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Mon, 15 Feb 2016 16:19:06 +0300 Subject: [PATCH 112/557] Update PDFA-3B.xml Fixed a misprint in the test condition for the annotation flag --- PDF_A/PDFA-3B.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index e88f4af2..79a17e22 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -675,7 +675,7 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. - F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0) + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 From 2babc16633d63c6b93f0e590592a5422d919e844 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 15 Feb 2016 17:13:02 +0300 Subject: [PATCH 113/557] Fixed changed property name in CosName for PDF/A-2 and PDF/A-3 property 'value' was renamed to 'internalRepresentation' --- .../6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml index b75bfa39..56bc5545 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml @@ -10,7 +10,7 @@ Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value is used diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index e3ff0af7..1954e55a 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -614,7 +614,7 @@ Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value is used diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 79a17e22..ef17ce36 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -821,7 +821,7 @@ Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - value == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation" + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value is used From 23d244df8006d7101910972492050392ff52a240 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 16 Feb 2016 10:14:22 +0300 Subject: [PATCH 114/557] Fixed file ID requirement for PDF/A-2 and 3 --- .../6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index 75e35235..d8a13016 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -8,7 +8,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID + lastID != null Missing ID in the document trailer diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 1954e55a..7eb90dde 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -733,7 +733,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID + lastID != null Missing ID in the document trailer diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index ef17ce36..889c5866 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -764,7 +764,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID + lastID != null Missing ID in the document trailer From 2cfa5201cf7c0e38d96aa5284d055dd336c33fef Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Thu, 18 Feb 2016 10:43:09 +0300 Subject: [PATCH 115/557] Deleted profiles for old xmp model and added profiles for new xmp model --- .../verapdf-profile-6-7-11-t03.xml | 23 -------------- .../6.7.11/verapdf-profile-6-7-11-t01.xml | 6 ++-- .../6.7.11/verapdf-profile-6-7-11-t02.xml | 4 +-- .../6.7.11/verapdf-profile-6-7-11-t03.xml | 4 +-- .../6.7.11/verapdf-profile-6-7-11-t04.xml | 18 +++++++---- .../6.7.11/verapdf-profile-6-7-11-t05.xml | 23 -------------- .../6.7.2/verapdf-profile-6-7-2-t01.xml | 2 +- .../6.7.2/verapdf-profile-6-7-2-t02.xml | 2 +- .../6.7.3/verapdf-profile-6-7-3-t01.xml | 2 +- .../6.7.5/verapdf-profile-6-7-5-t01.xml | 2 +- .../6.7.5/verapdf-profile-6-7-5-t02.xml | 2 +- .../6.7.8/verapdf-profile-6-7-8-t01.xml | 23 ++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t02.xml | 25 +++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t03.xml | 31 +++++++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t04.xml | 30 ++++++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t05.xml | 31 +++++++++++++++++++ .../6.7.8/verapdf-profile-6-7-8-t06.xml | 27 ++++++++++++++++ .../6.7.9/verapdf-profile-6-7-9-t01.xml | 8 ++--- .../6.7.9/verapdf-profile-6-7-9-t02.xml | 25 +++++++++++++++ .../verapdf-profile-6-6-4-t02.xml | 25 --------------- .../verapdf-profile-6-6-4-t03.xml | 23 -------------- .../verapdf-profile-6-6-4-t02.xml | 25 --------------- 22 files changed, 220 insertions(+), 141 deletions(-) delete mode 100644 PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml delete mode 100644 PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml delete mode 100644 PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml delete mode 100644 PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml diff --git a/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml b/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml deleted file mode 100644 index 5a537200..00000000 --- a/PDF_A/1a/6.7 Metadata/verapdf-profile-6-7-11-t03.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - A Level A conforming file shall specify the value of pdfaid:conformance as A. -
- - - - - A Level A conforming file shall specify the value of pdfaid:conformance as A. - conformance == "A" - - The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1A conforming file. - - conformance - - - - - - -
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml index 1a5a354c..1c25c131 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml @@ -1,15 +1,15 @@ -
+
ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.
- + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - ispdfaidNSPresent + Identification_size == 1 The document metadata stream doesn't contains PDF/A Identification Schema. diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml index ed0d3e02..65b0a518 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml @@ -1,12 +1,12 @@ -
+
ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms.
- + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. part == 1 diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml index 8fbcc875..a59a4748 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml @@ -1,12 +1,12 @@ -
+
ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B.
- + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. conformance == "B" || conformance == "A" diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml index 668cacfc..9320c413 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml @@ -1,17 +1,23 @@ -
+
ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. + It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), + pdfaid:conformance (Open Choice of Text).
- + - The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. - corr == null + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && + (amdPrefix == null || amdPrefix == "pdfaid") && + (corrPrefix == null || corrPrefix == "pdfaid") - The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. + A property of the PDF/A Identification Schema has an invalid namespace prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml deleted file mode 100644 index 6fa378de..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t05.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - The PDF/A Identification Schema has required prefix "pdfaid". -
- - - - - The PDF/A Identification Schema has required prefix "pdfaid". - prefix == "pdfaid" - - A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". - - prefix - - - - - - -
diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml index 7d6dd6fa..3127fc52 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml @@ -1,6 +1,6 @@ -
+
ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key The document catalog dictionary of a conforming file shall contain the Metadata key.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml index d7f6ce35..78af4bf7 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml @@ -1,6 +1,6 @@ -
+
ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key Metadata object stream dictionaries shall not contain the Filter key.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml index 68f7d512..f3d0cb1c 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml @@ -1,6 +1,6 @@ -
+
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Document Information Dictionary entries embedded in XMP. If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml index 09e8845a..258a22fd 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml @@ -1,6 +1,6 @@ -
+
ISO 19005-1:2005 - 6.7.5 XMP Package - bytes attribute The bytes attribute shall not be used in the header of an XMP packet.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml index 30f36b62..5c44548c 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml @@ -1,6 +1,6 @@ -
+
ISO 19005-1:2005 - 6.7.5 XMP Package - encoding attribute The encoding attribute shall not be used in the header of an XMP packet.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml new file mode 100644 index 00000000..65d09a6f --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Conatiner schema namespace + Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. +
+ + + + + Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. + containsUndefinedFields == false + + An extension schema object contains fields not defined by the specification + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml new file mode 100644 index 00000000..95258ec9 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Conatiner schema namespace + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas +
+ + + + + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" + + Invalid syntax of the extension schema container + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml new file mode 100644 index 00000000..cc5906d5 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml @@ -0,0 +1,31 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). +
+ + + + + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && + (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && + (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) + + Invalid Extension Schema definition + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml new file mode 100644 index 00000000..e93006a5 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property + The Property type is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text: internal or external), pdfaProperty:description (Text). +
+ + + + + The Property type defined is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). + (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && + (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && + (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaProperty") ) + + Invalid extension schema Property type definition + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml new file mode 100644 index 00000000..116e70a8 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml @@ -0,0 +1,31 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). +
+ + + + + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaType") ) && + (isFieldValidSeq == true && fieldPrefix == "pdfaType") + + Invalid extension schema ValueType type definition + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml new file mode 100644 index 00000000..3d9e038e --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema Field type + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). +
+ + + + + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + (isNameValidText == true && namePrefix == "pdfaField" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && + (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaField") ) + + Invalid extension schema Field type definition + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml index e2f397da..fa1bbda2 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml @@ -1,15 +1,15 @@ -
+
ISO 19005-1:2005 - 6.7.9 XMP Package - Conforms to XMP Specification. - The metadata stream shall conform to XMP Specification. + The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions
- The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. - isMetadataValid + The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions + isSerializationValid %1 diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml new file mode 100644 index 00000000..ff8bdf62 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-1:2005 - 6.7.9 XMP Package - All properties are defined + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + or extension schemas that comply with XMP Specification +
+ + + + + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + or extension schemas that comply with XMP Specification + (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + %1 + + errorMessage + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml deleted file mode 100644 index 5711bc2e..00000000 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml +++ /dev/null @@ -1,25 +0,0 @@ - - -
- ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Part number - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with - this part of ISO 19005 shall use a value of 2. -
- - - - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 2. - part == 2 - - The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. - - part - - - - - - -
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml deleted file mode 100644 index e6fec239..00000000 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level - Level B conforming file shall specify the value of pdfaid:conformance as B. -
- - - - - Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" - - The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. - - conformance - - - - - - -
diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml deleted file mode 100644 index 56f42dd7..00000000 --- a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml +++ /dev/null @@ -1,25 +0,0 @@ - - -
- ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Part number - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with - this part of ISO 19005 shall use a value of 3. -
- - - - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 3. - part == 3 - - The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. - - part - - - - - - -
From 431c5ab903f4031cc88f7deb8779902effc06db5 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 22 Feb 2016 17:27:09 +0300 Subject: [PATCH 116/557] Added the requirement that CharSet correctly identifies all characters in the font subset --- .../6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml index 7f3dbb0f..f9dd28a9 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml @@ -10,7 +10,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null + fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) A Type1 font subset does not define CharSet entry in its Descriptor dictionary From 256c1b9ff83f3a49daa132c336ca437b2ad1769d Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 23 Feb 2016 11:28:15 +0300 Subject: [PATCH 117/557] Added the condition on the correctness of CIDSet --- .../6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml index ce56fba7..32719981 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml @@ -11,7 +11,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) A CID Font subset does not define CIDSet entry in its Descriptor dictionary From 16bc163265392dd82f3987747513274d670b4e93 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 23 Feb 2016 11:33:05 +0300 Subject: [PATCH 118/557] Fixed merge conflict --- .../verapdf-profile-6-3-5-t02.xml | 44 +++++++++---------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml index f9dd28a9..04befb54 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml @@ -1,27 +1,25 @@ - - - ISO 19005-1:2005 - 6.3.5 Font subsets - CharSet entry in Type1 subsets - For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + + +
+ ISO 19005-1:2005 - 6.3.5 Font subsets - CharSet entry in Type1 subsets + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - veraPDF Consortium - 2015-09-01T18:25:27Z - sha-1 hash code +
+ - - For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + + + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) - - A Type1 font subset does not define CharSet entry in its Descriptor dictionary - - - ISO19005-1 - 6.3.5 - - PDF 1.4 Reference - 5.5.3 - - - - + fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) + + A Type1 font subset does not define CharSet entry in its Descriptor dictionary + + + + + +
+
+ From 8e7ace8816dd6fbd189f525ba91085430a296a5e Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Tue, 23 Feb 2016 14:49:26 +0300 Subject: [PATCH 119/557] Returned deleted profiles for pdfa identification check --- .../6.7.11/verapdf-profile-6-7-11-t03.xml | 23 +++++++++++++++++ .../verapdf-profile-6-6-4-t02.xml | 25 +++++++++++++++++++ .../verapdf-profile-6-6-4-t03.xml | 23 +++++++++++++++++ .../verapdf-profile-6-6-4-t02.xml | 25 +++++++++++++++++++ 4 files changed, 96 insertions(+) create mode 100644 PDF_A/1a/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml create mode 100644 PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml diff --git a/PDF_A/1a/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml b/PDF_A/1a/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml new file mode 100644 index 00000000..a2368708 --- /dev/null +++ b/PDF_A/1a/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + A Level A conforming file shall specify the value of pdfaid:conformance as A. +
+ + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. + conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file. + + conformance + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml new file mode 100644 index 00000000..a33fc0b2 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Part number + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with + this part of ISO 19005 shall use a value of 2. +
+ + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + compliance with this part of ISO 19005 shall use a value of 2. + part == 2 + + The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. + + part + + + + + + +
\ No newline at end of file diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml new file mode 100644 index 00000000..0b4a9bec --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level + Level B conforming file shall specify the value of pdfaid:conformance as B. +
+ + + + + Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" + + The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. + + conformance + + + + + + +
\ No newline at end of file diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml new file mode 100644 index 00000000..07f548e4 --- /dev/null +++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Part number + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with + this part of ISO 19005 shall use a value of 3. +
+ + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + compliance with this part of ISO 19005 shall use a value of 3. + part == 3 + + The "part" property of the PDF/A Identification Schema is not equal to 3 for a PDF/A-3B conforming file. + + part + + + + + + +
\ No newline at end of file From 61bc61f876034c45e49c5c6c68656b2da0694593 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 24 Feb 2016 11:23:28 +0300 Subject: [PATCH 120/557] Fixed the value for the variable gOutputCS The variable gOutputCS keeps the color space of the PDF/A output intent --- .../6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml index 7990c0c3..fe0aa4a6 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml @@ -20,7 +20,7 @@ null - colorSpace + S == "GTS_PDFA1" ? colorSpace : gOutputCS From 988d7c2dd3453197ccd2aa0a5b378b819c449088 Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Wed, 24 Feb 2016 13:34:01 +0300 Subject: [PATCH 121/557] Fixed variable in 1b 6-5-3-t03 profile and merged all atomic profiles --- .../verapdf-profile-6-5-3-t03.xml | 2 +- PDF_A/PDFA-1A.xml | 1349 +++++++++-------- PDF_A/PDFA-1B.xml | 1291 ++++++++-------- PDF_A/PDFA-2B.xml | 1164 +++++++------- PDF_A/PDFA-3B.xml | 1172 +++++++------- 5 files changed, 2584 insertions(+), 2394 deletions(-) diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml index d16fd06e..3fdb7072 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml @@ -22,7 +22,7 @@ null - colorSpace + S == "GTS_PDFA1" ? colorSpace : gOutputCS diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index fb1a5244..45fe6079 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,107 +1,118 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
- - - Maximum number of DeviceN components is 8 - nrComponents <= 8 + + + The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + pdfHeaderCompliesPDFA - Maximum number of DeviceN components is exceeded + File header does not start at byte offset 0 or does not correctly identify the version of the PDF document - + - - - For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + + + The file header line shall be immediately followed by a comment consisting of a % character followed by at + least four characters, each of whose encoded byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + Binary comment in the file header is missing or does not comply PDF/A requirements - - - + - - - A Group object with an S key with a value of Transparency shall not be included in a form XObject. - A Group object with an S key with a value of Transparency shall not be included in a page dictionary - S != "Transparency" + + + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - A transparency group is present in a form XObject or page dictionary + Missing ID in the document trailer - - - + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + - - If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. - doesInfoMatchXMP + + No data shall follow the last end-of-file marker except a single optional end-of-line marker. + eofCompliesPDFA - Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + Data is present after the last end-of-file marker - - - + - - The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true - Marked == true + + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + (isLinearized != true)|| lastID == null || (firstPageID == lastID) - /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false + Last ID is present in the Linearized PDF and does not match the first page ID - + - - - Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + + + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + xrefHeaderSpacingsComplyPDFA - A rendering intent with non-standard value is used + Spacings of subsection headers in the cross reference table do not comply PDF/A specification - - - The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. - corr == null + + + The xref keyword and the cross reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA - The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || LastChar != null + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 - A non-standard simple font dictionary has missing or invalid LastChar entry + Hexadecimal string contains odd number of non-white-space characters - - - - + + + + + All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + @@ -114,67 +125,85 @@ - - - Maximum length of a string (in bytes) is 65535 - value.length() < 65536 + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + spacingCompliesPDFA - Maximum length of a String (65535) exceeded + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - - - + - - - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, - Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" + + + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + F == null && FFilter == null && FDecodeParms == null - Unknown or not permitted annotation type + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + - - - For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA - A Type1 font subset does not define CharSet entry in its Descriptor dictionary + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - + - - - The encoding attribute shall not be used in the header of an XMP packet. - encoding == null + + + The LZWDecode filter shall not be permitted + filters == null || filters.indexOf("LZWDecode") == -1 - The XMP Package contains encoding attribute. + LZW compression is used - - - The bytes attribute shall not be used in the header of an XMP packet. - bytes == null + + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 - The XMP Package contains bytes attribute. + LZW compression is used in the inline image + + + A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key + EF == null + + A file specification dictionary contains the EF key + + + + + + + + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 + + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + + + + + + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 @@ -187,169 +216,114 @@ - - - Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 + + + Absolute real value must be less than or equal to 32767.0 + (realValue >= -32767.0) && (realValue <= 32767.0) - Maximum value of a CID (65,535) is exceeded + Real value out of range - - - An annotation dictionary shall not contain the C array or the IC array unless the colour space of the - DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - - Annotation's color or interior color is used without specifying RGB-based destination output profile - - - - - - - Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem - Type == "StructElem" + + + Maximum length of a string (in bytes) is 65535 + value.length() < 65536 - Missing or invalid Type entry in the structure element dictionary + Maximum length of a String (65535) exceeded - + - - - The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema. - conformance == "A" + + + Maximum length of a name (in bytes) is 127 + origLength <= 127 - The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1A conforming file. + Maximum length of a Name (127) exceeded - conformance + origLength - + + + - - - Metadata object stream dictionaries shall not contain the Filter key. - Filter == null + + + Maximum capacity of an array (in elements) is 8191 + size <= 8191 - The metadata object stream dictionary contains the Filter key. - - - - - - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 - - An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 - - - - - - - Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 - - Interactive form field contains an action object ('A' key) - - - - - - - The PDF/A version of a file shall be specified using the PDF/A Identification extension schema. - part == 1 - - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. - - part - - - - - - - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents - array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 - - The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information + Maximum capacity of an array (8191) exceeded - + - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || FirstChar != null + + + Maximum capacity of a dictionary (in entries) is 4095 + size <= 4095 - A non-standard simple font dictionary has missing or invalid FirstChar entry + Maximum capacity of a dictionary (4095) exceeded - - + - - - If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + + Maximum number of indirect objects in a PDF file is 8,388,607 + nrIndirects <= 8388607 - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + Maximum number of indirect objects (8,388,607) in a PDF file exceeded - + + + - - - A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 + + + Maximum depth of graphics state nesting by q and Q operators is 28 + nestingLevel <= 28 - The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + Maximum depth of graphics state nesting (q and Q operators) is exceeded - + - - - A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 + + + Maximum number of DeviceN components is 8 + nrComponents <= 8 - A file specification dictionary contains the EF key + Maximum number of DeviceN components is exceeded - + - - - All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") + + + Maximum value of a CID (character identifier) is 65,535 + CID <= 65535 - A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding + Maximum value of a CID (65,535) is exceeded - + @@ -362,23 +336,34 @@ - - - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatible - areRegistryOrderingCompatible == true + + + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 - Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information - + + + + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements @@ -388,296 +373,360 @@ - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + gOutputCS != null && gOutputCS == "RGB " - A Widget annotation contains either A or AA entry + DeviceRGB colour space is used without RGB output intent profile - - - Maximum capacity of an array (in elements) is 8191 - size <= 8191 + + + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space + gOutputCS != null && gOutputCS == "CMYK" - Maximum capacity of an array (8191) exceeded + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile - + - - If an Image dictionary contains the Interpolate key, its value shall be false - Interpolate == false + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 - The value of the Interpolate key in the Image dictionary is true + Alternates key is present in the Image dictionary( - - - An annotation dictionary shall not contain the CA key with a value other than 1.0 - CA == null || CA == 1.0 + + + An XObject dictionary (Image or Form) shall not contain the OPI key + OPI_size == 0 - An annotation dictionary contains the CA key with value other than 1.0 + OPI key is present in the XObject dictionary( - - - In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) - subsectionHeaderSpaceSeparated == true + + + If an Image dictionary contains the Interpolate key, its value shall be false + Interpolate == false - Spacings of subsection headers in the cross reference table do not comply PDF/A specification + The value of the Interpolate key in the Image dictionary is true - - - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + + + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 - An ExtGState dictionary contains the TR2 key with a value other than Default + The form XObject dictionary contains a PS key or Subtype2 key with value PS - - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword - shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. - spacingCompliesPDFA + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + The document contains a reference XObject (Ref key in the form XObject dictionary) - - - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + The document contains a PostScript XObject - - - + - - - All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - (isHex != true) || containsOnlyHex + + + An ExtGState dictionary shall not contain the TR key + TR == null - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + An ExtGState dictionary contains the TR key - - - A Field dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" - A Field dictionary contains an additional-actions dictionary (AA entry) + An ExtGState dictionary contains the TR2 key with a value other than Default - - - A conforming file shall not contain any PostScript XObjects - Subtype != "PS" + + + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - The document contains a PostScript XObject + A rendering intent with non-standard value is used - - - A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 + + + A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operators + false - A Widget annotation contains an additional-actions dictionary (AA entry) + A content stream contains an operator not defined in PDF Reference - - - A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys - F == null && FFilter == null && FDecodeParms == null + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + A Font dictionary has missing or invalid Type entry - + + + + - - - The LZWDecode filter shall not be permitted - filters == null || filters.indexOf("LZWDecode") == -1 + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - LZW compression is used + A Font dictionary has missing or invalid Subtype entry - + + + + + + - - - If an SMask key appears in an ExtGState dictionary, its value shall be None - SMask == null || SMask == "None" + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null - An ExtGState contains SMask key with a value other than None + A BaseFont entry is missing or has invalid type - + + + + + + - - - The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. - isMetadataValid + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null - %1 - - errorMessage - + A non-standard simple font dictionary has missing or invalid FirstChar entry + - + + - - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + A non-standard simple font dictionary has missing or invalid LastChar entry - + + + + - - - The LZWDecode filter shall not be permitted - F == null || F.indexOf("LZW") == -1 + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - LZW compression is used in the inline image + Widths array is missing or has invalid size - + + + + - - - Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - isGlyphPresent == true + + + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatible + areRegistryOrderingCompatible == true - Not all glyphs referenced for rendering are present in the embedded font program + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + + + - - - The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, - as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 - (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + + + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 + Subtype != "CIDFontType2" || CIDToGIDMap != null - Missing ID in the document trailer + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - + + + - - - A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + + + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + A CMap is different from "Identity-H" or "Identity-V" and is not embedded + + + + + + + + + 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 + WMode == dictWMode - The form XObject dictionary contains a PS key or Subtype2 key with value PS + WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) - S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3 + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - Unknown or not permitted action type + The font program is not embedded - + - - - The file header line shall be immediately followed by a comment consisting of a % character followed by at - least four characters, each of whose encoded byte values shall have a decimal value greater than 127 - headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + isGlyphPresent == true - Binary comment in the file header is missing or does not comply PDF/A requirements + Not all glyphs referenced for rendering are present in the embedded font program - - - 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 PDF Reference 9.6 - StructTreeRoot_size == 1 + + + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) - StructTreeRoot entry is not present in the document catalog + A Type1 font subset does not define CharSet entry in its Descriptor dictionary - + - - - The PDF/A Identification Schema has required prefix "pdfaid". - prefix == "pdfaid" + + + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) - A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". - - prefix - + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + - + + + - - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 + + + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistent + isWidthConsistent == true - An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding - isSymbolic == false || nrCmaps == 1 + + + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - The embedded font program for a symbolic TrueType font contains more than one cmap subtable + A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding @@ -696,49 +745,51 @@ - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 + + + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + isSymbolic == false || nrCmaps == 1 - A Form field dictionary contains the AA entry + The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + + + - - - An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, - Invisible and NoView flag bits shall be set to 0 - F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 + + + If an SMask key appears in an ExtGState dictionary, its value shall be None + SMask == null || SMask == "None" - Annotation flags are either missing or have forbidden values + An ExtGState contains SMask key with a value other than None - - - Absolute real value must be less than or equal to 32767.0 - (realValue >= -32767.0) && (realValue <= 32767.0) + + + An XObject dictionary shall not contain the SMask key + SMask_size == 0 - Real value out of range + An XObject contains an SMask key - + - - - Maximum depth of graphics state nesting by q and Q operators is 28 - nestingLevel <= 28 + + + A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionary + S != "Transparency" - Maximum depth of graphics state nesting (q and Q operators) is exceeded + A transparency group is present in a form XObject or page dictionary - + @@ -751,342 +802,404 @@ - - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 - Hexadecimal string contains odd number of non-white-space characters + An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + + + The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0 + ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 - A BaseFont entry is missing or has invalid type + An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 - - - - - - + - - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" - The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile + Unknown or not permitted annotation type - + - - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true + + + An annotation dictionary shall not contain the CA key with a value other than 1.0 + CA == null || CA == 1.0 - Encrypt keyword is present in the trailer dictionary + An annotation dictionary contains the CA key with value other than 1.0 - - - DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space - gOutputCS != null && gOutputCS == "RGB " + + + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0 + F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - DeviceRGB colour space is used without RGB output intent profile + Annotation flags are either missing or have forbidden values - - - An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + + + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - Alternates key is present in the Image dictionary( + Annotation's color or interior color is used without specifying RGB-based destination output profile - - - DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space - gOutputCS != null && gOutputCS == "CMYK" + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + subdictionary; otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) - DeviceCMYK colour space is used without CMYK output intent profile + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + + + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted action type + + + + + + + + + Interactive form fields shall not perform actions of any type + Subtype != "Widget" || A_size == 0 + + Interactive form field contains an action object ('A' key) - - - If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 - gOutputCS != null + + + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + Subtype != "Widget" || AA_size == 0 + + A Widget annotation contains an additional-actions dictionary (AA entry) + + + + + + + A Field dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 - DeviceGray colour space is used without output intent profile + A Field dictionary contains an additional-actions dictionary (AA entry) - - - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 - Last ID is present in the Linearized PDF and does not match the first page ID + The document catalog dictionary contains an additional-actions dictionary (AA entry) - - - + - - - An ExtGState dictionary shall not contain the TR key - TR == null + + + The document catalog dictionary of a conforming file shall contain the Metadata key. + metadata_size == 1 - An ExtGState dictionary contains the TR key + The document catalog dictionary doesn't contain metadata key. - - - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3 - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + + Metadata object stream dictionaries shall not contain the Filter key. + Filter == null - The font program is not embedded + The metadata object stream dictionary contains the Filter key. - - - + - - The % character of the file header shall occur at byte offset 0 of the file. - The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms - headerOffset == 0 && /%PDF-\d\.\d/.test(header) + + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + doesInfoMatchXMP - File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. - + - - - For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistent - isWidthConsistent == true + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + The XMP Package contains bytes attribute. - - - The document catalog dictionary of a conforming file shall contain the Metadata key. - metadata_size == 1 + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null - The document catalog dictionary doesn't contain metadata key. + The XMP Package contains encoding attribute. - - - Maximum capacity of a dictionary (in entries) is 4095 - size <= 4095 + + + Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. + containsUndefinedFields == false - Maximum capacity of a dictionary (4095) exceeded + An extension schema object contains fields not defined by the specification - + - - - No data shall follow the last end-of-file marker except a single optional end-of-line marker. - postEOFDataSize == 0 + + + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" - Data is present after the last end-of-file marker + Invalid syntax of the extension schema container - + + + - - - For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 - Subtype != "CIDFontType2" || CIDToGIDMap != null + + + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && + (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && + (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + Invalid Extension Schema definition - + - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + + + The Property type defined is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). + (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && + (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && + (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaProperty") ) - A Font dictionary has missing or invalid Type entry + Invalid extension schema Property type definition - - - - - - + - - - Maximum length of a name (in bytes) is 127 - internalRepresentation.length() <= 127 + + + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaType") ) && + (isFieldValidSeq == true && fieldPrefix == "pdfaType") - Maximum length of a Name (127) exceeded - - internalRepresentation.length() - + Invalid extension schema ValueType type definition + - - - + - - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - ispdfaidNSPresent + + + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + (isNameValidText == true && namePrefix == "pdfaField" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && + (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaField") ) - The document metadata stream doesn't contains PDF/A Identification Schema. + Invalid extension schema Field type definition - - - An XObject dictionary shall not contain the SMask key - SMask_size == 0 + + + The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions + isSerializationValid - An XObject contains an SMask key - + %1 + + errorMessage + - + - - - The xref keyword and the cross reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA + + + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + or extension schemas that comply with XMP Specification + (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - + %1 + + errorMessage + - - - A conforming file shall not contain any reference XObjects - Ref_size == 0 + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 - The document contains a reference XObject (Ref key in the form XObject dictionary) + The document metadata stream doesn't contains PDF/A Identification Schema. - - - All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 - CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 1 - A CMap is different from "Identity-H" or "Identity-V" and is not embedded - + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + + part + - - - + - - - A content stream shall not contain any operators not defined in PDF Reference - even if such operators are bracketed by the BX/EX compatibility operators - false + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. + conformance == "A" - A content stream contains an operator not defined in PDF Reference - + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file. + + conformance + - - - The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + + + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && + (amdPrefix == null || amdPrefix == "pdfaid") && + (corrPrefix == null || corrPrefix == "pdfaid") - The document catalog dictionary contains an additional-actions dictionary (AA entry) + A property of the PDF/A Identification Schema has an invalid namespace prefix - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + + The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true + Marked == true - Widths array is missing or has invalid size + /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false - - + - - - Maximum number of indirect objects in a PDF file is 8,388,607 - nrIndirects <= 8388607 + + + 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 PDF Reference 9.6 + StructTreeRoot_size == 1 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded + StructTreeRoot entry is not present in the document catalog - + - - - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + + Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem + Type == "StructElem" - Unknown or not permitted action type + Missing or invalid Type entry in the structure element dictionary - + @@ -1099,40 +1212,22 @@ - - - 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 - WMode == dictWMode + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + Subtype != "Widget" || (A_size == 0 && AA_size == 0) - WMode entry in the embedded CMap and in the CMap dictionary are not identical + A Widget annotation contains either A or AA entry - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - - A Font dictionary has missing or invalid Subtype entry - - - - - - - - - - - - An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + AA_size == 0 - OPI key is present in the XObject dictionary( + A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 0a00f092..0c4cb755 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,330 +1,388 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
+ + + The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + headerOffset == 0 && /%PDF-\d\.\d/.test(header) + + File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + + + + + + - The file header line shall be immediately followed by a comment consisting of a % character followed by at + The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127 - headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + binaryHeaderComplyPDFA Binary comment in the file header is missing or does not comply PDF/A requirements - - - Maximum number of DeviceN components is 8 - nrComponents <= 8 + + + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - Maximum number of DeviceN components is exceeded + Missing ID in the document trailer - - - + - - - For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + Encrypt keyword is present in the trailer dictionary - - - + - - - A Group object with an S key with a value of Transparency shall not be included in a form XObject. - A Group object with an S key with a value of Transparency shall not be included in a page dictionary - S != "Transparency" + + + No data shall follow the last end-of-file marker except a single optional end-of-line marker. + eofCompliesPDFA - A transparency group is present in a form XObject or page dictionary + Data is present after the last end-of-file marker + + + + + + + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + Last ID is present in the Linearized PDF and does not match the first page ID - + - - - The PDF/A Identification Schema has required prefix "pdfaid". - prefix == "pdfaid" + + + In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + subsectionHeaderSpaceSeparated == true - A PDF/A Identification Schema namespace prefix is %1, but shall be "pdfaid". - - prefix - + Spacings of subsection headers in the cross reference table do not comply PDF/A specification + - - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 + + + The xref keyword and the cross reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA - An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - - - If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. - doesInfoMatchXMP + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 - Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + Hexadecimal string contains odd number of non-white-space characters - - - + - - - All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null + + + All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f + (isHex != true) || isHexSymbols - A symbolic TrueType font specifies an Encoding entry in its dictionary + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - - - + - - - Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding - isSymbolic == false || nrCmaps == 1 + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword + isLengthCorrect - The embedded font program for a symbolic TrueType font contains more than one cmap subtable + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + + + A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + - - - An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, - Invisible and NoView flag bits shall be set to 0 - F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA - Annotation flags are either missing or have forbidden values + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 + + + The LZWDecode filter shall not be permitted + filters == null || filters.indexOf("LZWDecode") == -1 - A Form field dictionary contains the AA entry + LZW compression is used - - - Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + + + The LZWDecode filter shall not be permitted + F == null || F.indexOf("LZW") == -1 - A rendering intent with non-standard value is used + LZW compression is used in the inline image - - - Absolute real value must be less than or equal to 32767.0 - (realValue >= -32767.0) && (realValue <= 32767.0) + + + A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key + EF == null - Real value out of range + A file specification dictionary contains the EF key - + - - - Maximum depth of graphics state nesting by q and Q operators is 28 - nestingLevel <= 28 + + + A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + EmbeddedFiles_size == 0 - Maximum depth of graphics state nesting (q and Q operators) is exceeded + The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + + + + + + + + + Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range - - - The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible - BM == null || BM == "Normal" || BM == "Compatible" + + + Absolute real value must be less than or equal to 32767.0 + (realValue >= -32767.0) && (realValue <= 32767.0) - An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible + Real value out of range - + + + - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 + + Maximum length of a string (in bytes) is 65535 + value.length() < 65536 - Hexadecimal string contains odd number of non-white-space characters + Maximum length of a String (65535) exceeded - + + + - - - The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification. - corr == null + + + Maximum length of a name (in bytes) is 127 + internalRepresentation.length() <= 127 - The "corr" property of the PDF/A Identification Schema should not be used in PDF/A-1 conforming file. - + Maximum length of a Name (127) exceeded + + internalRepresentation.length() + - + + + - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || LastChar != null + + + Maximum capacity of an array (in elements) is 8191 + size <= 8191 - A non-standard simple font dictionary has missing or invalid LastChar entry + Maximum capacity of an array (8191) exceeded - - + - - - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file - following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword - isLengthCorrect + + + Maximum capacity of a dictionary (in entries) is 4095 + size <= 4095 - Actual length of the stream does not match the value of the Length key in the Stream dictionary + Maximum capacity of a dictionary (4095) exceeded - + + + - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + + + Maximum number of indirect objects in a PDF file is 8,388,607 + nrIndirects <= 8388607 - A BaseFont entry is missing or has invalid type + Maximum number of indirect objects (8,388,607) in a PDF file exceeded - - - - + - - - Maximum length of a string (in bytes) is 65535 - value.length() < 65536 + + + Maximum depth of graphics state nesting by q and Q operators is 28 + nestingLevel <= 28 - Maximum length of a String (65535) exceeded + Maximum depth of graphics state nesting (q and Q operators) is exceeded - - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + + + Maximum number of DeviceN components is 8 + nrComponents <= 8 - The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile + Maximum number of DeviceN components is exceeded - + - - - DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space - gOutputCS != null && gOutputCS == "RGB " + + + Maximum value of a CID (character identifier) is 65,535 + CID <= 65535 - DeviceRGB colour space is used without RGB output intent profile + Maximum value of a CID (65,535) is exceeded - + + + - - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true + + + The document catalog dictionary shall not contain a key with the name OCProperties + isOptionalContentPresent == false - Encrypt keyword is present in the trailer dictionary + The document catalog dictionary contains the OCProperties entry - - - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, - Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" + + + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 - Unknown or not permitted annotation type + The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information - + - - - An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + + + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - Alternates key is present in the Image dictionary( + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - - - For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 - A Type1 font subset does not define CharSet entry in its Descriptor dictionary + The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements - + + + + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space @@ -345,189 +403,175 @@ - - - The bytes attribute shall not be used in the header of an XMP packet. - bytes == null - - The XMP Package contains bytes attribute. - - - - - - - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - (isLinearized != true)|| lastID == null || (firstPageID == lastID) + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) - Last ID is present in the Linearized PDF and does not match the first page ID + The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile - + - - - The encoding attribute shall not be used in the header of an XMP packet. - encoding == null + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 - The XMP Package contains encoding attribute. + Alternates key is present in the Image dictionary( - - - An ExtGState dictionary shall not contain the TR key - TR == null + + + An XObject dictionary (Image or Form) shall not contain the OPI key + OPI_size == 0 - An ExtGState dictionary contains the TR key + OPI key is present in the XObject dictionary( - - - Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 - (intValue <= 2147483647) && (intValue >= -2147483648) - - Integer value out of range - - - - - - - - - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3 - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + + If an Image dictionary contains the Interpolate key, its value shall be false + Interpolate == false - The font program is not embedded + The value of the Interpolate key in the Image dictionary is true - - - + - - - Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 + + + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 - Maximum value of a CID (65,535) is exceeded + The form XObject dictionary contains a PS key or Subtype2 key with value PS - - - + - - - An annotation dictionary shall not contain the C array or the IC array unless the colour space of the - DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 - Annotation's color or interior color is used without specifying RGB-based destination output profile + The document contains a reference XObject (Ref key in the form XObject dictionary) - - - The % character of the file header shall occur at byte offset 0 of the file. - The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms - headerOffset == 0 && /%PDF-\d\.\d/.test(header) + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" - File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + The document contains a PostScript XObject - - - + - - - For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistent - isWidthConsistent == true + + + An ExtGState dictionary shall not contain the TR key + TR == null - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + An ExtGState dictionary contains the TR key - - The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" - An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 + An ExtGState dictionary contains the TR2 key with a value other than Default - - - Metadata object stream dictionaries shall not contain the Filter key. - Filter == null + + + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - The metadata object stream dictionary contains the Filter key. + A rendering intent with non-standard value is used - - - The document catalog dictionary of a conforming file shall contain the Metadata key. - metadata_size == 1 + + + A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operators + false - The document catalog dictionary doesn't contain metadata key. + A content stream contains an operator not defined in PDF Reference - - - Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" - Interactive form field contains an action object ('A' key) + A Font dictionary has missing or invalid Type entry - + + + + + + - - - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents - array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information + A Font dictionary has missing or invalid Subtype entry - + + + + - - - Maximum capacity of a dictionary (in entries) is 4095 - size <= 4095 + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null - Maximum capacity of a dictionary (4095) exceeded + A BaseFont entry is missing or has invalid type - + + + + - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null @@ -539,68 +583,50 @@ - - - No data shall follow the last end-of-file marker except a single optional end-of-line marker. - postEOFDataSize == 0 - - Data is present after the last end-of-file marker - - - - - - - If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - - - - - - - A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null - The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + A non-standard simple font dictionary has missing or invalid LastChar entry - + + - - - All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding + Widths array is missing or has invalid size - + + - - - A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 + + + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatible + areRegistryOrderingCompatible == true - A file specification dictionary contains the EF key + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + - For all Type 2 CIDFonts, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping + For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -611,235 +637,264 @@ - - - The document catalog dictionary shall not contain a key with the name OCProperties - isOptionalContentPresent == false + + + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 - The document catalog dictionary contains the OCProperties entry + A CMap is different from "Identity-H" or "Identity-V" and is not embedded - + + + - - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. - part == 1 + + + 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 + WMode == dictWMode - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. - - part - + WMode entry in the embedded CMap and in the CMap dictionary are not identical + - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3 + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - A Font dictionary has missing or invalid Type entry + The font program is not embedded - - - - + - - - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatible - areRegistryOrderingCompatible == true + + + Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + isGlyphPresent == true - Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + Not all glyphs referenced for rendering are present in the embedded font program - - - + - - - Maximum length of a name (in bytes) is 127 - internalRepresentation.length() <= 127 + + + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) - Maximum length of a Name (127) exceeded - - internalRepresentation.length() - + A Type1 font subset does not define CharSet entry in its Descriptor dictionary + - + - - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - ispdfaidNSPresent + + + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) - The document metadata stream doesn't contains PDF/A Identification Schema. + A CID Font subset does not define CIDSet entry in its Descriptor dictionary - + + + - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + + For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistent + isWidthConsistent == true - A Widget annotation contains either A or AA entry + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - An XObject dictionary shall not contain the SMask key - SMask_size == 0 + + + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - An XObject contains an SMask key + A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding - + - - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + + + All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null - The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements + A symbolic TrueType font specifies an Encoding entry in its dictionary - + - - - Maximum capacity of an array (in elements) is 8191 - size <= 8191 + + + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + isSymbolic == false || nrCmaps == 1 - Maximum capacity of an array (8191) exceeded + The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + - - - If an Image dictionary contains the Interpolate key, its value shall be false - Interpolate == false + + + If an SMask key appears in an ExtGState dictionary, its value shall be None + SMask == null || SMask == "None" - The value of the Interpolate key in the Image dictionary is true + An ExtGState contains SMask key with a value other than None - - - The xref keyword and the cross reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA + + + An XObject dictionary shall not contain the SMask key + SMask_size == 0 - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + An XObject contains an SMask key - + + + - - - An annotation dictionary shall not contain the CA key with a value other than 1.0 - CA == null || CA == 1.0 + + + A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionary + S != "Transparency" - An annotation dictionary contains the CA key with value other than 1.0 + A transparency group is present in a form XObject or page dictionary + + + + + + + + + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible + BM == null || BM == "Normal" || BM == "Compatible" + + An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible - - - A conforming file shall not contain any reference XObjects - Ref_size == 0 + + + The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 - The document contains a reference XObject (Ref key in the form XObject dictionary) + An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 - - - A content stream shall not contain any operators not defined in PDF Reference - even if such operators are bracketed by the BX/EX compatibility operators - false + + + The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0 + ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 - A content stream contains an operator not defined in PDF Reference + An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 - - - All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 - CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + + + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" - A CMap is different from "Identity-H" or "Identity-V" and is not embedded + Unknown or not permitted annotation type - + - - - The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + + + An annotation dictionary shall not contain the CA key with a value other than 1.0 + CA == null || CA == 1.0 - The document catalog dictionary contains an additional-actions dictionary (AA entry) + An annotation dictionary contains the CA key with value other than 1.0 - - - In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) - subsectionHeaderSpaceSeparated == true + + + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0 + F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - Spacings of subsection headers in the cross reference table do not comply PDF/A specification + Annotation flags are either missing or have forbidden values + + + + + + + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + + Annotation's color or interior color is used without specifying RGB-based destination output profile - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + subdictionary; otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) - Widths array is missing or has invalid size + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - - + - - - Maximum number of indirect objects in a PDF file is 8,388,607 - nrIndirects <= 8388607 + + + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Maximum number of indirect objects (8,388,607) in a PDF file exceeded + Unknown or not permitted action type - + @@ -854,38 +909,22 @@ - - - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + + + Interactive form fields shall not perform actions of any type + Subtype != "Widget" || A_size == 0 - An ExtGState dictionary contains the TR2 key with a value other than Default + Interactive form field contains an action object ('A' key) - - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) - - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - - - - - - - - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword - shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. - spacingCompliesPDFA + + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + Subtype != "Widget" || AA_size == 0 - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + A Widget annotation contains an additional-actions dictionary (AA entry) @@ -900,94 +939,162 @@ - - - All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - (isHex != true) || containsOnlyHex + + + The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + AA_size == 0 - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + The document catalog dictionary contains an additional-actions dictionary (AA entry) - - - A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 + + + The document catalog dictionary of a conforming file shall contain the Metadata key. + metadata_size == 1 - A Widget annotation contains an additional-actions dictionary (AA entry) + The document catalog dictionary doesn't contain metadata key. - - - A conforming file shall not contain any PostScript XObjects - Subtype != "PS" + + + Metadata object stream dictionaries shall not contain the Filter key. + Filter == null - The document contains a PostScript XObject + The metadata object stream dictionary contains the Filter key. - - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false - NeedAppearances == null || NeedAppearances == false + + + If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + doesInfoMatchXMP - The interactive form dictionary contains the NeedAppearances flag with value true + Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + + + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. - - - A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys - F == null && FFilter == null && FDecodeParms == null + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + The XMP Package contains encoding attribute. + + + + + + + Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. + containsUndefinedFields == false + + An extension schema object contains fields not defined by the specification - + - - - The LZWDecode filter shall not be permitted - filters == null || filters.indexOf("LZWDecode") == -1 + + + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" - LZW compression is used + Invalid syntax of the extension schema container + + + + + + + + + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && + (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && + (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) + + Invalid Extension Schema definition + + + + + + + + + The Property type defined is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). + (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && + (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && + (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaProperty") ) + + Invalid extension schema Property type definition - - - If an SMask key appears in an ExtGState dictionary, its value shall be None - SMask == null || SMask == "None" + + + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaType") ) && + (isFieldValidSeq == true && fieldPrefix == "pdfaType") - An ExtGState contains SMask key with a value other than None + Invalid extension schema ValueType type definition - - - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" || conformance == "A" + + + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + (isNameValidText == true && namePrefix == "pdfaField" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && + (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaField") ) - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. - - conformance - + Invalid extension schema Field type definition + - The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions. - isMetadataValid + The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions + isSerializationValid %1 @@ -998,105 +1105,93 @@ - - - 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 - WMode == dictWMode + + + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + or extension schemas that comply with XMP Specification + (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + %1 + + errorMessage + - - - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - - A Font dictionary has missing or invalid Subtype entry - - - - - - - - - - - - Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - isGlyphPresent == true + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 - Not all glyphs referenced for rendering are present in the embedded font program + The document metadata stream doesn't contains PDF/A Identification Schema. - - - The LZWDecode filter shall not be permitted - F == null || F.indexOf("LZW") == -1 + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 1 - LZW compression is used in the inline image - + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + + part + - - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" || conformance == "A" - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. + + conformance + - - - The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, - as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 - (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + + + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && + (amdPrefix == null || amdPrefix == "pdfaid") && + (corrPrefix == null || corrPrefix == "pdfaid") - Missing ID in the document trailer + A property of the PDF/A Identification Schema has an invalid namespace prefix - - - An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false + NeedAppearances == null || NeedAppearances == false - OPI key is present in the XObject dictionary( + The interactive form dictionary contains the NeedAppearances flag with value true - - - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) - S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + Subtype != "Widget" || (A_size == 0 && AA_size == 0) - Unknown or not permitted action type + A Widget annotation contains either A or AA entry - - - + - - - A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + AA_size == 0 - The form XObject dictionary contains a PS key or Subtype2 key with value PS + A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 7eb90dde..3b8e1cc9 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,152 +1,197 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011
- - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. - (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h) + headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) - An annotation does not contain an appearance dictionary + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification - - - 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. - WMode == dictWMode + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - WMode entry in the embedded CMap and in the CMap dictionary are not identical + Binary comment in the file header is missing or does not comply PDF/A requirements - - - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID != null - The document uses the blend mode not defined in ISO 32000-1:2008 + Missing ID in the document trailer - + - - - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - gOutputCS != null && gOutputCS == "CMYK" + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true - DeviceCMYK colour space is used without CMYK output intent profile + Encrypt keyword is present in the trailer dictionary - - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 2. - part == 2 + + + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + postEOFDataSize == 0 - The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. - - part - + Data is present after the last end-of-file marker + + + + + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + - - - A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. - (intValue <= 2147483647) && (intValue >= -2147483648) + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 - Integer value out of range + The number of hexadecimal digits in a hexadecimal string shall always be even - - - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. - F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex - Inline image uses LZW, Crypt or one of the unknown filters + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect - A symbolic TrueType font specifies an Encoding entry in its dictionary + Actual length of the stream does not match the value of the Length key in the Stream dictionary - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker. + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant - Widths array is missing or has invalid size + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. + filters == null || filters.indexOf("LZWDecode") == -1 + + LZW compression is used + + + + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence - - + - - - A conforming file shall not contain more than 8388607 indirect objects - nrIndirects <= 8388607 + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA - Maximum number of indirect objects (8,388,607) in a PDF file exceeded + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. - isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value. + F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) - The embedded font program for a symbolic TrueType font contains more than one cmap subtable + Inline image uses LZW, Crypt or one of the unknown filters - - - An ExtGState dictionary shall not contain the TR key - TR == null + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + (intValue <= 2147483647) && (intValue >= -2147483648) - An ExtGState dictionary contains the TR key + Integer value out of range + + + + + + + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 + (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + Real value out of range - + A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32767 @@ -155,40 +200,58 @@ - - - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + + A conforming file shall not contain any name longer than 127 bytes. + internalRepresentation.length() <= 127 - Unknown or not permitted named action + Maximum length of a Name (127) exceeded - - - + - - A document's Catalog shall not contain the NeedsRendering key. - NeedsRendering == false + + A conforming file shall not contain more than 8388607 indirect objects + nrIndirects <= 8388607 - A document's Catalog contains NeedsRendering flag set to true + Maximum number of indirect objects (8,388,607) in a PDF file exceeded - - - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + + + A conforming file shall not nest q/Q pairs by more than 28 nesting levels + nestingLevel <= 28 - An ExtGState dictionary contains the TR2 key with a value other than Default + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + + + + + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + nrComponents <= 32 + + Maximum number of DeviceN components (32) is exceeded + + + + + + + A conforming file shall not contain a CID value greater than 65535. + CID <= 65535 + + Maximum value of a CID (65535) is exceeded - + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 @@ -198,44 +261,45 @@ - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + + + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + by the BX/EX compatibility operators. + false - A BaseFont entry is missing or has invalid type + A content stream contains an operator not defined in ISO 32000-1 - - - - - + - - - The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The document catalog dictionary contains an additional-actions dictionary (AA entry) + The embedded PDF/A Output Intent colour profile has invalid header - + + + - - - A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 - (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - Real value out of range + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. DestOutputProfileRef_size == 0 @@ -246,86 +310,43 @@ - - - The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + + + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 - The file specification dictionary for an embedded file does not contain either F or EF key - - - - - - - An Image dictionary shall not contain the Alternates key - Alternates_size == 0 - - Alternates key is present in the Image dictionary( - - - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - - A Font dictionary has missing or invalid Subtype entry - - - - - - - - - - - - - - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - - The font program is not embedded + The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - + - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || LastChar != null + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + gOutputCS != null && gOutputCS == "RGB " - A non-standard simple font dictionary has missing or invalid LastChar entry + DeviceRGB colour space is used without RGB output intent profile - - - - + - - - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. - filters == null || filters.indexOf("LZWDecode") == -1 + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + gOutputCS != null && gOutputCS == "CMYK" - LZW compression is used + DeviceCMYK colour space is used without CMYK output intent profile - + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present. gOutputCS != null @@ -335,131 +356,125 @@ - - - A conforming file shall not nest q/Q pairs by more than 28 nesting levels - nestingLevel <= 28 + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true - Maximum depth of graphics state nesting (q and Q operators) is exceeded + A colorant of the DeviceN color space is not defined in the Colorants dictionary - + + + - - - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators. - false + + + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true - A content stream contains an operator not defined in ISO 32000-1 + Several occurrances of a Separation colour space with the same name are not consistent - - - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " + + + An ExtGState dictionary shall not contain the TR key + TR == null - DeviceRGB colour space is used without RGB output intent profile + An ExtGState dictionary contains the TR key - - - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. - F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + An ExtGState dictionary contains the TR2 key with a value other than Default - - - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + + An ExtGState dictionary shall not contain the HTP key + HTP_size == 0 - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + An ExtGState dictionary contains the HTP key - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) + + + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - Text annotation has one of the flags NoZoom or NoRotate set to 0 + A Halftone has type other than 1 or 5 - - - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null + + + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + HalftoneName == null - A dictionary of a non-Popup annotation does not contain F key + A Halftone dictionary contains the HalftoneName key - - - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. - areColorantsPresent == true + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A rendering intent with non-standard value is used - - - + - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 - A Widget annotation contains either A or AA entry + Alternates key is present in the Image dictionary( - - - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + + + An Image dictionary shall not contain the OPI key + OPI_size == 0 - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements + OPI key is present in the XObject dictionary( - - - + - - - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true + + + If an Image dictionary contains the Interpolate key, its value shall be false. + For an inline image, the I key shall have a value of false. + Interpolate == false - A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + The value of the Interpolate key in the Image dictionary is true - + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 @@ -468,56 +483,42 @@ - - - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - isWidthConsistent == true - - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - - - - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. - spacingCompliesPDFA + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + The document contains a reference XObject (Ref key in the form XObject dictionary) - - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. - NeedAppearances == null || NeedAppearances == false + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" - The interactive form dictionary contains the NeedAppearances flag with value true + The document contains a PostScript XObject - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || FirstChar != null + + + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" - A non-standard simple font dictionary has missing or invalid FirstChar entry + The document uses the blend mode not defined in ISO 32000-1:2008 - - + - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary @@ -533,157 +534,190 @@ - - - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 - headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - Binary comment in the file header is missing or does not comply PDF/A requirements + A Font dictionary has missing or invalid Subtype entry - + + + + + + + + - - - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. - nrComponents <= 32 + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null - Maximum number of DeviceN components (32) is exceeded + A BaseFont entry is missing or has invalid type - + + + + + - - - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. - postEOFDataSize == 0 + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null - Data is present after the last end-of-file marker + A non-standard simple font dictionary has missing or invalid FirstChar entry - + + - - - A conforming file shall not contain any PostScript XObjects - Subtype != "PS" - - The document contains a PostScript XObject - - - - - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 - - A Form field dictionary contains the AA entry - - - - - - - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null - Unknown or not permitted action type + A non-standard simple font dictionary has missing or invalid LastChar entry - + + - - - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + Widths array is missing or has invalid size - + + + + - - - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - A rendering intent with non-standard value is used + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - + + + - - - A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1 - Maximum value of a CID (65535) is exceeded + A non-standard CMap is not embedded - + + + - - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true + + + 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. + WMode == dictWMode - Encrypt keyword is present in the trailer dictionary + WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false. - Interpolate == false + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - The value of the Interpolate key in the Image dictionary is true + The font program is not embedded - + + + - - - The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + isGlyphPresent == true - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Not all glyphs referenced for rendering are present in the embedded font program - - - A conforming file shall not contain any name longer than 127 bytes. - internalRepresentation.length() <= 127 + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + CharSet == null || charSetListsAllGlyphs == true - Maximum length of a Name (127) exceeded + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. CIDSet_size == 0 || cidSetListsAllGlyphs == true @@ -693,274 +727,233 @@ - - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + isWidthConsistent == true - The number of hexadecimal digits in a hexadecimal string shall always be even + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. - HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps >= 1 - A Halftone has type other than 1 or 5 + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - - - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" - - Unknown or not permitted annotation type - - - - - - - - - The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null - - Missing ID in the document trailer - - - - - - - - - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, - if present, shall not contain the XFA key. - XFA_size == 0 + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - The interactive form dictionary contains the XFA key + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - - - All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null - Several occurrances of a Separation colour space with the same name are not consistent + A symbolic TrueType font specifies an Encoding entry in its dictionary - - - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true - Actual length of the stream does not match the value of the Length key in the Stream dictionary + The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" + + + A PDF/A-2 compliant document 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. + name != ".notdef" - The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. - - conformance - + The document contains a reference to the .notdef glyph + - - - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. - isValidUtf8 == true + + + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" - The name object does not represent a correct Utf8 byte sequence + Unknown or not permitted annotation type - + - - - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is - compliant with either ISO 19005-1 or this part of ISO 19005. - isValidPDFA12 == true + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null - An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 + A dictionary of a non-Popup annotation does not contain F key - - - A conforming file shall not contain any reference XObjects - Ref_size == 0 + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - The document contains a reference XObject (Ref key in the form XObject dictionary) + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - - - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. + Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h) - headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + An annotation does not contain an appearance dictionary - - - An Image dictionary shall not contain the OPI key - OPI_size == 0 + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) - OPI key is present in the XObject dictionary( + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - - - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - - - - - - - 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + Subtype != "Widget" || (A_size == 0 && AA_size == 0) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A Widget annotation contains either A or AA entry - - - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. - HalftoneName == null + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + AA_size == 0 - A Halftone dictionary contains the HalftoneName key + A Form field dictionary contains the AA entry - - - A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys - F == null && FFilter == null && FDecodeParms == null + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + The interactive form dictionary contains the NeedAppearances flag with value true - - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + XFA_size == 0 - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + The interactive form dictionary contains the XFA key - - - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - isGlyphPresent == true + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false - Not all glyphs referenced for rendering are present in the embedded font program + A document's Catalog contains NeedsRendering flag set to true - - - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - The embedded PDF/A Output Intent colour profile has invalid header + Unknown or not permitted action type - + - - - An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - An ExtGState dictionary contains the HTP key + Unknown or not permitted named action - + + + - - - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + + The document's Catalog shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + The document catalog dictionary contains an additional-actions dictionary (AA entry) - + The Page dictionary shall not include an AA entry for an additional-actions dictionary. AA_size == 0 @@ -969,41 +962,48 @@ - - - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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-EUC-H" || CMapName == "GBK2K-EUC-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" || - embeddedFile_size == 1 + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + compliance with this part of ISO 19005 shall use a value of 2. + part == 2 - A non-standard CMap is not embedded + The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. + + part + + + + + + + Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" + + The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. + + conformance + + + + + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is + compliant with either ISO 19005-1 or this part of ISO 19005. + isValidPDFA12 == true + + An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 - - - + - - - A PDF/A-2 compliant document 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. - name != ".notdef" + + + The file specification dictionary for an embedded file shall contain the F and UF keys + EF_size == 0 || (F != null && UF != null) - The document contains a reference to the .notdef glyph + The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 889c5866..b5f51d79 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,265 +1,247 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012
- - - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h) + headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) - Unknown or not permitted named action + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification - - - + - - - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. - HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - A Halftone has type other than 1 or 5 + Binary comment in the file header is missing or does not comply PDF/A requirements - - - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID != null - The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key + Missing ID in the document trailer + + + + + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary - - A conforming file shall not contain more than 8388607 indirect objects - nrIndirects <= 8388607 + + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + postEOFDataSize == 0 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded + Data is present after the last end-of-file marker - + + + - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. - (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA - An annotation does not contain an appearance dictionary + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - - - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + The number of hexadecimal digits in a hexadecimal string shall always be even - - - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - - - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect - The embedded PDF/A Output Intent colour profile has invalid header + Actual length of the stream does not match the value of the Length key in the Stream dictionary - - - + - - - An Image dictionary shall not contain the OPI key - OPI_size == 0 + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker. + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant - OPI key is present in the XObject dictionary( + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - - - A conforming file shall not nest q/Q pairs by more than 28 nesting levels - nestingLevel <= 28 + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null - Maximum depth of graphics state nesting (q and Q operators) is exceeded + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - - - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. + filters == null || filters.indexOf("LZWDecode") == -1 - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + LZW compression is used - - - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true - The document uses the blend mode not defined in ISO 32000-1:2008 + The name object does not represent a correct Utf8 byte sequence - + - - - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - isGlyphPresent == true + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA - Not all glyphs referenced for rendering are present in the embedded font program + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value. + F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) - The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. - - conformance - + Inline image uses LZW, Crypt or one of the unknown filters + - - - 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + (intValue <= 2147483647) && (intValue >= -2147483648) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + Integer value out of range - - - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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-EUC-H" || CMapName == "GBK2K-EUC-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" || - embeddedFile_size == 1 + + + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 + (realValue >= -3.403e+38) && (realValue <= 3.403e+38) - A non-standard CMap is not embedded + Real value out of range - - - + - - - A document's Catalog shall not contain the NeedsRendering key. - NeedsRendering == false + + + A conforming file shall not contain any string longer than 32767 bytes. + value.length() < 32767 - A document's Catalog contains NeedsRendering flag set to true + Maximum length of a String (32767) exceeded - - - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. - HalftoneName == null + + + A conforming file shall not contain any name longer than 127 bytes. + internalRepresentation.length() <= 127 - A Halftone dictionary contains the HalftoneName key + Maximum length of a Name (127) exceeded - - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 + + + A conforming file shall not contain more than 8388607 indirect objects + nrIndirects <= 8388607 - The number of hexadecimal digits in a hexadecimal string shall always be even + Maximum number of indirect objects (8,388,607) in a PDF file exceeded - - - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null + + + A conforming file shall not nest q/Q pairs by more than 28 nesting levels + nestingLevel <= 28 - A dictionary of a non-Popup annotation does not contain F key + Maximum depth of graphics state nesting (q and Q operators) is exceeded - - - The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units - in either direction, nor shall it be greater than 14 400 units in either direction. - top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + + + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + nrComponents <= 32 - One of the bage boundaries is out of range (3-14400) in one of the directions + Maximum number of DeviceN components (32) is exceeded - + A conforming file shall not contain a CID value greater than 65535. CID <= 65535 @@ -268,94 +250,126 @@ - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units + in either direction, nor shall it be greater than 14 400 units in either direction. + top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 - A Widget annotation contains either A or AA entry + One of the bage boundaries is out of range (3-14400) in one of the directions - - - A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + + + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + by the BX/EX compatibility operators. + false - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + A content stream contains an operator not defined in ISO 32000-1 - - - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + The embedded PDF/A Output Intent colour profile has invalid header - + + + - - - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. - nrComponents <= 32 + + + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect - Maximum number of DeviceN components (32) is exceeded + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - - - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + DestOutputProfileRef_size == 0 - Unknown or not permitted action type + The output intent dictionary contains forbidden entry DestOutputProfileRef - + - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 - A Font dictionary has missing or invalid Subtype entry + The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - - - - - - + - - - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + gOutputCS != null && gOutputCS == "RGB " - Actual length of the stream does not match the value of the Length key in the Stream dictionary + DeviceRGB colour space is used without RGB output intent profile + + + + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + or if a PDF/A OutputIntent is present. + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + - + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression @@ -367,139 +381,110 @@ - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - - Widths array is missing or has invalid size - - - - - - - - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || FirstChar != null + + + An ExtGState dictionary shall not contain the TR key + TR == null - A non-standard simple font dictionary has missing or invalid FirstChar entry + An ExtGState dictionary contains the TR key - - - - + - - - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 - headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" - Binary comment in the file header is missing or does not comply PDF/A requirements + An ExtGState dictionary contains the TR2 key with a value other than Default - - - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h) - headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) + + + An ExtGState dictionary shall not contain the HTP key + HTP_size == 0 - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + An ExtGState dictionary contains the HTP key - - - The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. - If the MIME type is not known, the "application/octet-stream" shall be used. - Subtype != null + + + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - An embedded file dictionary doe snot contain the MIME type information (Subtype entry) + A Halftone has type other than 1 or 5 - - - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present. - gOutputCS != null + + + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + HalftoneName == null - DeviceGray colour space is used without output intent profile + A Halftone dictionary contains the HalftoneName key - - - An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - An ExtGState dictionary contains the HTP key + A rendering intent with non-standard value is used - - - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - gOutputCS != null && gOutputCS == "CMYK" + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 - DeviceCMYK colour space is used without CMYK output intent profile + Alternates key is present in the Image dictionary( - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null + + + An Image dictionary shall not contain the OPI key + OPI_size == 0 - A symbolic TrueType font specifies an Encoding entry in its dictionary + OPI key is present in the XObject dictionary( - - - A PDF/A-2 compliant document 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. - name != ".notdef" + + + If an Image dictionary contains the Interpolate key, its value shall be false. + For an inline image, the I key shall have a value of false. + Interpolate == false - The document contains a reference to the .notdef glyph + The value of the Interpolate key in the Image dictionary is true - - - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key - + A conforming file shall not contain any reference XObjects Ref_size == 0 @@ -508,53 +493,72 @@ - - - A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. - (intValue <= 2147483647) && (intValue >= -2147483648) + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" - Integer value out of range + The document contains a PostScript XObject - - - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" - The font program is not embedded + The document uses the blend mode not defined in ISO 32000-1:2008 - + - - - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" - DeviceRGB colour space is used without RGB output intent profile + A Font dictionary has missing or invalid Type entry - + + + + + + - - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. - NeedAppearances == null || NeedAppearances == false + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - The interactive form dictionary contains the NeedAppearances flag with value true + A Font dictionary has missing or invalid Subtype entry - + + + + + + + + - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -567,94 +571,44 @@ - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. - isSymbolic == false || nrCmaps == 1 || cmap30Present == true - - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - - - - - A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 - (realValue >= -3.403e+38) && (realValue <= 3.403e+38) - - Real value out of range - - - - - - - An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" - - An ExtGState dictionary contains the TR2 key with a value other than Default - - - - - - - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators. - false - - A content stream contains an operator not defined in ISO 32000-1 - - - - - - - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. - F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) - - Inline image uses LZW, Crypt or one of the unknown filters - - - - - - - An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null - Alternates key is present in the Image dictionary( + A non-standard simple font dictionary has missing or invalid FirstChar entry - + + + + - - - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null - A Font dictionary has missing or invalid Type entry + A non-standard simple font dictionary has missing or invalid LastChar entry - - - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - isStandard == true || LastChar != null + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - A non-standard simple font dictionary has missing or invalid LastChar entry + Widths array is missing or has invalid size @@ -662,362 +616,408 @@ - - - A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys - F == null && FFilter == null && FDecodeParms == null + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. - F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - + + + - - - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1 - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements + A non-standard CMap is not embedded - + - - - The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + + + 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. + WMode == dictWMode - The document catalog dictionary contains an additional-actions dictionary (AA entry) + WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, - if present, shall not contain the XFA key. - XFA_size == 0 + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 - The interactive form dictionary contains the XFA key + The font program is not embedded + + + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program - - - A conforming file shall not contain any name longer than 127 bytes. - internalRepresentation.length() <= 127 + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + CharSet == null || charSetListsAllGlyphs == true - Maximum length of a Name (127) exceeded + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program - - - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. - areColorantsPresent == true + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + CIDSet_size == 0 || cidSetListsAllGlyphs == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A CID Font subset does not define CIDSet entry in its Descriptor dictionary - - - + - - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. - spacingCompliesPDFA + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + isWidthConsistent == true - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps >= 1 - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - - - The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - Missing ID in the document trailer + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - - - + - - - In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, - a new (required) key has been defined and its presence (in the dictionary) is required. - AFRelationship != null + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null - The file specification dictionary for an embedded file does not contain the AFRelationship key + A symbolic TrueType font specifies an Encoding entry in its dictionary - - - The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The file specification dictionary for an embedded file does not contain either F or EF key + The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - 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. - WMode == dictWMode + + + A PDF/A-2 compliant document 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. + name != ".notdef" - WMode entry in the embedded CMap and in the CMap dictionary are not identical + The document contains a reference to the .notdef glyph - - - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + + + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" - The output intent dictionary contains forbidden entry DestOutputProfileRef + Unknown or not permitted annotation type - + - - - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null - A rendering intent with non-standard value is used + A dictionary of a non-Popup annotation does not contain F key - - - A conforming file shall not contain any PostScript XObjects - Subtype != "PS" + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - The document contains a PostScript XObject + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + + + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. + Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) - A Form field dictionary contains the AA entry + Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false. - Interpolate == false + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null - The value of the Interpolate key in the Image dictionary is true + An annotation does not contain an appearance dictionary - - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) - Unknown or not permitted annotation type + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - - - + - - - A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + Subtype != "Widget" || (A_size == 0 && AA_size == 0) - Maximum length of a String (32767) exceeded + A Widget annotation contains either A or AA entry - - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 3. - part == 3 + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + AA_size == 0 - The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. - - part - + A Form field dictionary contains the AA entry + - - - An ExtGState dictionary shall not contain the TR key - TR == null + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false - An ExtGState dictionary contains the TR key + The interactive form dictionary contains the NeedAppearances flag with value true - - - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. - CIDSet_size == 0 || cidSetListsAllGlyphs == true + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + XFA_size == 0 - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + The interactive form dictionary contains the XFA key - - - The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false - The Page dictionary contains an additional-actions dictionary (AA entry) + A document's Catalog contains NeedsRendering flag set to true - - - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - isWidthConsistent == true + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + Unknown or not permitted action type - + + + - - - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + Unknown or not permitted named action - + - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) + + + The document's Catalog shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 - Text annotation has one of the flags NoZoom or NoRotate set to 0 + The document catalog dictionary contains an additional-actions dictionary (AA entry) - - - The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA + + + The Page dictionary shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + The Page dictionary contains an additional-actions dictionary (AA entry) - - - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. - filters == null || filters.indexOf("LZWDecode") == -1 + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in + compliance with this part of ISO 19005 shall use a value of 3. + part == 3 - LZW compression is used - + The "part" property of the PDF/A Identification Schema is not equal to 3 for a PDF/A-3B conforming file. + + part + - - - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. - isValidUtf8 == true + + + Level B conforming file shall specify the value of pdfaid:conformance as B. + conformance == "B" - The name object does not represent a correct Utf8 byte sequence + The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. + + conformance + + + + + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. + If the MIME type is not known, the "application/octet-stream" shall be used. + Subtype != null + + An embedded file dictionary doe snot contain the MIME type information (Subtype entry) - - - + - - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true + + + The file specification dictionary for an embedded file shall contain the F and UF keys + EF_size == 0 || (F != null && UF != null) - Encrypt keyword is present in the trailer dictionary + The file specification dictionary for an embedded file does not contain either F or EF key - - - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. - postEOFDataSize == 0 + + + In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, + a new (required) key has been defined and its presence (in the dictionary) is required. + AFRelationship != null - Data is present after the last end-of-file marker + The file specification dictionary for an embedded file does not contain the AFRelationship key - - - + From d6cc1ae54433d8592fe986ad522b30415f107519 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 25 Feb 2016 09:09:42 +0300 Subject: [PATCH 122/557] Removed obsolete file --- .../6.1 File structure/6.1 File structure.xml | 341 ------------------ 1 file changed, 341 deletions(-) delete mode 100644 PDF_A/1b/6.1 File structure/6.1 File structure.xml diff --git a/PDF_A/1b/6.1 File structure/6.1 File structure.xml b/PDF_A/1b/6.1 File structure/6.1 File structure.xml deleted file mode 100644 index 5946dc37..00000000 --- a/PDF_A/1b/6.1 File structure/6.1 File structure.xml +++ /dev/null @@ -1,341 +0,0 @@ - - -
- PDF/A-1B validation profile - Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 -
- - - - - The % character of the file header shall occur at byte offset 0 of the file. - The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms - pdfHeaderCompliesPDFA - - File header does not start at byte offset 0 or does not correctly identify the version of the PDF document - - - - - - - - - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file - following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword - isLengthCorrect - - Actual length of the stream does not match the value of the Length key in the Stream dictionary - - - - - - - Maximum length of a string (in bytes) is 65535 - value.length() < 65536 - - Maximum length of a String (65535) exceeded - - - - - - - - - The LZWDecode filter shall not be permitted - F == null || F.indexOf("LZW") == -1 - - LZW compression is used in the inline image - - - - - - - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - spacingCompliesPDFA - - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - - - - - - - Maximum number of DeviceN components is 8 - nrComponents <= 8 - - Maximum number of DeviceN components is exceeded - - - - - - - - - In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) - xrefHeaderSpacingsComplyPDFA - - Spacings of subsection headers in the cross reference table do not comply PDF/A specification - - - - - - - Maximum capacity of a dictionary (in entries) is 4095 - size <= 4095 - - Maximum capacity of a dictionary (4095) exceeded - - - - - - - - - No data shall follow the last end-of-file marker except a single optional end-of-line marker. - eofCompliesPDFA - - Data is present after the last end-of-file marker - - - - - - - All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - (isHex != true) || isHexSymbols - - Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - - - - - - - A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF == null - - A file specification dictionary contains the EF key - - - - - - - - - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - (isLinearized != true)|| lastID == null || (firstPageID == lastID) - - Last ID is present in the Linearized PDF and does not match the first page ID - - - - - - - - - A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys - F == null && FFilter == null && FDecodeParms == null - - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - - - - - - - - - Maximum length of a name (in bytes) is 127 - origLength <= 127 - - Maximum length of a Name (127) exceeded - - origLength - - - - - - - - - The keyword Encrypt shall not be used in the trailer dictionary - isEncrypted != true - - Encrypt keyword is present in the trailer dictionary - - - - - - - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword - shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. - spacingCompliesPDFA - - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - - - - - - - The LZWDecode filter shall not be permitted - filters == null || filters.indexOf("LZWDecode") == -1 - - LZW compression is used - - - - - - - The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, - as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 - (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - - Missing ID in the document trailer - - - - - - - The xref keyword and the cross reference subsection header shall be separated by a single EOL marker - xrefEOLMarkersComplyPDFA - - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - - - - - - - Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 - - Maximum value of a CID (65,535) is exceeded - - - - - - - - - Maximum depth of graphics state nesting by q and Q operators is 28 - nestingLevel <= 28 - - Maximum depth of graphics state nesting (q and Q operators) is exceeded - - - - - - - - - Absolute real value must be less than or equal to 32767.0 - (realValue >= -32767.0) && (realValue <= 32767.0) - - Real value out of range - - - - - - - - - The document catalog dictionary shall not contain a key with the name OCProperties - isOptionalContentPresent == false - - The document catalog dictionary contains the OCProperties entry - - - - - - - Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 - (intValue <= 2147483647) && (intValue >= -2147483648) - - Integer value out of range - - - - - - - - - Maximum number of indirect objects in a PDF file is 8,388,607 - nrIndirects <= 8388607 - - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - - - - - - - - - Hexadecimal strings shall contain an even number of non-white-space characters - (isHex != true) || hexCount % 2 == 0 - - Hexadecimal string contains odd number of non-white-space characters - - - - - - - A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 - - The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) - - - - - - - - - The file header line shall be immediately followed by a comment consisting of a % character followed by at - least four characters, each of whose encoded byte values shall have a decimal value greater than 127 - binaryHeaderComplyPDFA - - Binary comment in the file header is missing or does not comply PDF/A requirements - - - - - - - Maximum capacity of an array (in elements) is 8191 - size <= 8191 - - Maximum capacity of an array (8191) exceeded - - - - - - - - -
From 39cec8aa5b2d7a13a49580153a8ad9d0fd961d72 Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Thu, 25 Feb 2016 10:28:22 +0300 Subject: [PATCH 123/557] Merged updated profiles --- PDF_A/PDFA-1A.xml | 16 ++--- PDF_A/PDFA-1B.xml | 10 +-- PDF_A/PDFA-2B.xml | 174 ++++++++++++++++++++++----------------------- PDF_A/PDFA-3B.xml | 176 +++++++++++++++++++++++----------------------- 4 files changed, 188 insertions(+), 188 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 45fe6079..1a28e833 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
@@ -10,7 +10,7 @@ The % character of the file header shall occur at byte offset 0 of the file. The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms - pdfHeaderCompliesPDFA + headerOffset == 0 && /%PDF-\d\.\d/.test(header) File header does not start at byte offset 0 or does not correctly identify the version of the PDF document @@ -54,7 +54,7 @@ No data shall follow the last end-of-file marker except a single optional end-of-line marker. - eofCompliesPDFA + postEOFDataSize == 0 Data is present after the last end-of-file marker @@ -77,7 +77,7 @@ In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) - xrefHeaderSpacingsComplyPDFA + subsectionHeaderSpaceSeparated == true Spacings of subsection headers in the cross reference table do not comply PDF/A specification @@ -129,7 +129,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - spacingCompliesPDFA + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification @@ -183,7 +183,7 @@ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF == null + EF_size == 0 A file specification dictionary contains the EF key @@ -243,11 +243,11 @@ Maximum length of a name (in bytes) is 127 - origLength <= 127 + internalRepresentation.length() <= 127 Maximum length of a Name (127) exceeded - origLength + internalRepresentation.length() diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 0c4cb755..8df352da 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
@@ -23,7 +23,7 @@ The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127 - binaryHeaderComplyPDFA + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 Binary comment in the file header is missing or does not comply PDF/A requirements @@ -54,7 +54,7 @@ No data shall follow the last end-of-file marker except a single optional end-of-line marker. - eofCompliesPDFA + postEOFDataSize == 0 Data is present after the last end-of-file marker @@ -107,7 +107,7 @@ All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - (isHex != true) || isHexSymbols + (isHex != true) || containsOnlyHex Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f @@ -183,7 +183,7 @@ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF == null + EF_size == 0 A file specification dictionary contains the EF key diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 3b8e1cc9..4dc0252a 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,13 +1,13 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011
- + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) @@ -18,7 +18,7 @@ - + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -29,7 +29,7 @@ - + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 lastID != null @@ -41,7 +41,7 @@ - + The keyword Encrypt shall not be used in the trailer dictionary isEncrypted != true @@ -51,7 +51,7 @@ - + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. postEOFDataSize == 0 @@ -63,7 +63,7 @@ - + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA @@ -73,7 +73,7 @@ - + Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 @@ -83,7 +83,7 @@ - + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) (isHex != true) || containsOnlyHex @@ -93,7 +93,7 @@ - + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. isLengthCorrect @@ -104,7 +104,7 @@ - + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant @@ -115,7 +115,7 @@ - + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys F == null && FFilter == null && FDecodeParms == null @@ -125,7 +125,7 @@ - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. filters == null || filters.indexOf("LZWDecode") == -1 @@ -135,7 +135,7 @@ - + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -148,7 +148,7 @@ - + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. @@ -160,7 +160,7 @@ - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) @@ -171,7 +171,7 @@ - + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) @@ -181,7 +181,7 @@ - + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 (realValue >= -3.403e+38) && (realValue <= 3.403e+38) @@ -191,7 +191,7 @@ - + A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32767 @@ -201,7 +201,7 @@ - + A conforming file shall not contain any name longer than 127 bytes. internalRepresentation.length() <= 127 @@ -211,7 +211,7 @@ - + A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 @@ -221,7 +221,7 @@ - + A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 @@ -231,7 +231,7 @@ - + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. nrComponents <= 32 @@ -241,7 +241,7 @@ - + A conforming file shall not contain a CID value greater than 65535. CID <= 65535 @@ -251,7 +251,7 @@ - + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 @@ -262,7 +262,7 @@ - + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -273,7 +273,7 @@ - + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -286,7 +286,7 @@ - + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC @@ -299,7 +299,7 @@ - + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. DestOutputProfileRef_size == 0 @@ -311,7 +311,7 @@ - + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 @@ -324,7 +324,7 @@ - + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile. gOutputCS != null && gOutputCS == "RGB " @@ -335,7 +335,7 @@ - + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. gOutputCS != null && gOutputCS == "CMYK" @@ -346,7 +346,7 @@ - + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present. gOutputCS != null @@ -357,7 +357,7 @@ - + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true @@ -369,7 +369,7 @@ - + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression @@ -382,7 +382,7 @@ - + An ExtGState dictionary shall not contain the TR key TR == null @@ -392,7 +392,7 @@ - + An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" @@ -402,7 +402,7 @@ - + An ExtGState dictionary shall not contain the HTP key HTP_size == 0 @@ -412,7 +412,7 @@ - + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) @@ -422,7 +422,7 @@ - + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. HalftoneName == null @@ -432,7 +432,7 @@ - + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" @@ -443,7 +443,7 @@ - + An Image dictionary shall not contain the Alternates key Alternates_size == 0 @@ -453,7 +453,7 @@ - + An Image dictionary shall not contain the OPI key OPI_size == 0 @@ -463,7 +463,7 @@ - + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -474,7 +474,7 @@ - + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 @@ -484,7 +484,7 @@ - + A conforming file shall not contain any reference XObjects Ref_size == 0 @@ -494,7 +494,7 @@ - + A conforming file shall not contain any PostScript XObjects Subtype != "PS" @@ -504,7 +504,7 @@ - + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || @@ -518,7 +518,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary @@ -535,7 +535,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts @@ -556,7 +556,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font @@ -572,7 +572,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array @@ -587,7 +587,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array @@ -602,7 +602,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths @@ -617,7 +617,7 @@ - + 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 is Identity-H or Identity-V, any values of Registry, Ordering, @@ -632,7 +632,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -645,7 +645,7 @@ - + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || @@ -673,7 +673,7 @@ - + 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. WMode == dictWMode @@ -684,7 +684,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 @@ -696,7 +696,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. isGlyphPresent == true @@ -706,7 +706,7 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. CharSet == null || charSetListsAllGlyphs == true @@ -717,7 +717,7 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. CIDSet_size == 0 || cidSetListsAllGlyphs == true @@ -728,7 +728,7 @@ - + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. isWidthConsistent == true @@ -739,7 +739,7 @@ - + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 @@ -750,7 +750,7 @@ - + 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. @@ -763,7 +763,7 @@ - + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary isSymbolic == false || Encoding == null @@ -773,7 +773,7 @@ - + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true @@ -784,7 +784,7 @@ - + A PDF/A-2 compliant document 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. name != ".notdef" @@ -795,7 +795,7 @@ - + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || @@ -812,7 +812,7 @@ - + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null @@ -822,7 +822,7 @@ - + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) @@ -832,7 +832,7 @@ - + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) @@ -842,7 +842,7 @@ - + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; @@ -855,7 +855,7 @@ - + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. @@ -867,7 +867,7 @@ - + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. Subtype != "Widget" || (A_size == 0 && AA_size == 0) @@ -877,7 +877,7 @@ - + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. AA_size == 0 @@ -887,7 +887,7 @@ - + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. NeedAppearances == null || NeedAppearances == false @@ -897,7 +897,7 @@ - + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -908,7 +908,7 @@ - + A document's Catalog shall not contain the NeedsRendering key. NeedsRendering == false @@ -918,7 +918,7 @@ - + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -931,7 +931,7 @@ - + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" @@ -943,7 +943,7 @@ - + The document's Catalog shall not include an AA entry for an additional-actions dictionary. AA_size == 0 @@ -953,7 +953,7 @@ - + The Page dictionary shall not include an AA entry for an additional-actions dictionary. AA_size == 0 @@ -963,7 +963,7 @@ - + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with this part of ISO 19005 shall use a value of 2. part == 2 @@ -976,7 +976,7 @@ - + Level B conforming file shall specify the value of pdfaid:conformance as B. conformance == "B" @@ -988,7 +988,7 @@ - + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is compliant with either ISO 19005-1 or this part of ISO 19005. isValidPDFA12 == true @@ -999,7 +999,7 @@ - + The file specification dictionary for an embedded file shall contain the F and UF keys EF_size == 0 || (F != null && UF != null) diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index b5f51d79..75fad5ba 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,13 +1,13 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012
- + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) @@ -18,7 +18,7 @@ - + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -29,7 +29,7 @@ - + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 lastID != null @@ -41,7 +41,7 @@ - + The keyword Encrypt shall not be used in the trailer dictionary isEncrypted != true @@ -51,7 +51,7 @@ - + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. postEOFDataSize == 0 @@ -63,7 +63,7 @@ - + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA @@ -73,7 +73,7 @@ - + Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 @@ -83,7 +83,7 @@ - + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) (isHex != true) || containsOnlyHex @@ -93,7 +93,7 @@ - + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. isLengthCorrect @@ -104,7 +104,7 @@ - + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant @@ -115,7 +115,7 @@ - + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys F == null && FFilter == null && FDecodeParms == null @@ -125,7 +125,7 @@ - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. filters == null || filters.indexOf("LZWDecode") == -1 @@ -135,7 +135,7 @@ - + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -148,7 +148,7 @@ - + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. @@ -160,7 +160,7 @@ - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) @@ -171,7 +171,7 @@ - + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) @@ -181,7 +181,7 @@ - + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 (realValue >= -3.403e+38) && (realValue <= 3.403e+38) @@ -191,7 +191,7 @@ - + A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32767 @@ -201,7 +201,7 @@ - + A conforming file shall not contain any name longer than 127 bytes. internalRepresentation.length() <= 127 @@ -211,7 +211,7 @@ - + A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 @@ -221,7 +221,7 @@ - + A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 @@ -231,7 +231,7 @@ - + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. nrComponents <= 32 @@ -241,7 +241,7 @@ - + A conforming file shall not contain a CID value greater than 65535. CID <= 65535 @@ -251,7 +251,7 @@ - + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 @@ -262,7 +262,7 @@ - + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -273,7 +273,7 @@ - + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -286,7 +286,7 @@ - + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC @@ -299,7 +299,7 @@ - + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. DestOutputProfileRef_size == 0 @@ -311,7 +311,7 @@ - + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 @@ -324,7 +324,7 @@ - + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile. gOutputCS != null && gOutputCS == "RGB " @@ -335,7 +335,7 @@ - + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. gOutputCS != null && gOutputCS == "CMYK" @@ -346,7 +346,7 @@ - + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present. gOutputCS != null @@ -357,7 +357,7 @@ - + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true @@ -369,7 +369,7 @@ - + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression @@ -382,7 +382,7 @@ - + An ExtGState dictionary shall not contain the TR key TR == null @@ -392,7 +392,7 @@ - + An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" @@ -402,7 +402,7 @@ - + An ExtGState dictionary shall not contain the HTP key HTP_size == 0 @@ -412,7 +412,7 @@ - + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) @@ -422,7 +422,7 @@ - + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. HalftoneName == null @@ -432,7 +432,7 @@ - + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" @@ -443,7 +443,7 @@ - + An Image dictionary shall not contain the Alternates key Alternates_size == 0 @@ -453,7 +453,7 @@ - + An Image dictionary shall not contain the OPI key OPI_size == 0 @@ -463,7 +463,7 @@ - + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -474,7 +474,7 @@ - + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 @@ -484,7 +484,7 @@ - + A conforming file shall not contain any reference XObjects Ref_size == 0 @@ -494,7 +494,7 @@ - + A conforming file shall not contain any PostScript XObjects Subtype != "PS" @@ -504,7 +504,7 @@ - + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || @@ -518,7 +518,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary @@ -535,7 +535,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts @@ -556,7 +556,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font @@ -572,7 +572,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array @@ -587,7 +587,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array @@ -602,7 +602,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths @@ -617,7 +617,7 @@ - + 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 is Identity-H or Identity-V, any values of Registry, Ordering, @@ -632,7 +632,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -645,7 +645,7 @@ - + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || @@ -673,7 +673,7 @@ - + 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. WMode == dictWMode @@ -684,7 +684,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 @@ -696,7 +696,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. isGlyphPresent == true @@ -706,7 +706,7 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. CharSet == null || charSetListsAllGlyphs == true @@ -717,7 +717,7 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. CIDSet_size == 0 || cidSetListsAllGlyphs == true @@ -728,7 +728,7 @@ - + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. isWidthConsistent == true @@ -739,7 +739,7 @@ - + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 @@ -750,7 +750,7 @@ - + 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. @@ -763,7 +763,7 @@ - + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary isSymbolic == false || Encoding == null @@ -773,7 +773,7 @@ - + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true @@ -784,7 +784,7 @@ - + A PDF/A-2 compliant document 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. name != ".notdef" @@ -795,7 +795,7 @@ - + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || @@ -812,7 +812,7 @@ - + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null @@ -822,7 +822,7 @@ - + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) @@ -832,7 +832,7 @@ - + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) @@ -842,7 +842,7 @@ - + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; @@ -855,7 +855,7 @@ - + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. @@ -867,7 +867,7 @@ - + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. Subtype != "Widget" || (A_size == 0 && AA_size == 0) @@ -877,7 +877,7 @@ - + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. AA_size == 0 @@ -887,7 +887,7 @@ - + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. NeedAppearances == null || NeedAppearances == false @@ -897,7 +897,7 @@ - + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -908,7 +908,7 @@ - + A document's Catalog shall not contain the NeedsRendering key. NeedsRendering == false @@ -918,7 +918,7 @@ - + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -931,7 +931,7 @@ - + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" @@ -943,7 +943,7 @@ - + The document's Catalog shall not include an AA entry for an additional-actions dictionary. AA_size == 0 @@ -953,7 +953,7 @@ - + The Page dictionary shall not include an AA entry for an additional-actions dictionary. AA_size == 0 @@ -963,7 +963,7 @@ - + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with this part of ISO 19005 shall use a value of 3. part == 3 @@ -976,7 +976,7 @@ - + Level B conforming file shall specify the value of pdfaid:conformance as B. conformance == "B" @@ -988,7 +988,7 @@ - + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used. Subtype != null @@ -999,7 +999,7 @@ - + The file specification dictionary for an embedded file shall contain the F and UF keys EF_size == 0 || (F != null && UF != null) @@ -1009,7 +1009,7 @@ - + In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, a new (required) key has been defined and its presence (in the dictionary) is required. AFRelationship != null From a1df574096fc3f59726331e0c0d2691c78a9348f Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 25 Feb 2016 12:13:26 +0300 Subject: [PATCH 124/557] Revert the earlier change based on TWG discussion PDF/A-1: due to unclear formulations in ISO 19005-1, the presence of CharSet and CIDSet entries is required for all Type1 and CID font subsets, but there are no extra requirements for them. --- .../6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml | 2 +- .../6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml index 04befb54..3a6c638a 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml @@ -11,7 +11,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) + fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null A Type1 font subset does not define CharSet entry in its Descriptor dictionary diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml index 32719981..ce56fba7 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml @@ -11,7 +11,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 A CID Font subset does not define CIDSet entry in its Descriptor dictionary From f6a69b9a49e50221af47e0dd56cf210affdaf78b Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 25 Feb 2016 12:15:47 +0300 Subject: [PATCH 125/557] Updated merged profiles --- PDF_A/PDFA-1A.xml | 4 ++-- PDF_A/PDFA-1B.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 1a28e833..cb3f5b6a 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -686,7 +686,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) + fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null A Type1 font subset does not define CharSet entry in its Descriptor dictionary @@ -699,7 +699,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 8df352da..0d478b98 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -686,7 +686,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) + fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null A Type1 font subset does not define CharSet entry in its Descriptor dictionary @@ -699,7 +699,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 A CID Font subset does not define CIDSet entry in its Descriptor dictionary From cab5c59a08fe4db8ff0b9920bc3ae9431c7d3946 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 25 Feb 2016 14:26:02 +0300 Subject: [PATCH 126/557] Changed the description property for Extension schema types from optional to required See Isartor test file isartor-6-7-8-t02-fail-f --- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml | 2 +- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml | 2 +- PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml | 2 +- PDF_A/PDFA-1A.xml | 6 +++--- PDF_A/PDFA-1B.xml | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml index e93006a5..00f0ef8e 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml @@ -18,7 +18,7 @@ (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaProperty") ) + (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) Invalid extension schema Property type definition diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml index 116e70a8..ff3f5e55 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml @@ -18,7 +18,7 @@ (isTypeValidText == true && typePrefix == "pdfaType" ) && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && - (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaType") ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && fieldPrefix == "pdfaType") Invalid extension schema ValueType type definition diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml index 3d9e038e..fa81d4d2 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml @@ -15,7 +15,7 @@ pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaField") ) + (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) Invalid extension schema Field type definition diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index cb3f5b6a..5252374a 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1053,7 +1053,7 @@ (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaProperty") ) + (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) Invalid extension schema Property type definition @@ -1069,7 +1069,7 @@ (isTypeValidText == true && typePrefix == "pdfaType" ) && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && - (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaType") ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && fieldPrefix == "pdfaType") Invalid extension schema ValueType type definition @@ -1084,7 +1084,7 @@ pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaField") ) + (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) Invalid extension schema Field type definition diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 0d478b98..8765324a 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1053,7 +1053,7 @@ (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaProperty") ) + (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) Invalid extension schema Property type definition @@ -1069,7 +1069,7 @@ (isTypeValidText == true && typePrefix == "pdfaType" ) && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && - (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaType") ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && fieldPrefix == "pdfaType") Invalid extension schema ValueType type definition @@ -1084,7 +1084,7 @@ pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && (descriptionPrefix == null || descriptionPrefix == "pdfaField") ) + (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) Invalid extension schema Field type definition From 55945010606e65d4d7c1315756e7ebee38c9def3 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 26 Feb 2016 12:45:38 +0300 Subject: [PATCH 127/557] Added new XMP validation profiles for PDF/A-2 and PDF/A-3 --- .../verapdf-profile-6-7-11-t01.xml | 2 +- .../verapdf-profile-6-7-11-t02.xml | 4 +- .../verapdf-profile-6-7-11-t03.xml | 2 +- .../verapdf-profile-6-7-11-t04.xml | 2 +- .../verapdf-profile-6-7-2-t01.xml | 0 .../verapdf-profile-6-7-2-t02.xml | 0 .../verapdf-profile-6-7-3-t01.xml | 0 .../verapdf-profile-6-7-5-t01.xml | 0 .../verapdf-profile-6-7-5-t02.xml | 0 .../verapdf-profile-6-7-8-t01.xml | 2 +- .../verapdf-profile-6-7-8-t02.xml | 2 +- .../verapdf-profile-6-7-8-t03.xml | 0 .../verapdf-profile-6-7-8-t04.xml | 0 .../verapdf-profile-6-7-8-t05.xml | 0 .../verapdf-profile-6-7-8-t06.xml | 0 .../verapdf-profile-6-7-9-t01.xml | 0 .../verapdf-profile-6-7-9-t02.xml | 0 .../verapdf-profile-6-6-2-1-t01.xml | 23 ++++++++++ .../verapdf-profile-6-6-2-1-t02.xml | 21 +++++++++ .../verapdf-profile-6-6-2-1-t03.xml | 21 +++++++++ .../verapdf-profile-6-6-2-1-t04.xml | 29 ++++++++++++ .../verapdf-profile-6-6-2-3-t01.xml | 23 ++++++++++ .../verapdf-profile-6-6-2-3-t02.xml | 23 ++++++++++ .../verapdf-profile-6-6-2-3-t03.xml | 29 ++++++++++++ .../verapdf-profile-6-6-2-3-t04.xml | 30 ++++++++++++ .../verapdf-profile-6-6-2-3-t05.xml | 31 +++++++++++++ .../verapdf-profile-6-6-2-3-t06.xml | 27 +++++++++++ .../verapdf-profile-6-6-2-3-t07.xml | 25 ++++++++++ .../verapdf-profile-6-6-4-t01.xml | 21 +++++++++ .../verapdf-profile-6-6-4-t02.xml | 46 +++++++++---------- .../verapdf-profile-6-6-4-t03.xml | 46 ++++++++++--------- .../verapdf-profile-6-6-4-t04.xml | 27 +++++++++++ .../verapdf-profile-6-6-4-t02.xml | 46 +++++++++---------- 33 files changed, 405 insertions(+), 77 deletions(-) rename PDF_A/1b/6.7 Metadata/{6.7.11 => 6.7.11 Version and conformance level identification}/verapdf-profile-6-7-11-t01.xml (89%) rename PDF_A/1b/6.7 Metadata/{6.7.11 => 6.7.11 Version and conformance level identification}/verapdf-profile-6-7-11-t02.xml (83%) rename PDF_A/1b/6.7 Metadata/{6.7.11 => 6.7.11 Version and conformance level identification}/verapdf-profile-6-7-11-t03.xml (91%) rename PDF_A/1b/6.7 Metadata/{6.7.11 => 6.7.11 Version and conformance level identification}/verapdf-profile-6-7-11-t04.xml (92%) rename PDF_A/1b/6.7 Metadata/{6.7.2 => 6.7.2 Properties}/verapdf-profile-6-7-2-t01.xml (100%) rename PDF_A/1b/6.7 Metadata/{6.7.2 => 6.7.2 Properties}/verapdf-profile-6-7-2-t02.xml (100%) rename PDF_A/1b/6.7 Metadata/{6.7.3 => 6.7.3 Document information dictionary}/verapdf-profile-6-7-3-t01.xml (100%) rename PDF_A/1b/6.7 Metadata/{6.7.5 => 6.7.5 XMP Header}/verapdf-profile-6-7-5-t01.xml (100%) rename PDF_A/1b/6.7 Metadata/{6.7.5 => 6.7.5 XMP Header}/verapdf-profile-6-7-5-t02.xml (100%) rename PDF_A/1b/6.7 Metadata/{6.7.8 => 6.7.8 Extension schemas}/verapdf-profile-6-7-8-t01.xml (97%) rename PDF_A/1b/6.7 Metadata/{6.7.8 => 6.7.8 Extension schemas}/verapdf-profile-6-7-8-t02.xml (93%) rename PDF_A/1b/6.7 Metadata/{6.7.8 => 6.7.8 Extension schemas}/verapdf-profile-6-7-8-t03.xml (100%) rename PDF_A/1b/6.7 Metadata/{6.7.8 => 6.7.8 Extension schemas}/verapdf-profile-6-7-8-t04.xml (100%) rename PDF_A/1b/6.7 Metadata/{6.7.8 => 6.7.8 Extension schemas}/verapdf-profile-6-7-8-t05.xml (100%) rename PDF_A/1b/6.7 Metadata/{6.7.8 => 6.7.8 Extension schemas}/verapdf-profile-6-7-8-t06.xml (100%) rename PDF_A/1b/6.7 Metadata/{6.7.9 => 6.7.9 Validation}/verapdf-profile-6-7-9-t01.xml (100%) rename PDF_A/1b/6.7 Metadata/{6.7.9 => 6.7.9 Validation}/verapdf-profile-6-7-9-t02.xml (100%) create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t03.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t01.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t02.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t04.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t06.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t07.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t01.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t01.xml similarity index 89% rename from PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml rename to PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t01.xml index 1c25c131..847bad49 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t01.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema. The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml similarity index 83% rename from PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml rename to PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml index 65b0a518..9d08a3ce 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - Part number. The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms.
@@ -11,7 +11,7 @@ The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. part == 1 - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file. part diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml similarity index 91% rename from PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml rename to PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml index a59a4748..808d2a06 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - Conformance level. A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml similarity index 92% rename from PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml rename to PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml index 9320c413..3e4cc37b 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. + ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema properties. The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text). diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml similarity index 100% rename from PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t01.xml rename to PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml similarity index 100% rename from PDF_A/1b/6.7 Metadata/6.7.2/verapdf-profile-6-7-2-t02.xml rename to PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml similarity index 100% rename from PDF_A/1b/6.7 Metadata/6.7.3/verapdf-profile-6-7-3-t01.xml rename to PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml similarity index 100% rename from PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t01.xml rename to PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml similarity index 100% rename from PDF_A/1b/6.7 Metadata/6.7.5/verapdf-profile-6-7-5-t02.xml rename to PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml similarity index 97% rename from PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml rename to PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml index 65d09a6f..ffddbefa 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.8 Extension schemas - Conatiner schema namespace + ISO 19005-1:2005 - 6.7.8 Extension schemas - Conatiner schema fields Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml similarity index 93% rename from PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml rename to PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml index 95258ec9..b2135fed 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.8 Extension schemas - Conatiner schema namespace + ISO 19005-1:2005 - 6.7.8 Extension schemas - Container schema The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml similarity index 100% rename from PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t03.xml rename to PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml similarity index 100% rename from PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t04.xml rename to PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml similarity index 100% rename from PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t05.xml rename to PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml similarity index 100% rename from PDF_A/1b/6.7 Metadata/6.7.8/verapdf-profile-6-7-8-t06.xml rename to PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml similarity index 100% rename from PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t01.xml rename to PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml similarity index 100% rename from PDF_A/1b/6.7 Metadata/6.7.9/verapdf-profile-6-7-9-t02.xml rename to PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml new file mode 100644 index 00000000..993c1f7b --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.1 General - Metadata key in the Catalog + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. +
+ + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml new file mode 100644 index 00000000..57564680 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.1 Genereal - bytes attribute + The bytes attribute shall not be used in the header of an XMP packet. +
+ + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t03.xml new file mode 100644 index 00000000..14e9ec72 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t03.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.1 General - encoding attribute + The encoding attribute shall not be used in the header of an XMP packet. +
+ + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml new file mode 100644 index 00000000..77c21a96 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.1 General - Conforms to XMP Specification. + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). +
+ + + + + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + isSerializationValid + + %1 + + errorMessage + + + + + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t01.xml new file mode 100644 index 00000000..50b6bf73 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Container schema + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. +
+ + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + containsUndefinedFields == false + + An extension schema object contains fields not defined by the specification + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t02.xml new file mode 100644 index 00000000..ce3d4690 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Container schema + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas +
+ + + + + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" + + Invalid syntax of the extension schema container + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml new file mode 100644 index 00000000..7d33a0cb --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-2:2011 - 6.7.8 Extension schemas - Extension schema definition + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). +
+ + + + + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && + (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && + (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) + + Invalid Extension Schema definition + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t04.xml new file mode 100644 index 00000000..dbbce1f4 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t04.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Extension schemas - Extension schema property + The Property type is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text: internal or external), pdfaProperty:description (Text). +
+ + + + + The Property type defined is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). + (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && + (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) + + Invalid extension schema Property type definition + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml new file mode 100644 index 00000000..9aac17f1 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml @@ -0,0 +1,31 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Extension schemas - Extension schema ValueType type + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). +
+ + + + + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isFieldValidSeq == true && fieldPrefix == "pdfaType") + + Invalid extension schema ValueType type definition + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t06.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t06.xml new file mode 100644 index 00000000..d2ddda94 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t06.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Extension schemas - Extension schema Field type + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). +
+ + + + + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + (isNameValidText == true && namePrefix == "pdfaField" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) + + Invalid extension schema Field type definition + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t07.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t07.xml new file mode 100644 index 00000000..b44f9a33 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t07.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - All properties are defined + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. +
+ + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + %1 + + errorMessage + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t01.xml new file mode 100644 index 00000000..6f5c8798 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. +
+ + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml index a33fc0b2..c5d6b28b 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml @@ -1,25 +1,23 @@ - -
- ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Part number - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with - this part of ISO 19005 shall use a value of 2. -
- - - - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 2. - part == 2 - - The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. - - part - - - - - - -
\ No newline at end of file + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Part number. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. +
+ + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 2 + + The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file. + + part + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 0b4a9bec..81f524b9 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -1,23 +1,25 @@ - -
- ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level - Level B conforming file shall specify the value of pdfaid:conformance as B. -
- - - - - Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" - - The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. - - conformance - - - - - - -
\ No newline at end of file + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. +
+ + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "B" || conformance == "U" || conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + + conformance + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml new file mode 100644 index 00000000..72de7df0 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema properties. + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. + It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), + pdfaid:conformance (Open Choice of Text). +
+ + + + + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && + (amdPrefix == null || amdPrefix == "pdfaid") && + (corrPrefix == null || corrPrefix == "pdfaid") + + A property of the PDF/A Identification Schema has an invalid namespace prefix + + + + + + +
diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml index 07f548e4..7162cb02 100644 --- a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml +++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml @@ -1,25 +1,23 @@ - -
- ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Part number - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in compliance with - this part of ISO 19005 shall use a value of 3. -
- - - - - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 3. - part == 3 - - The "part" property of the PDF/A Identification Schema is not equal to 3 for a PDF/A-3B conforming file. - - part - - - - - - -
\ No newline at end of file + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Part number. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. +
+ + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 3 + + The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file. + + part + + + + + + +
From cee24c6ffbc918c4c076f0e3950f939dffa8ef5a Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Fri, 26 Feb 2016 12:57:15 +0300 Subject: [PATCH 128/557] Update 2b and 3b --- PDF_A/PDFA-2B.xml | 189 +++++++++++++++++++++++++++++++++++++++++++--- PDF_A/PDFA-3B.xml | 189 +++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 360 insertions(+), 18 deletions(-) diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 4dc0252a..9504d307 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011
@@ -962,31 +962,202 @@ - + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + isSerializationValid + + %1 + + errorMessage + + + + + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + containsUndefinedFields == false + + An extension schema object contains fields not defined by the specification + + + + + + + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" + + Invalid syntax of the extension schema container + + + + + + + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && + (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && + (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) + + Invalid Extension Schema definition + + + + + + + The Property type defined is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). + (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && + (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) + + Invalid extension schema Property type definition + + + + + + + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isFieldValidSeq == true && fieldPrefix == "pdfaType") + + Invalid extension schema ValueType type definition + + + + + + + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + (isNameValidText == true && namePrefix == "pdfaField" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) + + Invalid extension schema Field type definition + + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + %1 + + errorMessage + + + + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 2. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. part == 2 - The "part" property of the PDF/A Identification Schema is not equal to 2 for a PDF/A-2B conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file. part - + - Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "B" || conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. conformance + + + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && + (amdPrefix == null || amdPrefix == "pdfaid") && + (corrPrefix == null || corrPrefix == "pdfaid") + + A property of the PDF/A Identification Schema has an invalid namespace prefix + + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 75fad5ba..4fe8c9bc 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012
@@ -962,31 +962,202 @@ - + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + isSerializationValid + + %1 + + errorMessage + + + + + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + containsUndefinedFields == false + + An extension schema object contains fields not defined by the specification + + + + + + + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" + + Invalid syntax of the extension schema container + + + + + + + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && + (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && + (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) + + Invalid Extension Schema definition + + + + + + + The Property type defined is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). + (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && + (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) + + Invalid extension schema Property type definition + + + + + + + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isFieldValidSeq == true && fieldPrefix == "pdfaType") + + Invalid extension schema ValueType type definition + + + + + + + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + (isNameValidText == true && namePrefix == "pdfaField" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) + + Invalid extension schema Field type definition + + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + %1 + + errorMessage + + + + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 3. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. part == 3 - The "part" property of the PDF/A Identification Schema is not equal to 3 for a PDF/A-3B conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file. part - + - Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "B" || conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is not equal to "B" for a PDF/A-2B conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. conformance + + + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && + (amdPrefix == null || amdPrefix == "pdfaid") && + (corrPrefix == null || corrPrefix == "pdfaid") + + A property of the PDF/A Identification Schema has an invalid namespace prefix + + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. From 9ab9ca0a1a64a91312a83d88e64e01fb06505124 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 26 Feb 2016 14:11:40 +0300 Subject: [PATCH 129/557] Removed pdfaid:corr property from the Inentification schema The pdfaid:corr property (Corrigendum) is not defined for PDF/A-1, but is a valid property in the PDF/A Identification schema for PDF/A-2 and PDF/A-3 --- .../verapdf-profile-6-7-11-t04.xml | 5 ++--- PDF_A/PDFA-1A.xml | 5 ++--- PDF_A/PDFA-1B.xml | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml index 3e4cc37b..a4a093b1 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml @@ -12,10 +12,9 @@ The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") && - (corrPrefix == null || corrPrefix == "pdfaid") + (amdPrefix == null || amdPrefix == "pdfaid") A property of the PDF/A Identification Schema has an invalid namespace prefix diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 5252374a..74ef9523 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1156,10 +1156,9 @@ The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") && - (corrPrefix == null || corrPrefix == "pdfaid") + (amdPrefix == null || amdPrefix == "pdfaid") A property of the PDF/A Identification Schema has an invalid namespace prefix diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 8765324a..98d54351 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1156,10 +1156,9 @@ The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") && - (corrPrefix == null || corrPrefix == "pdfaid") + (amdPrefix == null || amdPrefix == "pdfaid") A property of the PDF/A Identification Schema has an invalid namespace prefix From 4d4cd04d65d3ed407429a909b1d96a45695746bb Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 26 Feb 2016 15:39:10 +0300 Subject: [PATCH 130/557] Fixed the F key requirements in Annotation dictionaries for PDF/A-2 and PDF/A-3 --- .../6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml index c34704e5..280efa87 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml @@ -9,7 +9,7 @@ Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) + Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) Text annotation has one of the flags NoZoom or NoRotate set to 0 diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 9504d307..06884cad 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -834,7 +834,7 @@ Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) + Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) Text annotation has one of the flags NoZoom or NoRotate set to 0 From cfae2b2756a22c79535abce70ddd3f5402f17474 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 26 Feb 2016 15:50:25 +0300 Subject: [PATCH 131/557] Updated merged PDF/A-3 profile --- PDF_A/PDFA-3B.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 4fe8c9bc..b8f774ac 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -834,7 +834,7 @@ Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1) + Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) Text annotation has one of the flags NoZoom or NoRotate set to 0 From 9e0ff4d01b4dcb8f965a5e847c07013094a895c7 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 26 Feb 2016 15:53:53 +0300 Subject: [PATCH 132/557] Removed HTML representations of validation profiles The visual representation of the profiles will be placed on verapdf.org --- PDF_A/PDFA-1A.html | 356 ------------------------------------------- PDF_A/PDFA-1B.html | 347 ------------------------------------------ PDF_A/PDFA-2B.html | 363 -------------------------------------------- PDF_A/PDFA-3B.html | 367 --------------------------------------------- 4 files changed, 1433 deletions(-) delete mode 100644 PDF_A/PDFA-1A.html delete mode 100644 PDF_A/PDFA-1B.html delete mode 100644 PDF_A/PDFA-2B.html delete mode 100644 PDF_A/PDFA-3B.html diff --git a/PDF_A/PDFA-1A.html b/PDF_A/PDFA-1A.html deleted file mode 100644 index 234ed519..00000000 --- a/PDF_A/PDFA-1A.html +++ /dev/null @@ -1,356 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDNameDescriptionTypeRule
16-7-11-t03The PDF/A conformance level of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemaconformance == "A"
26-8-2-t01The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of trueCosDocumentMarked == true
36-8-3-t01The 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 PDF Reference 9.6PDDocumentStructTreeRoot_size == 1
46-8-3-t02Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElemPDStructElemType == "StructElem"
56-1-10-t01The LZWDecode filter shall not be permittedCosStreamfilters == null || filters.indexOf("LZWDecode") == -1
66-1-10-t02The LZWDecode filter shall not be permittedPDInlineImageF == null || F.indexOf("LZW") == -1
76-1-11-t01A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF keyCosFileSpecificationEF_size == 0
86-1-11-t02A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles keyCosDocumentEmbeddedFiles_size == 0
96-1-12-t01Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648CosInteger(intValue <= 2147483647) && (intValue >= -2147483648)
106-1-12-t02Absolute real value must be less than or equal to 32767.0CosReal(realValue >= -32767.0) && (realValue <= 32767.0)
116-1-12-t03Maximum length of a string (in bytes) is 65535CosStringvalue.length() < 65536
126-1-12-t04Maximum length of a name (in bytes) is 127CosNameinternalRepresentation.length() <= 127
136-1-12-t05Maximum capacity of an array (in elements) is 8191CosArraysize <= 8191
146-1-12-t06Maximum capacity of a dictionary (in entries) is 4095CosDictsize <= 4095
156-1-12-t07Maximum number of indirect objects in a PDF file is 8,388,607CosDocumentnrIndirects <= 8388607
166-1-12-t08Maximum depth of graphics state nesting by q and Q operators is 28Op_q_gsavenestingLevel <= 28
176-1-12-t09Maximum number of DeviceN components is 8PDDeviceNnrComponents <= 8
186-1-12-t10Maximum value of a CID (character identifier) is 65,535CIDGlyphCID <= 65535
196-1-13-t01The document catalog dictionary shall not contain a key with the name OCPropertiesCosDocumentisOptionalContentPresent == false
206-1-2-t01The % character of the file header shall occur at byte offset 0 of the file. - The first line of a PDF file is a header identifying the version of the PDF specification to which the file conformsCosDocumentheaderOffset == 0 && /%PDF-\d\.\d/.test(header)
216-1-2-t02The file header line shall be immediately followed by a comment consisting of a % character followed by at - least four characters, each of whose encoded byte values shall have a decimal value greater than 127CosDocumentheaderByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
226-1-3-t01The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, - as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2CosDocument(isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null)
236-1-3-t02The keyword Encrypt shall not be used in the trailer dictionaryCosTrailerisEncrypted != true
246-1-3-t03No data shall follow the last end-of-file marker except a single optional end-of-line marker.CosDocumentpostEOFDataSize == 0
256-1-3-t04In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identicalCosDocument(isLinearized != true)|| lastID == null || (firstPageID == lastID)
266-1-4-t01In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)CosXRefsubsectionHeaderSpaceSeparated == true
276-1-4-t02The xref keyword and the cross reference subsection header shall be separated by a single EOL markerCosXRefxrefEOLMarkersComplyPDFA
286-1-6-t01Hexadecimal strings shall contain an even number of non-white-space charactersCosString(isHex != true) || hexCount % 2 == 0
296-1-6-t02All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to fCosString(isHex != true) || containsOnlyHex
306-1-7-t01The value of the Length key specified in the stream dictionary shall match the number of bytes in the file - following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keywordCosStreamisLengthCorrect
316-1-7-t02The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL markerCosStreamstreamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
326-1-7-t03A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keysCosStreamF == null && FFilter == null && FDecodeParms == null
336-1-8-t01The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword - shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker.CosIndirectspacingCompliesPDFA
346-2-10-t01A content stream shall not contain any operators not defined in PDF Reference - even if such operators are bracketed by the BX/EX compatibility operatorsOp_Undefinedfalse
356-2-2-t01A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents - array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile keyICCOutputProfile(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0
366-2-2-t02If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect
376-2-3-t01All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0
386-2-3-t02DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour spacePDDeviceRGBgOutputCS != null && gOutputCS == "RGB "
396-2-3-t03DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour spacePDDeviceCMYKgOutputCS != null && gOutputCS == "CMYK"
406-2-3-t04If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2PDDeviceGraygOutputCS != null
416-2-3-t05All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4ICCProfileN != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK"))
426-2-4-t01An Image dictionary shall not contain the Alternates keyPDXImageAlternates_size == 0
436-2-4-t02An XObject dictionary (Image or Form) shall not contain the OPI keyPDXObjectOPI_size == 0
446-2-4-t03If an Image dictionary contains the Interpolate key, its value shall be falsePDXImageInterpolate == false
456-2-5-t01A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS keyPDXForm(Subtype2 == null || Subtype2 != "PS") && PS_size == 0
466-2-6-t01A conforming file shall not contain any reference XObjectsPDXFormRef_size == 0
476-2-7-t01A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS"
486-2-8-t01An ExtGState dictionary shall not contain the TR keyPDExtGStateTR == null
496-2-8-t02An ExtGState dictionary shall not contain the TR2 key with a value other than DefaultPDExtGStateTR2 == null || TR2 == "Default"
506-2-9-t01Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or SaturationCosRenderingIntentinternalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
516-3-2-t01All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionaryPDFontType == "Font"
526-3-2-t02All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fontsPDFontSubtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
536-3-2-t03All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || fontName != null
546-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null
556-3-2-t05All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null
566-3-2-t06All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
576-3-3-t01For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatiblePDType0FontareRegistryOrderingCompatible == true
586-3-3-t02For all Type 2 CIDFonts, 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 PDF Reference Table 5.13PDCIDFontSubtype != "CIDFontType2" || CIDToGIDMap != null
596-3-3-t03All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4PDCMapCMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1
606-3-3-t04For 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 streamCMapFileWMode == dictWMode
616-3-4-t01The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3PDFontSubtype == "Type3" || Subtype == "Type0" || fontFile_size == 1
626-3-5-t01Embedded font programs shall define all font glyphs referenced for rendering with a conforming fileGlyphisGlyphPresent == true
636-3-5-t02For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontfontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null
646-3-5-t03For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontfontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1
656-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistentGlyphisWidthConsistent == true
666-3-7-t01All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding")
676-3-7-t02 All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null
686-3-7-t03Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encodingTrueTypeFontProgramisSymbolic == false || nrCmaps == 1
696-4-t01If an SMask key appears in an ExtGState dictionary, its value shall be NonePDExtGStateSMask == null || SMask == "None"
706-4-t02An XObject dictionary shall not contain the SMask keyPDXObjectSMask_size == 0
716-4-t03A Group object with an S key with a value of Transparency shall not be included in a form XObject. - A Group object with an S key with a value of Transparency shall not be included in a page dictionaryPDGroupS != "Transparency"
726-4-t04The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or CompatiblePDExtGStateBM == null || BM == "Normal" || BM == "Compatible"
736-4-t05The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateCA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001
746-4-t06The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001
756-5-2-t01Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, - Sound and Movie types shall not be permittedPDAnnotSubtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet"
766-5-3-t01An annotation dictionary shall not contain the CA key with a value other than 1.0PDAnnotCA == null || CA == 1.0
776-5-3-t02An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, - Invisible and NoView flag bits shall be set to 0PDAnnotF != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0
786-5-3-t03An annotation dictionary shall not contain the C array or the IC array unless the colour space of the - DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGBPDAnnot(C_size == 0 && IC_size == 0) || gOutputCS == "RGB "
796-5-3-t04For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream.PDAnnotAP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) )
806-6-1-t01The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)PDActionS == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
816-6-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permittedPDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
826-6-1-t03Interactive form fields shall not perform actions of any typePDAnnotSubtype != "Widget" || A_size == 0
836-6-2-t01A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionaryPDAnnotSubtype != "Widget" || AA_size == 0
846-6-2-t02A Field dictionary shall not include an AA entry for an additional-actions dictionaryPDFormFieldAA_size == 0
856-6-2-t03The document catalog dictionary shall not include an AA entry for an additional-actions dictionaryPDDocumentAA_size == 0
866-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent
876-7-11-t02The PDF/A version of a file shall be specified using the PDF/A Identification extension schema.PDFAIdSchemapart == 1
886-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null
896-7-11-t05The PDF/A Identification Schema has required prefix "pdfaid".PDFAIdSchemaprefix == "pdfaid"
906-7-2-t01The document catalog dictionary of a conforming file shall contain the Metadata key.PDDocumentmetadata_size == 1
916-7-2-t02Metadata object stream dictionaries shall not contain the Filter key.PDMetadataFilter == null
926-7-3-t01If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values.CosDocumentdoesInfoMatchXMP
936-7-5-t01The bytes attribute shall not be used in the header of an XMP packet.XMPPackagebytes == null
946-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null
956-7-9-t01The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions.XMPPackageisMetadataValid
966-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false
976-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0)
986-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0
- - diff --git a/PDF_A/PDFA-1B.html b/PDF_A/PDFA-1B.html deleted file mode 100644 index 4a621da3..00000000 --- a/PDF_A/PDFA-1B.html +++ /dev/null @@ -1,347 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDNameDescriptionTypeRule
16-1-10-t01The LZWDecode filter shall not be permittedCosStreamfilters == null || filters.indexOf("LZWDecode") == -1
26-1-10-t02The LZWDecode filter shall not be permittedPDInlineImageF == null || F.indexOf("LZW") == -1
36-1-11-t01A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF keyCosFileSpecificationEF_size == 0
46-1-11-t02A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles keyCosDocumentEmbeddedFiles_size == 0
56-1-12-t01Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648CosInteger(intValue <= 2147483647) && (intValue >= -2147483648)
66-1-12-t02Absolute real value must be less than or equal to 32767.0CosReal(realValue >= -32767.0) && (realValue <= 32767.0)
76-1-12-t03Maximum length of a string (in bytes) is 65535CosStringvalue.length() < 65536
86-1-12-t04Maximum length of a name (in bytes) is 127CosNameinternalRepresentation.length() <= 127
96-1-12-t05Maximum capacity of an array (in elements) is 8191CosArraysize <= 8191
106-1-12-t06Maximum capacity of a dictionary (in entries) is 4095CosDictsize <= 4095
116-1-12-t07Maximum number of indirect objects in a PDF file is 8,388,607CosDocumentnrIndirects <= 8388607
126-1-12-t08Maximum depth of graphics state nesting by q and Q operators is 28Op_q_gsavenestingLevel <= 28
136-1-12-t09Maximum number of DeviceN components is 8PDDeviceNnrComponents <= 8
146-1-12-t10Maximum value of a CID (character identifier) is 65,535CIDGlyphCID <= 65535
156-1-13-t01The document catalog dictionary shall not contain a key with the name OCPropertiesCosDocumentisOptionalContentPresent == false
166-1-2-t01The % character of the file header shall occur at byte offset 0 of the file. - The first line of a PDF file is a header identifying the version of the PDF specification to which the file conformsCosDocumentheaderOffset == 0 && /%PDF-\d\.\d/.test(header)
176-1-2-t02The file header line shall be immediately followed by a comment consisting of a % character followed by at - least four characters, each of whose encoded byte values shall have a decimal value greater than 127CosDocumentheaderByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
186-1-3-t01The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, - as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2CosDocument(isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null)
196-1-3-t02The keyword Encrypt shall not be used in the trailer dictionaryCosTrailerisEncrypted != true
206-1-3-t03No data shall follow the last end-of-file marker except a single optional end-of-line marker.CosDocumentpostEOFDataSize == 0
216-1-3-t04In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identicalCosDocument(isLinearized != true)|| lastID == null || (firstPageID == lastID)
226-1-4-t01In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h)CosXRefsubsectionHeaderSpaceSeparated == true
236-1-4-t02The xref keyword and the cross reference subsection header shall be separated by a single EOL markerCosXRefxrefEOLMarkersComplyPDFA
246-1-6-t01Hexadecimal strings shall contain an even number of non-white-space charactersCosString(isHex != true) || hexCount % 2 == 0
256-1-6-t02All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to fCosString(isHex != true) || containsOnlyHex
266-1-7-t01The value of the Length key specified in the stream dictionary shall match the number of bytes in the file - following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keywordCosStreamisLengthCorrect
276-1-7-t02The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL markerCosStreamstreamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true
286-1-7-t03A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keysCosStreamF == null && FFilter == null && FDecodeParms == null
296-1-8-t01The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword - shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker.CosIndirectspacingCompliesPDFA
306-2-10-t01A content stream shall not contain any operators not defined in PDF Reference - even if such operators are bracketed by the BX/EX compatibility operatorsOp_Undefinedfalse
316-2-2-t01A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents - array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile keyICCOutputProfile(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0
326-2-2-t02If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile streamPDOutputIntentdestOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect
336-2-3-t01All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0
346-2-3-t02DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour spacePDDeviceRGBgOutputCS != null && gOutputCS == "RGB "
356-2-3-t03DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour spacePDDeviceCMYKgOutputCS != null && gOutputCS == "CMYK"
366-2-3-t04If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2PDDeviceGraygOutputCS != null
376-2-3-t05All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4ICCProfileN != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK"))
386-2-4-t01An Image dictionary shall not contain the Alternates keyPDXImageAlternates_size == 0
396-2-4-t02An XObject dictionary (Image or Form) shall not contain the OPI keyPDXObjectOPI_size == 0
406-2-4-t03If an Image dictionary contains the Interpolate key, its value shall be falsePDXImageInterpolate == false
416-2-5-t01A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS keyPDXForm(Subtype2 == null || Subtype2 != "PS") && PS_size == 0
426-2-6-t01A conforming file shall not contain any reference XObjectsPDXFormRef_size == 0
436-2-7-t01A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS"
446-2-8-t01An ExtGState dictionary shall not contain the TR keyPDExtGStateTR == null
456-2-8-t02An ExtGState dictionary shall not contain the TR2 key with a value other than DefaultPDExtGStateTR2 == null || TR2 == "Default"
466-2-9-t01Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or SaturationCosRenderingIntentinternalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"
476-3-2-t01All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionaryPDFontType == "Font"
486-3-2-t02All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fontsPDFontSubtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
496-3-2-t03All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || fontName != null
506-3-2-t04All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null
516-3-2-t05All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null
526-3-2-t06All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
536-3-3-t01For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatiblePDType0FontareRegistryOrderingCompatible == true
546-3-3-t02For all Type 2 CIDFonts, 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 PDF Reference Table 5.13PDCIDFontSubtype != "CIDFontType2" || CIDToGIDMap != null
556-3-3-t03All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4PDCMapCMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1
566-3-3-t04For 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 streamCMapFileWMode == dictWMode
576-3-4-t01The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3PDFontSubtype == "Type3" || Subtype == "Type0" || fontFile_size == 1
586-3-5-t01Embedded font programs shall define all font glyphs referenced for rendering with a conforming fileGlyphisGlyphPresent == true
596-3-5-t02For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18PDType1FontfontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null
606-3-5-t03For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20PDCIDFontfontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1
616-3-6-t01For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistentGlyphisWidthConsistent == true
626-3-7-t01All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding")
636-3-7-t02 All symbolic TrueType fonts shall not specify an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null
646-3-7-t03Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encodingTrueTypeFontProgramisSymbolic == false || nrCmaps == 1
656-4-t01If an SMask key appears in an ExtGState dictionary, its value shall be NonePDExtGStateSMask == null || SMask == "None"
666-4-t02An XObject dictionary shall not contain the SMask keyPDXObjectSMask_size == 0
676-4-t03A Group object with an S key with a value of Transparency shall not be included in a form XObject. - A Group object with an S key with a value of Transparency shall not be included in a page dictionaryPDGroupS != "Transparency"
686-4-t04The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or CompatiblePDExtGStateBM == null || BM == "Normal" || BM == "Compatible"
696-4-t05The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateCA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001
706-4-t06The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0PDExtGStateca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001
716-5-2-t01Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, - Sound and Movie types shall not be permittedPDAnnotSubtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet"
726-5-3-t01An annotation dictionary shall not contain the CA key with a value other than 1.0PDAnnotCA == null || CA == 1.0
736-5-3-t02An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, - Invisible and NoView flag bits shall be set to 0PDAnnotF != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0
746-5-3-t03An annotation dictionary shall not contain the C array or the IC array unless the colour space of the - DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGBPDAnnot(C_size == 0 && IC_size == 0) || gOutputCS == "RGB "
756-5-3-t04For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream.PDAnnotAP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) )
766-6-1-t01The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2)PDActionS == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
776-6-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permittedPDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
786-6-1-t03Interactive form fields shall not perform actions of any typePDAnnotSubtype != "Widget" || A_size == 0
796-6-2-t01A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionaryPDAnnotSubtype != "Widget" || AA_size == 0
806-6-2-t02A Field dictionary shall not include an AA entry for an additional-actions dictionaryPDFormFieldAA_size == 0
816-6-2-t03The document catalog dictionary shall not include an AA entry for an additional-actions dictionaryPDDocumentAA_size == 0
826-7-11-t01The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.XMPMainPackageispdfaidNSPresent
836-7-11-t02The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms.PDFAIdSchemapart == 1
846-7-11-t03A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B.PDFAIdSchemaconformance == "B" || conformance == "A"
856-7-11-t04The property "corr" is not specified in PDF/A Identification Schema in PDF/A-1 specification.PDFAIdSchemacorr == null
866-7-11-t05The PDF/A Identification Schema has required prefix "pdfaid".PDFAIdSchemaprefix == "pdfaid"
876-7-2-t01The document catalog dictionary of a conforming file shall contain the Metadata key.PDDocumentmetadata_size == 1
886-7-2-t02Metadata object stream dictionaries shall not contain the Filter key.PDMetadataFilter == null
896-7-3-t01If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values.CosDocumentdoesInfoMatchXMP
906-7-5-t01The bytes attribute shall not be used in the header of an XMP packet.XMPPackagebytes == null
916-7-5-t02The encoding attribute shall not be used in the header of an XMP packet.XMPPackageencoding == null
926-7-9-t01The metadata stream shall conform to XMP 2004 Specification and well formed PDFAExtension Schema for all extensions.XMPPackageisMetadataValid
936-9-t01The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be falsePDAcroFormNeedAppearances == null || NeedAppearances == false
946-9-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0)
956-9-t03A Widget annotation dictionary or Field dictionary shall not contain the A or AA keysPDFormFieldAA_size == 0
- - diff --git a/PDF_A/PDFA-2B.html b/PDF_A/PDFA-2B.html deleted file mode 100644 index 43040a76..00000000 --- a/PDF_A/PDFA-2B.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDNameDescriptionTypeRule
16-1-10-t01The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value.PDInlineImageF == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1)
26-1-13-t01A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648.CosInteger(intValue <= 2147483647) && (intValue >= -2147483648)
36-1-13-t02A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38CosReal(realValue >= -3.403e+38) && (realValue <= 3.403e+38)
46-1-13-t03A conforming file shall not contain any string longer than 32767 bytes.CosStringvalue.length() < 32767
56-1-13-t04A conforming file shall not contain any name longer than 127 bytes.CosNameorigLength <= 127
66-1-13-t07A conforming file shall not contain more than 8388607 indirect objectsCosDocumentnrIndirects <= 8388607
76-1-13-t08A conforming file shall not nest q/Q pairs by more than 28 nesting levelsOp_q_gsavenestingLevel <= 28
86-1-13-t09A conforming file shall not contain a DeviceN colour space with more than 32 colourants.PDDeviceNnrComponents <= 32
96-1-13-t10A conforming file shall not contain a CID value greater than 65535.CIDGlyphCID <= 65535
106-1-13-t11The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units - in either direction, nor shall it be greater than 14 400 units in either direction.CosBBoxtop - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400
116-1-2-t01The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h)CosDocumentheaderOffset == 0 && /%PDF-1\.[0-7]/.test(header)
126-1-2-t02The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127CosDocumentheaderByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
136-1-3-t01The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4CosDocumentlastID
146-1-3-t02The keyword Encrypt shall not be used in the trailer dictionaryCosTrailerisEncrypted != true
156-1-3-t03No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5.CosDocumentpostEOFDataSize == 0
166-1-4-t02The xref keyword and the cross-reference subsection header shall be separated by a single EOL markerCosXRefxrefEOLMarkersComplyPDFA
176-1-6-t01Hexadecimal strings shall contain an even number of non-white-space charactersCosString(isHex != true) || hexCount % 2 == 0
186-1-6-t02A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)CosString(isHex != true) || containsOnlyHex
196-1-7-t01The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword.CosStreamisLengthCorrect
206-1-7-t02The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker.CosStreamstreamKeywordCRLFCompliant && endstreamKeywordEOLCompliant
216-1-7-t03A stream dictionary shall not contain the F, FFilter, or FDecodeParams keysCosStreamF == null && FFilter == null && FDecodeParms == null
226-1-7-t04All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode.CosStreamfilters == null || filters.indexOf("LZWDecode") == -1
236-1-8-t01Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences.CosUnicodeNameisValidUtf8 == true
246-1-9-t01The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker.CosIndirectspacingCompliesPDFA
256-2-10-t01Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary.PDExtGStateBM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity"
266-2-11-2-t01All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionaryPDFontType == "Font"
276-2-11-2-t02All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fontsPDFontSubtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
286-2-11-2-t03All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || fontName != null
296-2-11-2-t04All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null
306-2-11-2-t05All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null
316-2-11-2-t06All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
326-2-11-3-t01For 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap.PDType0FontcmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true)
336-2-11-3-t02ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117.PDCIDFontSubtype != "CIDFontType2" || CIDToGIDMap != null
346-2-11-3-t03All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5.PDCMapCMapName == "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-EUC-H" || CMapName == "GBK2K-EUC-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" || - embeddedFile_size == 1
356-2-11-3-t04For 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.CMapFileWMode == dictWMode
366-2-11-4-t01The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9.PDFontSubtype == "Type3" || Subtype == "Type0" || fontFile_size == 1
376-2-11-4-t02Embedded fonts shall define all glyphs referenced for rendering within the conforming file.GlyphisGlyphPresent == true
386-2-11-4-t03If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not.PDType1FontCharSet == null || charSetListsAllGlyphs == true
396-2-11-4-t04If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not.PDCIDFontCIDSet_size == 0 || cidSetListsAllGlyphs == true
406-2-11-5-t01For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent.GlyphisWidthConsistent == true
416-2-11-6-t01For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out.TrueTypeFontProgramisSymbolic == true || nrCmaps >= 1
426-2-11-6-t02No 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.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true)
436-2-11-6-t03Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null
446-2-11-6-t04Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding.TrueTypeFontProgramisSymbolic == false || nrCmaps == 1 || cmap30Present == true
456-2-11-8-t01A PDF/A-2 compliant document 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.Glyphname != ".notdef"
466-2-2-t01Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators.Op_Undefinedfalse
476-2-3-t01The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK".ICCOutputProfile(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
486-2-3-t02If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream.PDOutputIntentdestOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect
496-2-3-t03In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent.PDOutputIntentDestOutputProfileRef_size == 0
506-2-4-t01The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1.ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0
516-2-4-t02DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile.PDDeviceRGBgOutputCS != null && gOutputCS == "RGB "
526-2-4-t03DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile.PDDeviceCMYKgOutputCS != null && gOutputCS == "CMYK"
536-2-4-t04DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present.PDDeviceGraygOutputCS != null
546-2-4-t05For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present.PDDeviceNareColorantsPresent == true
556-2-4-t06All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored.PDSeparationareTintAndAlternateConsistent == true
566-2-5-t01An ExtGState dictionary shall not contain the TR keyPDExtGStateTR == null
576-2-5-t02An ExtGState dictionary shall not contain the TR2 key with a value other than DefaultPDExtGStateTR2 == null || TR2 == "Default"
586-2-5-t03An ExtGState dictionary shall not contain the HTP keyPDExtGStateHTP_size == 0
596-2-5-t04All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key.PDHalftoneHalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
606-2-5-t05Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key.PDHalftoneHalftoneName == null
616-2-6-t01Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation.CosRenderingIntentvalue == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation"
626-2-8-t01An Image dictionary shall not contain the Alternates keyPDXImageAlternates_size == 0
636-2-8-t02An Image dictionary shall not contain the OPI keyPDXImageOPI_size == 0
646-2-8-t03If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false.PDXImageInterpolate == false
656-2-9-t01A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key.PDXForm(Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0
666-2-9-t02A conforming file shall not contain any reference XObjectsPDXFormRef_size == 0
676-2-9-t03A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS"
686-3-1-t01Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted.PDAnnotSubtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact"
696-3-2-t01Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key.PDAnnotSubtype == "Popup" || F != null
706-3-2-t02If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0.PDAnnotF == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0)
716-3-2-t03Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1.PDAnnotSubtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1)
726-3-3-t01Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link.PDAnnot(width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null
736-3-3-t02For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream.PDAnnotAP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) )
746-4-1-t01A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys.PDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0)
756-4-1-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys.PDFormFieldAA_size == 0
766-4-1-t03The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false.PDAcroFormNeedAppearances == null || NeedAppearances == false
776-4-2-t01The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, - if present, shall not contain the XFA key.PDAcroFormXFA_size == 0
786-4-2-t02A document's Catalog shall not contain the NeedsRendering key.CosDocumentNeedsRendering == false
796-5-1-t01The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted.PDActionS == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
806-5-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted.PDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
816-5-2-t01The document's Catalog shall not include an AA entry for an additional-actions dictionary.PDDocumentAA_size == 0
826-5-2-t02The Page dictionary shall not include an AA entry for an additional-actions dictionary.PDPageAA_size == 0
836-6-4-t02The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 2.PDFAIdSchemapart == 2
846-6-4-t03Level B conforming file shall specify the value of pdfaid:conformance as B.PDFAIdSchemaconformance == "B"
856-8-t01A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is - compliant with either ISO 19005-1 or this part of ISO 19005.EmbeddedFileisValidPDFA12 == true
866-8-t02The file specification dictionary for an embedded file shall contain the F and UF keysCosFileSpecificationEF_size == 0 || (F != null && UF != null)
- - diff --git a/PDF_A/PDFA-3B.html b/PDF_A/PDFA-3B.html deleted file mode 100644 index 25c1ff6b..00000000 --- a/PDF_A/PDFA-3B.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IDNameDescriptionTypeRule
16-6-4-t02The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. Files prepared in - compliance with this part of ISO 19005 shall use a value of 3.PDFAIdSchemapart == 3
26-8-t01The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. - If the MIME type is not known, the "application/octet-stream" shall be used.EmbeddedFileSubtype != null
36-8-t03In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, - a new (required) key has been defined and its presence (in the dictionary) is required.CosFileSpecificationAFRelationship != null
46-1-10-t01The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value.PDInlineImageF == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1)
56-1-13-t01A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648.CosInteger(intValue <= 2147483647) && (intValue >= -2147483648)
66-1-13-t02A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38CosReal(realValue >= -3.403e+38) && (realValue <= 3.403e+38)
76-1-13-t03A conforming file shall not contain any string longer than 32767 bytes.CosStringvalue.length() < 32767
86-1-13-t04A conforming file shall not contain any name longer than 127 bytes.CosNameorigLength <= 127
96-1-13-t07A conforming file shall not contain more than 8388607 indirect objectsCosDocumentnrIndirects <= 8388607
106-1-13-t08A conforming file shall not nest q/Q pairs by more than 28 nesting levelsOp_q_gsavenestingLevel <= 28
116-1-13-t09A conforming file shall not contain a DeviceN colour space with more than 32 colourants.PDDeviceNnrComponents <= 32
126-1-13-t10A conforming file shall not contain a CID value greater than 65535.CIDGlyphCID <= 65535
136-1-13-t11The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units - in either direction, nor shall it be greater than 14 400 units in either direction.CosBBoxtop - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400
146-1-2-t01The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h)CosDocumentheaderOffset == 0 && /%PDF-1\.[0-7]/.test(header)
156-1-2-t02The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127CosDocumentheaderByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127
166-1-3-t01The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4CosDocumentlastID
176-1-3-t02The keyword Encrypt shall not be used in the trailer dictionaryCosTrailerisEncrypted != true
186-1-3-t03No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5.CosDocumentpostEOFDataSize == 0
196-1-4-t02The xref keyword and the cross-reference subsection header shall be separated by a single EOL markerCosXRefxrefEOLMarkersComplyPDFA
206-1-6-t01Hexadecimal strings shall contain an even number of non-white-space charactersCosString(isHex != true) || hexCount % 2 == 0
216-1-6-t02A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f)CosString(isHex != true) || containsOnlyHex
226-1-7-t01The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword.CosStreamisLengthCorrect
236-1-7-t02The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker.CosStreamstreamKeywordCRLFCompliant && endstreamKeywordEOLCompliant
246-1-7-t03A stream dictionary shall not contain the F, FFilter, or FDecodeParams keysCosStreamF == null && FFilter == null && FDecodeParms == null
256-1-7-t04All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode.CosStreamfilters == null || filters.indexOf("LZWDecode") == -1
266-1-8-t01Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences.CosUnicodeNameisValidUtf8 == true
276-1-9-t01The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker.CosIndirectspacingCompliesPDFA
286-2-10-t01Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary.PDExtGStateBM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity"
296-2-11-2-t01All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionaryPDFontType == "Font"
306-2-11-2-t02All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fontsPDFontSubtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"
316-2-11-2-t03All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the fontPDFontSubtype == "Type3" || fontName != null
326-2-11-2-t04All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || FirstChar != null
336-2-11-2-t05All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths arrayPDSimpleFontisStandard == true || LastChar != null
346-2-11-2-t06All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widthsPDSimpleFontisStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)
356-2-11-3-t01For 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap.PDType0FontcmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true)
366-2-11-3-t02ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117.PDCIDFontSubtype != "CIDFontType2" || CIDToGIDMap != null
376-2-11-3-t03All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5.PDCMapCMapName == "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-EUC-H" || CMapName == "GBK2K-EUC-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" || - embeddedFile_size == 1
386-2-11-3-t04For 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.CMapFileWMode == dictWMode
396-2-11-4-t01The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9.PDFontSubtype == "Type3" || Subtype == "Type0" || fontFile_size == 1
406-2-11-4-t02Embedded fonts shall define all glyphs referenced for rendering within the conforming file.GlyphisGlyphPresent == true
416-2-11-4-t03If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not.PDType1FontCharSet == null || charSetListsAllGlyphs == true
426-2-11-4-t04If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not.PDCIDFontCIDSet_size == 0 || cidSetListsAllGlyphs == true
436-2-11-5-t01For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent.GlyphisWidthConsistent == true
446-2-11-6-t01For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out.TrueTypeFontProgramisSymbolic == true || nrCmaps >= 1
456-2-11-6-t02No 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.PDTrueTypeFontisSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true)
466-2-11-6-t03Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionaryPDTrueTypeFontisSymbolic == false || Encoding == null
476-2-11-6-t04Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding.TrueTypeFontProgramisSymbolic == false || nrCmaps == 1 || cmap30Present == true
486-2-11-8-t01A PDF/A-2 compliant document 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.Glyphname != ".notdef"
496-2-2-t01Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators.Op_Undefinedfalse
506-2-3-t01The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK".ICCOutputProfile(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0
516-2-3-t02If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream.PDOutputIntentdestOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect
526-2-3-t03In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent.PDOutputIntentDestOutputProfileRef_size == 0
536-2-4-t01The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1.ICCInputProfile(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0
546-2-4-t02DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile.PDDeviceRGBgOutputCS != null && gOutputCS == "RGB "
556-2-4-t03DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile.PDDeviceCMYKgOutputCS != null && gOutputCS == "CMYK"
566-2-4-t04DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present.PDDeviceGraygOutputCS != null
576-2-4-t05For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present.PDDeviceNareColorantsPresent == true
586-2-4-t06All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored.PDSeparationareTintAndAlternateConsistent == true
596-2-5-t01An ExtGState dictionary shall not contain the TR keyPDExtGStateTR == null
606-2-5-t02An ExtGState dictionary shall not contain the TR2 key with a value other than DefaultPDExtGStateTR2 == null || TR2 == "Default"
616-2-5-t03An ExtGState dictionary shall not contain the HTP keyPDExtGStateHTP_size == 0
626-2-5-t04All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key.PDHalftoneHalftoneType != null && (HalftoneType == 1 || HalftoneType == 5)
636-2-5-t05Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key.PDHalftoneHalftoneName == null
646-2-6-t01Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation.CosRenderingIntentvalue == "RelativeColorimetric" || value == "AbsoluteColorimetric" || value == "Perceptual" || value == "Saturation"
656-2-8-t01An Image dictionary shall not contain the Alternates keyPDXImageAlternates_size == 0
666-2-8-t02An Image dictionary shall not contain the OPI keyPDXImageOPI_size == 0
676-2-8-t03If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false.PDXImageInterpolate == false
686-2-9-t01A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key.PDXForm(Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0
696-2-9-t02A conforming file shall not contain any reference XObjectsPDXFormRef_size == 0
706-2-9-t03A conforming file shall not contain any PostScript XObjectsPDXObjectSubtype != "PS"
716-3-1-t01Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted.PDAnnotSubtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact"
726-3-2-t01Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key.PDAnnotSubtype == "Popup" || F != null
736-3-2-t02If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0.PDAnnotF == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 1 && (F & 32) == 0 && (F & 256) == 0)
746-3-2-t03Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1.PDAnnotSubtype != "Text" || (F != null && (F & 8) == 1 && (F & 16) == 1)
756-3-3-t01Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link.PDAnnot(width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null
766-3-3-t02For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream.PDAnnotAP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) )
776-4-1-t01A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys.PDAnnotSubtype != "Widget" || (A_size == 0 && AA_size == 0)
786-4-1-t02A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys.PDFormFieldAA_size == 0
796-4-1-t03The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false.PDAcroFormNeedAppearances == null || NeedAppearances == false
806-4-2-t01The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, - if present, shall not contain the XFA key.PDAcroFormXFA_size == 0
816-4-2-t02A document's Catalog shall not contain the NeedsRendering key.CosDocumentNeedsRendering == false
826-5-1-t01The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted.PDActionS == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"
836-5-1-t02Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted.PDNamedActionN == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"
846-5-2-t01The document's Catalog shall not include an AA entry for an additional-actions dictionary.PDDocumentAA_size == 0
856-5-2-t02The Page dictionary shall not include an AA entry for an additional-actions dictionary.PDPageAA_size == 0
866-6-4-t03Level B conforming file shall specify the value of pdfaid:conformance as B.PDFAIdSchemaconformance == "B"
876-8-t02The file specification dictionary for an embedded file shall contain the F and UF keysCosFileSpecificationEF_size == 0 || (F != null && UF != null)
- - From fe59746650a33c0cc973a51bd091d5ffb9ac801a Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 26 Feb 2016 17:35:14 +0300 Subject: [PATCH 133/557] Fixed validation of the document header in PDF/A-2 and PDF/A-3 --- .../6.1.2 File header/verapdf-profile-6-1-2-t01.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml index 1ea93b1b..7a32f3d9 100644 --- a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -11,7 +11,7 @@ The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) - headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) + headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 06884cad..278971e7 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -10,7 +10,7 @@ The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) - headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) + headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index b8f774ac..4669d58a 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -10,7 +10,7 @@ The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) - headerOffset == 0 && /%PDF-1\.[0-7]/.test(header) + headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification From 55e831aae9f90b2fd3e9304eb3035744d532cd66 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 29 Feb 2016 10:14:15 +0300 Subject: [PATCH 134/557] Added extra requirements into PDF/A-2 and PDF/A-3 profiles 6.10 Use of alternate presentations and transitions - AlternatePresentations 6.10 Use of alternate presentations and transitions - PresSteps 6.11 Document requirements --- .../verapdf-profile-6-10-t01.xml | 21 +++++++++++++++++++ .../verapdf-profile-6-10-t02.xml | 21 +++++++++++++++++++ .../verapdf-profile-6-11-t01.xml | 21 +++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t01.xml create mode 100644 PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t02.xml create mode 100644 PDF_A/2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml diff --git a/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t01.xml b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t01.xml new file mode 100644 index 00000000..89514aac --- /dev/null +++ b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.10 Use of alternate presentations and transitions - AlternatePresentations + There shall be no AlternatePresentations entry in the document's name dictionary +
+ + + + + There shall be no AlternatePresentations entry in the document's name dictionary + AlternatePresentations_size == 0 + + The document's name dictionary contains the AlternatePresentations entry + + + + + + +
diff --git a/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t02.xml b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t02.xml new file mode 100644 index 00000000..d641b917 --- /dev/null +++ b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.10 Use of alternate presentations and transitions - PresSteps + There shall be no PresSteps entry in any Page dictionary +
+ + + + + There shall be no PresSteps entry in any Page dictionary + PresSteps_size == 0 + + A Page dictionary contains the PresSteps entry + + + + + + +
diff --git a/PDF_A/2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml b/PDF_A/2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml new file mode 100644 index 00000000..e2646647 --- /dev/null +++ b/PDF_A/2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.11 Document requirements + The document catalog shall not contain the Requirements key +
+ + + + + The document catalog shall not contain the Requirements key + Requirements_size == 0 + + The document catalog contains the Requirements key + + + + + + +
From 129c687895c40713c9f1c8d0c70b8e801e86eced Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 29 Feb 2016 10:17:48 +0300 Subject: [PATCH 135/557] Updated the requirement for the Annotation's normal appearance type According to the TWG discussions we do require now that the normal appearance is of type dictionary for all Button fields, even if they have a single state --- .../verapdf-profile-6-5-3-t04.xml | 5 +++-- .../verapdf-profile-6-3-3-t02.xml | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml index faee698f..b52f88b5 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml @@ -11,9 +11,10 @@ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml index bf564186..c1e504d9 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -9,11 +9,12 @@ - + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type From 1a46fb60bea4471bc14a8efd85f3c8204d0ff425 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 29 Feb 2016 10:20:17 +0300 Subject: [PATCH 136/557] Merged the latest profile updates --- PDF_A/PDFA-1A.xml | 3 ++- PDF_A/PDFA-1B.xml | 5 +++-- PDF_A/PDFA-2B.xml | 33 ++++++++++++++++++++++++++++++++- PDF_A/PDFA-3B.xml | 35 +++++++++++++++++++++++++++++++++-- 4 files changed, 70 insertions(+), 6 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 74ef9523..6002f5ba 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -875,7 +875,8 @@ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 98d54351..166589bc 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -875,8 +875,9 @@ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (FT == "Btn" && N_type == "Dict") ) ) - + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 278971e7..fb60eccd 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -859,7 +859,8 @@ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type @@ -1179,6 +1180,36 @@ + + + There shall be no AlternatePresentations entry in the document's name dictionary + AlternatePresentations_size == 0 + + The document's name dictionary contains the AlternatePresentations entry + + + + + + + There shall be no PresSteps entry in any Page dictionary + PresSteps_size == 0 + + A Page dictionary contains the PresSteps entry + + + + + + + The document catalog shall not contain the Requirements key + Requirements_size == 0 + + The document catalog contains the Requirements key + + + + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 4669d58a..6691f1d7 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -855,11 +855,12 @@ - + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( N_type == "Stream" || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type @@ -1190,6 +1191,36 @@ + + + There shall be no PresSteps entry in any Page dictionary + PresSteps_size == 0 + + A Page dictionary contains the PresSteps entry + + + + + + + The document catalog shall not contain the Requirements key + Requirements_size == 0 + + The document catalog contains the Requirements key + + + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + null + gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + From 5799507d40fad91b4917a027e75e3098b3098654 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Mon, 29 Feb 2016 10:24:45 +0300 Subject: [PATCH 137/557] Update PDFA-3B.xml --- PDF_A/PDFA-3B.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 6691f1d7..42e5d917 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -855,7 +855,7 @@
- + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. From 33b13740fd05af4dd83e1fa52851f44832bebf63 Mon Sep 17 00:00:00 2001 From: Timur Kamalov Date: Mon, 29 Feb 2016 14:41:39 +0300 Subject: [PATCH 138/557] Fixed profile. --- PDF_A/PDFA-3B.xml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 42e5d917..f95d1280 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1212,16 +1212,6 @@ - - - null - S == "GTS_PDFA1" ? colorSpace : gOutputCS - - - null - gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect - - null From eab9167f1ad4522e424f6da8c77abc6e5b40ec3a Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Mon, 29 Feb 2016 17:09:17 +0300 Subject: [PATCH 139/557] Fixed reference to ISO 19005-3 --- PDF_A/PDFA-3B.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index f95d1280..d5947daa 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1192,7 +1192,7 @@
- + There shall be no PresSteps entry in any Page dictionary PresSteps_size == 0 @@ -1202,7 +1202,7 @@ - + The document catalog shall not contain the Requirements key Requirements_size == 0 From 652462cfa413cf46e8d0d52c7d61028818a83c67 Mon Sep 17 00:00:00 2001 From: Timur Kamalov Date: Tue, 1 Mar 2016 14:56:35 +0300 Subject: [PATCH 140/557] Changed profiles according to the new CosFilter and CosIIFilter types. --- .../verapdf-profile-6-1-10-t01.xml | 6 ++--- .../verapdf-profile-6-1-10-t02.xml | 12 +++++----- .../verapdf-profile-6-1-10-t01.xml | 13 +++++++--- .../verapdf-profile-6-1-7-t04.xml | 24 ++++++++++++++----- 4 files changed, 37 insertions(+), 18 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml index 5979063d..27181b9e 100644 --- a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml @@ -1,15 +1,15 @@ - +
ISO 19005-1:2005 - 6.1.10 Filters - LZW The LZWDecode filter shall not be permitted
- + The LZWDecode filter shall not be permitted - filters == null || filters.indexOf("LZWDecode") == -1 + internalRepresentation != "LZWDecode" LZW compression is used diff --git a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml index 87000fc9..e4851802 100644 --- a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml @@ -1,15 +1,15 @@ - -
- ISO 19005-1:2005 - 6.1.10 Filters - LZW in inline images + +
+ ISO 19005-1:2005 - 6.1.10 Filters - LZW The LZWDecode filter shall not be permitted
- - + + The LZWDecode filter shall not be permitted - F == null || F.indexOf("LZW") == -1 + internalRepresentation != "LZWDecode" && internalRepresentation != "LZW" LZW compression is used in the inline image diff --git a/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml index f0c02b8e..5c0d6791 100644 --- a/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.10 Inline image dictionaries The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, @@ -7,11 +7,18 @@
- + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. - F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || + internalRepresentation == "AHx" || internalRepresentation == "A85" || + internalRepresentation == "Fl" || internalRepresentation == "RL" || + internalRepresentation == "CCF" || internalRepresentation == "DCT" + Inline image uses LZW, Crypt or one of the unknown filters diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml index 474b32e1..a12293a2 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml @@ -1,15 +1,27 @@ - +
ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.2 Filters - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of + LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be + used.
- - - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. - filters == null || filters.indexOf("LZWDecode") == -1 + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of + LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be + used. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || + internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || + (internalRepresentation == "Crypt" && decodeParms == "Identity") + LZW compression is used From 875a93a89711d6eac6e50278529e25dedfcac737 Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Thu, 3 Mar 2016 09:38:57 +0300 Subject: [PATCH 141/557] Merged new profiles --- PDF_A/PDFA-1A.xml | 20 +++++--------------- PDF_A/PDFA-1B.xml | 22 ++++++---------------- PDF_A/PDFA-2B.xml | 38 +++++++++++++++++++++++++++----------- PDF_A/PDFA-3B.xml | 46 ++++++++++++++++++++++++++++++++++++---------- 4 files changed, 74 insertions(+), 52 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 6002f5ba..7485f143 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
@@ -160,20 +160,10 @@ - + The LZWDecode filter shall not be permitted - filters == null || filters.indexOf("LZWDecode") == -1 - - LZW compression is used - - - - - - - The LZWDecode filter shall not be permitted - F == null || F.indexOf("LZW") == -1 + internalRepresentation != "LZWDecode" && internalRepresentation != "LZW" LZW compression is used in the inline image @@ -873,7 +863,7 @@ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) @@ -1134,7 +1124,7 @@ The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. part == 1 - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file. part diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 166589bc..95e9d651 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
@@ -160,20 +160,10 @@ - + The LZWDecode filter shall not be permitted - filters == null || filters.indexOf("LZWDecode") == -1 - - LZW compression is used - - - - - - - The LZWDecode filter shall not be permitted - F == null || F.indexOf("LZW") == -1 + internalRepresentation != "LZWDecode" && internalRepresentation != "LZW" LZW compression is used in the inline image @@ -873,11 +863,11 @@ For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) - + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type @@ -1134,7 +1124,7 @@ The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. part == 1 - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1b conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file. part diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index fb60eccd..d7224528 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011
@@ -124,10 +124,19 @@ - + - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. - filters == null || filters.indexOf("LZWDecode") == -1 + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of + LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be + used. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || + internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || + (internalRepresentation == "Crypt" && decodeParms == "Identity") + LZW compression is used @@ -159,11 +168,18 @@ - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. - F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || + internalRepresentation == "AHx" || internalRepresentation == "A85" || + internalRepresentation == "Fl" || internalRepresentation == "RL" || + internalRepresentation == "CCF" || internalRepresentation == "DCT" + Inline image uses LZW, Crypt or one of the unknown filters @@ -1180,7 +1196,7 @@ - + There shall be no AlternatePresentations entry in the document's name dictionary AlternatePresentations_size == 0 @@ -1190,7 +1206,7 @@ - + There shall be no PresSteps entry in any Page dictionary PresSteps_size == 0 @@ -1199,8 +1215,8 @@ - - + + The document catalog shall not contain the Requirements key Requirements_size == 0 @@ -1209,7 +1225,7 @@ - + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d5947daa..eec523e7 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012
@@ -124,10 +124,19 @@ - + - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. - filters == null || filters.indexOf("LZWDecode") == -1 + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of + LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be + used. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || + internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || + (internalRepresentation == "Crypt" && decodeParms == "Identity") + LZW compression is used @@ -159,11 +168,18 @@ - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. - F == null || (F.indexOf("LZW") == -1 && F.indexOf("Crypt") == -1) + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || + internalRepresentation == "AHx" || internalRepresentation == "A85" || + internalRepresentation == "Fl" || internalRepresentation == "RL" || + internalRepresentation == "CCF" || internalRepresentation == "DCT" + Inline image uses LZW, Crypt or one of the unknown filters @@ -1191,7 +1207,17 @@ - + + + There shall be no AlternatePresentations entry in the document's name dictionary + AlternatePresentations_size == 0 + + The document's name dictionary contains the AlternatePresentations entry + + + + + There shall be no PresSteps entry in any Page dictionary PresSteps_size == 0 @@ -1200,8 +1226,8 @@ - - + + The document catalog shall not contain the Requirements key Requirements_size == 0 @@ -1210,7 +1236,7 @@ - + From 942d1143ff48b52ac23d8207b129e5150076e6ea Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 11 Mar 2016 11:57:18 +0300 Subject: [PATCH 142/557] Added optional content rules for PDF/A-2 --- .../verapdf-profile-6-9-t01.xml | 23 +++++++++++++++++++ .../verapdf-profile-6-9-t02.xml | 23 +++++++++++++++++++ .../verapdf-profile-6-9-t03.xml | 23 +++++++++++++++++++ .../verapdf-profile-6-9-t04.xml | 21 +++++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml create mode 100644 PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml create mode 100644 PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml create mode 100644 PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml new file mode 100644 index 00000000..deecda3f --- /dev/null +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.9 Optional content - Name key present + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. +
+ + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + +
diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml new file mode 100644 index 00000000..c491054f --- /dev/null +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.9 Optional content - Name key unique + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-2 file. +
+ + + + + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-2 file. + hasDuplicateName == false + + Optional content configuration dictionary has duplicated name + + + + + + +
diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml new file mode 100644 index 00000000..0f2904af --- /dev/null +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.9 Optional content - Order key + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. +
+ + + + + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. + doesOrderContainAllOCGs == true + + Not all optional content groups are present in the Order entry of the optional content configuration dictionary + + + + + + +
diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml new file mode 100644 index 00000000..169ada13 --- /dev/null +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.9 Optional content - Order key + The AS key shall not appear in any optional content configuration dictionary. +
+ + + + + The AS key shall not appear in any optional content configuration dictionary. + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + +
From d86583d1c167c72dd7c02eb4fd9a2a136a43322c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 18 Mar 2016 16:17:06 +0300 Subject: [PATCH 143/557] Added PDF/A-2 profiles for JPEG2000 validation --- .../verapdf-profile-6-2-8-3-t01.xml | 21 +++++++++++++++++ .../verapdf-profile-6-2-8-3-t02.xml | 23 +++++++++++++++++++ .../verapdf-profile-6-2-8-3-t03.xml | 23 +++++++++++++++++++ .../verapdf-profile-6-2-8-3-t04.xml | 21 +++++++++++++++++ .../verapdf-profile-6-2-8-3-t05.xml | 21 +++++++++++++++++ 5 files changed, 109 insertions(+) create mode 100644 PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml create mode 100644 PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml create mode 100644 PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml create mode 100644 PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml create mode 100644 PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml new file mode 100644 index 00000000..f4b6115c --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Number of channels + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. +
+ + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 + + JPEG2000 image has number of colour channels different from 1, 3 or 4. + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml new file mode 100644 index 00000000..a2836b45 --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Colour spaces with APPROX field + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. +
+ + + + + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. + nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + + The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml new file mode 100644 index 00000000..d36bc707 --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Colour specification method + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only + that colour space and shall ignore all other colour space specifications. +
+ + + + + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only + that colour space and shall ignore all other colour space specifications. + colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + + Colour specification of the JPEG2000 image has specification method. + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml new file mode 100644 index 00000000..6af2e7a3 --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Enumerated colour space + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. +
+ + + + + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + colrEnumCS == null || colrEnumCS != 19 + + JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml new file mode 100644 index 00000000..54d5bcfb --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Bit-depth + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. +
+ + + + + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + + JPEG2000 image has invalid bit-depth parameters + + + + + + +
From efa5eb0337a7c69c841a63cecfe6a15963e7503e Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 22 Mar 2016 12:56:59 +0300 Subject: [PATCH 144/557] Converted links to properties for alternate presentations and document requirements --- .../verapdf-profile-6-10-t01.xml | 2 +- .../verapdf-profile-6-10-t02.xml | 2 +- .../2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t01.xml b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t01.xml index 89514aac..1d704de1 100644 --- a/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t01.xml +++ b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t01.xml @@ -9,7 +9,7 @@ There shall be no AlternatePresentations entry in the document's name dictionary - AlternatePresentations_size == 0 + containsAlternatePresentations == false The document's name dictionary contains the AlternatePresentations entry diff --git a/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t02.xml b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t02.xml index d641b917..b91a3bea 100644 --- a/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t02.xml +++ b/PDF_A/2b/6.10 Use of alternate presentations and transitions/verapdf-profile-6-10-t02.xml @@ -9,7 +9,7 @@ There shall be no PresSteps entry in any Page dictionary - PresSteps_size == 0 + containsPresSteps == false A Page dictionary contains the PresSteps entry diff --git a/PDF_A/2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml b/PDF_A/2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml index e2646647..0cbbd7f1 100644 --- a/PDF_A/2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml +++ b/PDF_A/2b/6.11 Document requirements/verapdf-profile-6-11-t01.xml @@ -9,7 +9,7 @@ The document catalog shall not contain the Requirements key - Requirements_size == 0 + Requirements == null The document catalog contains the Requirements key From 2223a827a86380956a83f971eb2002064e613bb1 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 22 Mar 2016 14:50:23 +0300 Subject: [PATCH 145/557] Documentation updates for Character encoding rules in PDF/A-2 --- .../verapdf-profile-6-2-11-6-t01.xml | 2 +- .../verapdf-profile-6-2-11-6-t02.xml | 9 +++++---- .../verapdf-profile-6-2-11-6-t03.xml | 2 +- .../verapdf-profile-6-2-11-6-t04.xml | 6 +++--- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml index b60d6106..ca4be815 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - cmaps for non-symbolic TrueType fonts For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml index f26d6451..4425717b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml @@ -1,10 +1,10 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Non-symbolic TrueType fonts 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. + Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table.
@@ -12,8 +12,9 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table.
+ isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml index 845d98b6..7287babf 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Symbolic TrueType fonts Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml index ee4ee952..742acb4c 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml @@ -1,15 +1,15 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - cmaps in the symbolic TrueType font program - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding.
- Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true From f5207f7ad203493c657b6229f280f310deaededf Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 22 Mar 2016 15:55:58 +0300 Subject: [PATCH 146/557] Fixed issue with repeated test number --- .../6.1.10 Filters/verapdf-profile-6-1-10-t02.xml | 2 +- PDF_A/PDFA-1B.xml | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml index e4851802..e50f35da 100644 --- a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t02.xml @@ -7,7 +7,7 @@ - + The LZWDecode filter shall not be permitted internalRepresentation != "LZWDecode" && internalRepresentation != "LZW" diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 95e9d651..878cbb0f 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
@@ -160,9 +160,19 @@ - + The LZWDecode filter shall not be permitted + internalRepresentation != "LZWDecode" + + LZW compression is used + + + + + + + The LZWDecode filter shall not be permitted internalRepresentation != "LZWDecode" && internalRepresentation != "LZW" LZW compression is used in the inline image From 28e9e634535be7a37382188db4962085d42218e5 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 22 Mar 2016 16:46:08 +0300 Subject: [PATCH 147/557] Updated merged profiles to include the recent rule updates --- PDF_A/PDFA-1A.xml | 14 +++++- PDF_A/PDFA-2B.xml | 110 +++++++++++++++++++++++++++++++++++++++++++--- PDF_A/PDFA-3B.xml | 110 +++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 218 insertions(+), 16 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 7485f143..8ed40ad7 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
@@ -160,9 +160,19 @@ - + The LZWDecode filter shall not be permitted + internalRepresentation != "LZWDecode" + + LZW compression is used + + + + + + + The LZWDecode filter shall not be permitted internalRepresentation != "LZWDecode" && internalRepresentation != "LZW" LZW compression is used in the inline image diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index d7224528..f0f4ead1 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011
@@ -489,6 +489,58 @@ + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 + + JPEG2000 image has number of colour channels different from 1, 3 or 4. + + + + + + + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. + nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + + The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). + + + + + + + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only + that colour space and shall ignore all other colour space specifications. + colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + + Colour specification of the JPEG2000 image has specification method. + + + + + + + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + colrEnumCS == null || colrEnumCS != 19 + + JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A + + + + + + + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + + JPEG2000 image has invalid bit-depth parameters + + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. @@ -769,8 +821,9 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -790,7 +843,7 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true @@ -1196,10 +1249,53 @@ + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-2 file. + hasDuplicateName == false + + Optional content configuration dictionary has duplicated name + + + + + + + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. + doesOrderContainAllOCGs == true + + Not all optional content groups are present in the Order entry of the optional content configuration dictionary + + + + + + + The AS key shall not appear in any optional content configuration dictionary. + AS == null + + AS key is present in the optional content configuration dictionary + + + + There shall be no AlternatePresentations entry in the document's name dictionary - AlternatePresentations_size == 0 + containsAlternatePresentations == false The document's name dictionary contains the AlternatePresentations entry @@ -1209,7 +1305,7 @@ There shall be no PresSteps entry in any Page dictionary - PresSteps_size == 0 + containsPresSteps == false A Page dictionary contains the PresSteps entry @@ -1219,7 +1315,7 @@ The document catalog shall not contain the Requirements key - Requirements_size == 0 + Requirements == null The document catalog contains the Requirements key diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index eec523e7..679d56fc 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012
@@ -489,6 +489,58 @@ + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 + + JPEG2000 image has number of colour channels different from 1, 3 or 4. + + + + + + + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. + nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + + The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). + + + + + + + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only + that colour space and shall ignore all other colour space specifications. + colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + + Colour specification of the JPEG2000 image has specification method. + + + + + + + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + colrEnumCS == null || colrEnumCS != 19 + + JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A + + + + + + + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + + JPEG2000 image has invalid bit-depth parameters + + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. @@ -769,8 +821,9 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + Microsoft Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -790,7 +843,7 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the "cmap" table in the embedded font program + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true @@ -1207,10 +1260,53 @@ + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-2 file. + hasDuplicateName == false + + Optional content configuration dictionary has duplicated name + + + + + + + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. + doesOrderContainAllOCGs == true + + Not all optional content groups are present in the Order entry of the optional content configuration dictionary + + + + + + + The AS key shall not appear in any optional content configuration dictionary. + AS == null + + AS key is present in the optional content configuration dictionary + + + + There shall be no AlternatePresentations entry in the document's name dictionary - AlternatePresentations_size == 0 + containsAlternatePresentations == false The document's name dictionary contains the AlternatePresentations entry @@ -1220,7 +1316,7 @@ There shall be no PresSteps entry in any Page dictionary - PresSteps_size == 0 + containsPresSteps == false A Page dictionary contains the PresSteps entry @@ -1230,7 +1326,7 @@ The document catalog shall not contain the Requirements key - Requirements_size == 0 + Requirements == null The document catalog contains the Requirements key From 74e75e665ccad59ef043e5b937850133e857e64c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 22 Mar 2016 22:06:18 +0300 Subject: [PATCH 148/557] Added the rule for the PDF/A-2 requirement to have resources defined in the immediate Resources dictionary --- .../verapdf-profile-6-2-2-t02.xml | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml new file mode 100644 index 00000000..7474866e --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.2.2 Content streams - + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. +
+ + + + + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + isInherited == false + + A content stream references a named resource that is not defined in an explicitly associated Resources dictionary + + + + + + + + +
From cd28ef864d1cdd88004dd6f6275c50b927fc4de2 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 24 Mar 2016 11:57:23 +0300 Subject: [PATCH 149/557] Added the profile for checking the real value closest to zero (PDF/A-2) --- .../verapdf-profile-6-1-13-t02.xml | 2 +- .../verapdf-profile-6-1-13-t05.xml | 21 ++++++++++++++++ PDF_A/PDFA-2B.xml | 25 ++++++++++++++++++- PDF_A/PDFA-3B.xml | 25 ++++++++++++++++++- 4 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml index dde5efc4..51fab93c 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.1.12 Implementation limits - Real + ISO 19005-2:2011 - 6.1.12 Implementation limits - Real (max) A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml new file mode 100644 index 00000000..bf889c2b --- /dev/null +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.1.12 Implementation limits - Real (min) + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). +
+ + + + + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) + + Non-zero real value is too close to 0.0 + + + + + + +
diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index f0f4ead1..26da301f 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011
@@ -226,6 +226,16 @@ + + + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) + + Non-zero real value is too close to 0.0 + + + + A conforming file shall not contain more than 8388607 indirect objects @@ -288,6 +298,19 @@ + + + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + isInherited == false + + A content stream references a named resource that is not defined in an explicitly associated Resources dictionary + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 679d56fc..ecfa0e08 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012
@@ -226,6 +226,16 @@ + + + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) + + Non-zero real value is too close to 0.0 + + + + A conforming file shall not contain more than 8388607 indirect objects @@ -288,6 +298,19 @@ + + + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + isInherited == false + + A content stream references a named resource that is not defined in an explicitly associated Resources dictionary + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile From 5c993bdaaa5f34d6b6f3f6ce333e4e9e7fa9dd30 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 25 Mar 2016 12:51:18 +0300 Subject: [PATCH 150/557] Prototype markdown for a WIKI --- PDF_A/PDF-1A.md | 1527 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1527 insertions(+) create mode 100644 PDF_A/PDF-1A.md diff --git a/PDF_A/PDF-1A.md b/PDF_A/PDF-1A.md new file mode 100644 index 00000000..0d28b994 --- /dev/null +++ b/PDF_A/PDF-1A.md @@ -0,0 +1,1527 @@ +# PDF/A-1A validation profile +## Rule 6.1.2-1 + +### Description + +The % character of the file header shall occur at byte offset 0 of the file. + The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + +### Error details + +File header does not start at byte offset 0 or does not correctly identify the version of the PDF document + +* Object type: `CosDocument` +* Test condition: `headerOffset == 0 && /%PDF-\d\.\d/.test(header)` +* Specification: ISO_19005_1 + +## Rule 6.1.2-2 + +### Description + +The file header line shall be immediately followed by a comment consisting of a % character followed by at + least four characters, each of whose encoded byte values shall have a decimal value greater than 127 + +### Error details + +Binary comment in the file header is missing or does not comply PDF/A requirements + +* Object type: `CosDocument` +* Test condition: `headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127` +* Specification: ISO_19005_1 + +## Rule 6.1.3-1 + +### Description + +The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, + as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + +### Error details + +Missing ID in the document trailer + +* Object type: `CosDocument` +* Test condition: `(isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null)` +* Specification: ISO_19005_1 + +## Rule 6.1.3-2 + +### Description + +The keyword Encrypt shall not be used in the trailer dictionary + +### Error details + +Encrypt keyword is present in the trailer dictionary + +* Object type: `CosTrailer` +* Test condition: `isEncrypted != true` +* Specification: ISO_19005_1 + +## Rule 6.1.3-3 + +### Description + +No data shall follow the last end-of-file marker except a single optional end-of-line marker. + +### Error details + +Data is present after the last end-of-file marker + +* Object type: `CosDocument` +* Test condition: `postEOFDataSize == 0` +* Specification: ISO_19005_1 + +## Rule 6.1.3-4 + +### Description + +In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + +### Error details + +Last ID is present in the Linearized PDF and does not match the first page ID + +* Object type: `CosDocument` +* Test condition: `(isLinearized != true)|| lastID == null || (firstPageID == lastID)` +* Specification: ISO_19005_1 + +## Rule 6.1.4-1 + +### Description + +In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) + +### Error details + +Spacings of subsection headers in the cross reference table do not comply PDF/A specification + +* Object type: `CosXRef` +* Test condition: `subsectionHeaderSpaceSeparated == true` +* Specification: ISO_19005_1 + +## Rule 6.1.4-2 + +### Description + +The xref keyword and the cross reference subsection header shall be separated by a single EOL marker + +### Error details + +Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + +* Object type: `CosXRef` +* Test condition: `xrefEOLMarkersComplyPDFA` +* Specification: ISO_19005_1 + +## Rule 6.1.6-1 + +### Description + +Hexadecimal strings shall contain an even number of non-white-space characters + +### Error details + +Hexadecimal string contains odd number of non-white-space characters + +* Object type: `CosString` +* Test condition: `(isHex != true) || hexCount % 2 == 0` +* Specification: ISO_19005_1 + +## Rule 6.1.6-2 + +### Description + +All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f + +### Error details + +Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + +* Object type: `CosString` +* Test condition: `(isHex != true) || containsOnlyHex` +* Specification: ISO_19005_1 + +## Rule 6.1.7-1 + +### Description + +The value of the Length key specified in the stream dictionary shall match the number of bytes in the file + following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword + +### Error details + +Actual length of the stream does not match the value of the Length key in the Stream dictionary + +* Object type: `CosStream` +* Test condition: `isLengthCorrect` +* Specification: ISO_19005_1 + +## Rule 6.1.7-2 + +### Description + +The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence + or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + +### Error details + +Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + +* Object type: `CosStream` +* Test condition: `streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true` +* Specification: ISO_19005_1 + +## Rule 6.1.7-3 + +### Description + +A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys + +### Error details + +A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + +* Object type: `CosStream` +* Test condition: `F == null && FFilter == null && FDecodeParms == null` +* Specification: ISO_19005_1 + +## Rule 6.1.8-1 + +### Description + +The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + +### Error details + +Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + +* Object type: `CosIndirect` +* Test condition: `spacingCompliesPDFA` +* Specification: ISO_19005_1 + +## Rule 6.1.10-1 + +### Description + +The LZWDecode filter shall not be permitted + +### Error details + +LZW compression is used + +* Object type: `CosFilter` +* Test condition: `internalRepresentation != "LZWDecode"` +* Specification: ISO_19005_1 + +## Rule 6.1.10-2 + +### Description + +The LZWDecode filter shall not be permitted + +### Error details + +LZW compression is used in the inline image + +* Object type: `CosIIFilter` +* Test condition: `internalRepresentation != "LZWDecode" && internalRepresentation != "LZW"` +* Specification: ISO_19005_1 + +## Rule 6.1.11-1 + +### Description + +A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key + +### Error details + +A file specification dictionary contains the EF key + +* Object type: `CosFileSpecification` +* Test condition: `EF_size == 0` +* Specification: ISO_19005_1 + +## Rule 6.1.11-2 + +### Description + +A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key + +### Error details + +The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) + +* Object type: `CosDocument` +* Test condition: `EmbeddedFiles_size == 0` +* Specification: ISO_19005_1 + +## Rule 6.1.12-1 + +### Description + +Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 + +### Error details + +Integer value out of range + +* Object type: `CosInteger` +* Test condition: `(intValue <= 2147483647) && (intValue >= -2147483648)` +* Specification: ISO_19005_1 + +## Rule 6.1.12-2 + +### Description + +Absolute real value must be less than or equal to 32767.0 + +### Error details + +Real value out of range + +* Object type: `CosReal` +* Test condition: `(realValue >= -32767.0) && (realValue <= 32767.0)` +* Specification: ISO_19005_1 + +## Rule 6.1.12-3 + +### Description + +Maximum length of a string (in bytes) is 65535 + +### Error details + +Maximum length of a String (65535) exceeded + +* Object type: `CosString` +* Test condition: `value.length() < 65536` +* Specification: ISO_19005_1 + +## Rule 6.1.12-4 + +### Description + +Maximum length of a name (in bytes) is 127 + +### Error details + +Maximum length of a Name (127) exceeded + +* Object type: `CosName` +* Test condition: `internalRepresentation.length() <= 127` +* Specification: ISO_19005_1 + +## Rule 6.1.12-5 + +### Description + +Maximum capacity of an array (in elements) is 8191 + +### Error details + +Maximum capacity of an array (8191) exceeded + +* Object type: `CosArray` +* Test condition: `size <= 8191` +* Specification: ISO_19005_1 + +## Rule 6.1.12-6 + +### Description + +Maximum capacity of a dictionary (in entries) is 4095 + +### Error details + +Maximum capacity of a dictionary (4095) exceeded + +* Object type: `CosDict` +* Test condition: `size <= 4095` +* Specification: ISO_19005_1 + +## Rule 6.1.12-7 + +### Description + +Maximum number of indirect objects in a PDF file is 8,388,607 + +### Error details + +Maximum number of indirect objects (8,388,607) in a PDF file exceeded + +* Object type: `CosDocument` +* Test condition: `nrIndirects <= 8388607` +* Specification: ISO_19005_1 + +## Rule 6.1.12-8 + +### Description + +Maximum depth of graphics state nesting by q and Q operators is 28 + +### Error details + +Maximum depth of graphics state nesting (q and Q operators) is exceeded + +* Object type: `Op_q_gsave` +* Test condition: `nestingLevel <= 28` +* Specification: ISO_19005_1 + +## Rule 6.1.12-9 + +### Description + +Maximum number of DeviceN components is 8 + +### Error details + +Maximum number of DeviceN components is exceeded + +* Object type: `PDDeviceN` +* Test condition: `nrComponents <= 8` +* Specification: ISO_19005_1 + +## Rule 6.1.12-10 + +### Description + +Maximum value of a CID (character identifier) is 65,535 + +### Error details + +Maximum value of a CID (65,535) is exceeded + +* Object type: `CIDGlyph` +* Test condition: `CID <= 65535` +* Specification: ISO_19005_1 + +## Rule 6.1.13-1 + +### Description + +The document catalog dictionary shall not contain a key with the name OCProperties + +### Error details + +The document catalog dictionary contains the OCProperties entry + +* Object type: `CosDocument` +* Test condition: `isOptionalContentPresent == false` +* Specification: ISO_19005_1 + +## Rule 6.2.2-1 + +### Description + +A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key + +### Error details + +The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information + +* Object type: `ICCOutputProfile` +* Test condition: `(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0` +* Specification: ISO_19005_1 + +## Rule 6.2.2-2 + +### Description + +If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile + key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream + +### Error details + +File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + +* Object type: `PDOutputIntent` +* Test condition: `destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect` +* Specification: ISO_19005_1 + +## Rule 6.2.3-1 + +### Description + +All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 + +### Error details + +The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements + +* Object type: `ICCInputProfile` +* Test condition: `(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0` +* Specification: ISO_19005_1 + +## Rule 6.2.3-2 + +### Description + +DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space + +### Error details + +DeviceRGB colour space is used without RGB output intent profile + +* Object type: `PDDeviceRGB` +* Test condition: `gOutputCS != null && gOutputCS == "RGB "` +* Specification: ISO_19005_1 + +## Rule 6.2.3-3 + +### Description + +DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space + +### Error details + +DeviceCMYK colour space is used without CMYK output intent profile + +* Object type: `PDDeviceCMYK` +* Test condition: `gOutputCS != null && gOutputCS == "CMYK"` +* Specification: ISO_19005_1 + +## Rule 6.2.3-4 + +### Description + +If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 + +### Error details + +DeviceGray colour space is used without output intent profile + +* Object type: `PDDeviceGray` +* Test condition: `gOutputCS != null` +* Specification: ISO_19005_1 + +## Rule 6.2.3-5 + +### Description + +All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + +### Error details + +The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile + +* Object type: `ICCProfile` +* Test condition: `N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK"))` +* Specification: ISO_19005_1 + +## Rule 6.2.4-1 + +### Description + +An Image dictionary shall not contain the Alternates key + +### Error details + +Alternates key is present in the Image dictionary( + +* Object type: `PDXImage` +* Test condition: `Alternates_size == 0` +* Specification: ISO_19005_1 + +## Rule 6.2.4-2 + +### Description + +An XObject dictionary (Image or Form) shall not contain the OPI key + +### Error details + +OPI key is present in the XObject dictionary( + +* Object type: `PDXObject` +* Test condition: `OPI_size == 0` +* Specification: ISO_19005_1 + +## Rule 6.2.4-3 + +### Description + +If an Image dictionary contains the Interpolate key, its value shall be false + +### Error details + +The value of the Interpolate key in the Image dictionary is true + +* Object type: `PDXImage` +* Test condition: `Interpolate == false` +* Specification: ISO_19005_1 + +## Rule 6.2.5-1 + +### Description + +A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key + +### Error details + +The form XObject dictionary contains a PS key or Subtype2 key with value PS + +* Object type: `PDXForm` +* Test condition: `(Subtype2 == null || Subtype2 != "PS") && PS_size == 0` +* Specification: ISO_19005_1 + +## Rule 6.2.6-1 + +### Description + +A conforming file shall not contain any reference XObjects + +### Error details + +The document contains a reference XObject (Ref key in the form XObject dictionary) + +* Object type: `PDXForm` +* Test condition: `Ref_size == 0` +* Specification: ISO_19005_1 + +## Rule 6.2.7-1 + +### Description + +A conforming file shall not contain any PostScript XObjects + +### Error details + +The document contains a PostScript XObject + +* Object type: `PDXObject` +* Test condition: `Subtype != "PS"` +* Specification: ISO_19005_1 + +## Rule 6.2.8-1 + +### Description + +An ExtGState dictionary shall not contain the TR key + +### Error details + +An ExtGState dictionary contains the TR key + +* Object type: `PDExtGState` +* Test condition: `TR == null` +* Specification: ISO_19005_1 + +## Rule 6.2.8-2 + +### Description + +An ExtGState dictionary shall not contain the TR2 key with a value other than Default + +### Error details + +An ExtGState dictionary contains the TR2 key with a value other than Default + +* Object type: `PDExtGState` +* Test condition: `TR2 == null || TR2 == "Default"` +* Specification: ISO_19005_1 + +## Rule 6.2.9-1 + +### Description + +Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference + RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + +### Error details + +A rendering intent with non-standard value is used + +* Object type: `CosRenderingIntent` +* Test condition: `internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"` +* Specification: ISO_19005_1 + +## Rule 6.2.10-1 + +### Description + +A content stream shall not contain any operators not defined in PDF Reference + even if such operators are bracketed by the BX/EX compatibility operators + +### Error details + +A content stream contains an operator not defined in PDF Reference + +* Object type: `Op_Undefined` +* Test condition: `false` +* Specification: ISO_19005_1 + +## Rule 6.3.2-1 + +### Description + +All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + +### Error details + +A Font dictionary has missing or invalid Type entry + +* Object type: `PDFont` +* Test condition: `Type == "Font"` +* Specification: ISO_19005_1 + +## Rule 6.3.2-2 + +### Description + +All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + +### Error details + +A Font dictionary has missing or invalid Subtype entry + +* Object type: `PDFont` +* Test condition: `Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"` +* Specification: ISO_19005_1 + +## Rule 6.3.2-3 + +### Description + +All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + BaseFont - name - (Required) The PostScript name of the font + +### Error details + +A BaseFont entry is missing or has invalid type + +* Object type: `PDFont` +* Test condition: `Subtype == "Type3" || fontName != null` +* Specification: ISO_19005_1 + +## Rule 6.3.2-4 + +### Description + +All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + +### Error details + +A non-standard simple font dictionary has missing or invalid FirstChar entry + +* Object type: `PDSimpleFont` +* Test condition: `isStandard == true || FirstChar != null` +* Specification: ISO_19005_1 + +## Rule 6.3.2-5 + +### Description + +All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + +### Error details + +A non-standard simple font dictionary has missing or invalid LastChar entry + +* Object type: `PDSimpleFont` +* Test condition: `isStandard == true || LastChar != null` +* Specification: ISO_19005_1 + +## Rule 6.3.2-6 + +### Description + +All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + +### Error details + +Widths array is missing or has invalid size + +* Object type: `PDSimpleFont` +* Test condition: `isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)` +* Specification: ISO_19005_1 + +## Rule 6.3.3-1 + +### Description + +For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + CIDFont and CMap dictionaries shall be compatible + +### Error details + +Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + +* Object type: `PDType0Font` +* Test condition: `areRegistryOrderingCompatible == true` +* Specification: ISO_19005_1 + +## Rule 6.3.3-2 + +### Description + +For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 + +### Error details + +A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + +* Object type: `PDCIDFont` +* Test condition: `Subtype != "CIDFontType2" || CIDToGIDMap != null` +* Specification: ISO_19005_1 + +## Rule 6.3.3-3 + +### Description + +All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 + +### Error details + +A CMap is different from "Identity-H" or "Identity-V" and is not embedded + +* Object type: `PDCMap` +* Test condition: `CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1` +* Specification: ISO_19005_1 + +## Rule 6.3.3-4 + +### Description + +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 + +* Object type: `CMapFile` +* Test condition: `WMode == dictWMode` +* Specification: ISO_19005_1 + +## Rule 6.3.4-1 + +### Description + +The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3 + +### Error details + +The font program is not embedded + +* Object type: `PDFont` +* Test condition: `Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1` +* Specification: ISO_19005_1 + +## Rule 6.3.5-1 + +### Description + +Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + +### Error details + +Not all glyphs referenced for rendering are present in the embedded font program + +* Object type: `Glyph` +* Test condition: `isGlyphPresent == true` +* Specification: ISO_19005_1 + +## Rule 6.3.5-2 + +### Description + +For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string + listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + +### Error details + +A Type1 font subset does not define CharSet entry in its Descriptor dictionary + +* Object type: `PDType1Font` +* Test condition: `fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null` +* Specification: ISO_19005_1 + +## Rule 6.3.5-3 + +### Description + +For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a + CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + +### Error details + +A CID Font subset does not define CIDSet entry in its Descriptor dictionary + +* Object type: `PDCIDFont` +* Test condition: `fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1` +* Specification: ISO_19005_1 + +## Rule 6.3.6-1 + +### Description + +For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the + font dictionary and in the embedded font program shall be consistent + +### Error details + +Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + +* Object type: `Glyph` +* Test condition: `isWidthConsistent == true` +* Specification: ISO_19005_1 + +## Rule 6.3.7-1 + +### Description + +All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary + or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + +### Error details + +A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding + +* Object type: `PDTrueTypeFont` +* Test condition: `isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding")` +* Specification: ISO_19005_1 + +## Rule 6.3.7-2 + +### Description + +All symbolic TrueType fonts shall not specify 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: ISO_19005_1 + +## Rule 6.3.7-3 + +### Description + +Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + +### Error details + +The embedded font program for a symbolic TrueType font contains more than one cmap subtable + +* Object type: `TrueTypeFontProgram` +* Test condition: `isSymbolic == false || nrCmaps == 1` +* Specification: ISO_19005_1 + +## Rule 6.4-1 + +### Description + +If an SMask key appears in an ExtGState dictionary, its value shall be None + +### Error details + +An ExtGState contains SMask key with a value other than None + +* Object type: `PDExtGState` +* Test condition: `SMask == null || SMask == "None"` +* Specification: ISO_19005_1 + +## Rule 6.4-2 + +### Description + +An XObject dictionary shall not contain the SMask key + +### Error details + +An XObject contains an SMask key + +* Object type: `PDXObject` +* Test condition: `SMask_size == 0` +* Specification: ISO_19005_1 + +## Rule 6.4-3 + +### Description + +A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a page dictionary + +### Error details + +A transparency group is present in a form XObject or page dictionary + +* Object type: `PDGroup` +* Test condition: `S != "Transparency"` +* Specification: ISO_19005_1 + +## Rule 6.4-4 + +### Description + +The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible + +### Error details + +An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible + +* Object type: `PDExtGState` +* Test condition: `BM == null || BM == "Normal" || BM == "Compatible"` +* Specification: ISO_19005_1 + +## Rule 6.4-5 + +### Description + +The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 + +### Error details + +An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 + +* Object type: `PDExtGState` +* Test condition: `CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001` +* Specification: ISO_19005_1 + +## Rule 6.4-6 + +### Description + +The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0 + +### Error details + +An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 + +* Object type: `PDExtGState` +* Test condition: `ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001` +* Specification: ISO_19005_1 + +## Rule 6.5.2-1 + +### Description + +Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Sound and Movie types shall not be permitted + +### Error details + +Unknown or not permitted annotation type + +* Object type: `PDAnnot` +* Test condition: `Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || + Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || + Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet"` +* Specification: ISO_19005_1 + +## Rule 6.5.3-1 + +### Description + +An annotation dictionary shall not contain the CA key with a value other than 1.0 + +### Error details + +An annotation dictionary contains the CA key with value other than 1.0 + +* Object type: `PDAnnot` +* Test condition: `CA == null || CA == 1.0` +* Specification: ISO_19005_1 + +## Rule 6.5.3-2 + +### Description + +An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, + Invisible and NoView flag bits shall be set to 0 + +### Error details + +Annotation flags are either missing or have forbidden values + +* Object type: `PDAnnot` +* Test condition: `F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0` +* Specification: ISO_19005_1 + +## Rule 6.5.3-3 + +### Description + +An annotation dictionary shall not contain the C array or the IC array unless the colour space of the + DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + +### Error details + +Annotation's color or interior color is used without specifying RGB-based destination output profile + +* Object type: `PDAnnot` +* Test condition: `(C_size == 0 && IC_size == 0) || gOutputCS == "RGB "` +* Specification: ISO_19005_1 + +## Rule 6.5.3-4 + +### Description + +For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + subdictionary; otherwise the value of the N key shall be an appearance stream. + +### Error details + +Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + +* Object type: `PDAnnot` +* Test condition: `AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) )` +* Specification: ISO_19005_1 + +## Rule 6.6.1-1 + +### Description + +The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + +### Error details + +Unknown or not permitted action type + +* Object type: `PDAction` +* Test condition: `S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"` +* Specification: ISO_19005_1 + +## Rule 6.6.1-2 + +### Description + +Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + +### Error details + +Unknown or not permitted action type + +* Object type: `PDNamedAction` +* Test condition: `N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"` +* Specification: ISO_19005_1 + +## Rule 6.6.1-3 + +### Description + +Interactive form fields shall not perform actions of any type + +### Error details + +Interactive form field contains an action object ('A' key) + +* Object type: `PDAnnot` +* Test condition: `Subtype != "Widget" || A_size == 0` +* Specification: ISO_19005_1 + +## Rule 6.6.2-1 + +### Description + +A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary + +### Error details + +A Widget annotation contains an additional-actions dictionary (AA entry) + +* Object type: `PDAnnot` +* Test condition: `Subtype != "Widget" || AA_size == 0` +* Specification: ISO_19005_1 + +## Rule 6.6.2-2 + +### Description + +A Field dictionary shall not include an AA entry for an additional-actions dictionary + +### Error details + +A Field dictionary contains an additional-actions dictionary (AA entry) + +* Object type: `PDFormField` +* Test condition: `AA_size == 0` +* Specification: ISO_19005_1 + +## Rule 6.6.2-3 + +### Description + +The document catalog dictionary shall not include an AA entry for an additional-actions dictionary + +### Error details + +The document catalog dictionary contains an additional-actions dictionary (AA entry) + +* Object type: `PDDocument` +* Test condition: `AA_size == 0` +* Specification: ISO_19005_1 + +## Rule 6.7.2-1 + +### Description + +The document catalog dictionary of a conforming file shall contain the Metadata key. + +### Error details + +The document catalog dictionary doesn't contain metadata key. + +* Object type: `PDDocument` +* Test condition: `metadata_size == 1` +* Specification: ISO_19005_1 + +## Rule 6.7.2-2 + +### Description + +Metadata object stream dictionaries shall not contain the Filter key. + +### Error details + +The metadata object stream dictionary contains the Filter key. + +* Object type: `PDMetadata` +* Test condition: `Filter == null` +* Specification: ISO_19005_1 + +## Rule 6.7.3-1 + +### Description + +If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + +### Error details + +Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. + +* Object type: `CosDocument` +* Test condition: `doesInfoMatchXMP` +* Specification: ISO_19005_1 + +## Rule 6.7.5-1 + +### Description + +The bytes attribute shall not be used in the header of an XMP packet. + +### Error details + +The XMP Package contains bytes attribute. + +* Object type: `XMPPackage` +* Test condition: `bytes == null` +* Specification: ISO_19005_1 + +## Rule 6.7.5-2 + +### Description + +The encoding attribute shall not be used in the header of an XMP packet. + +### Error details + +The XMP Package contains encoding attribute. + +* Object type: `XMPPackage` +* Test condition: `encoding == null` +* Specification: ISO_19005_1 + +## Rule 6.7.8-1 + +### Description + +Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. + +### Error details + +An extension schema object contains fields not defined by the specification + +* Object type: `ExtensionSchemaObject` +* Test condition: `containsUndefinedFields == false` +* Specification: ISO_19005_1 + +## Rule 6.7.8-2 + +### Description + +The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + +### Error details + +Invalid syntax of the extension schema container + +* Object type: `ExtensionSchemasContainer` +* Test condition: `isValidBag == true && prefix == "pdfaExtension"` +* Specification: ISO_19005_1 + +## Rule 6.7.8-3 + +### Description + +The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + +### Error details + +Invalid Extension Schema definition + +* Object type: `ExtensionSchemaDefinition` +* Test condition: `(isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && + (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && + (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") )` +* Specification: ISO_19005_1 + +## Rule 6.7.8-4 + +### Description + +The Property type defined is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). + +### Error details + +Invalid extension schema Property type definition + +* Object type: `ExtensionSchemaProperty` +* Test condition: `(isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && + (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" )` +* Specification: ISO_19005_1 + +## Rule 6.7.8-5 + +### Description + +The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + +### Error details + +Invalid extension schema ValueType type definition + +* Object type: `ExtensionSchemaValueType` +* Test condition: `(isTypeValidText == true && typePrefix == "pdfaType" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isFieldValidSeq == true && fieldPrefix == "pdfaType")` +* Specification: ISO_19005_1 + +## Rule 6.7.8-6 + +### Description + +The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + +### Error details + +Invalid extension schema Field type definition + +* Object type: `ExtensionSchemaField` +* Test condition: `(isNameValidText == true && namePrefix == "pdfaField" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaField" )` +* Specification: ISO_19005_1 + +## Rule 6.7.9-1 + +### Description + +The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions + +### Error details + +%1 + +* Object type: `XMPPackage` +* Test condition: `isSerializationValid` +* Specification: ISO_19005_1 + +## Rule 6.7.9-2 + +### Description + +Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + or extension schemas that comply with XMP Specification + +### Error details + +%1 + +* Object type: `XMPProperty` +* Test condition: `(isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true` +* Specification: ISO_19005_1 + +## Rule 6.7.11-1 + +### Description + +The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + +### Error details + +The document metadata stream doesn't contains PDF/A Identification Schema. + +* Object type: `MainXMPPackage` +* Test condition: `Identification_size == 1` +* Specification: ISO_19005_1 + +## Rule 6.7.11-2 + +### Description + +The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + +### Error details + +The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file. + +* Object type: `PDFAIdentification` +* Test condition: `part == 1` +* Specification: ISO_19005_1 + +## Rule 6.7.11-3 + +### Description + +A Level A conforming file shall specify the value of pdfaid:conformance as A. + +### Error details + +The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file. + +* Object type: `PDFAIdentification` +* Test condition: `conformance == "A"` +* Specification: ISO_19005_1 + +## Rule 6.7.11-4 + +### Description + +The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + +### Error details + +A property of the PDF/A Identification Schema has an invalid namespace prefix + +* Object type: `PDFAIdentification` +* Test condition: `partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && + (amdPrefix == null || amdPrefix == "pdfaid")` +* Specification: ISO_19005_1 + +## Rule 6.8.2-1 + +### Description + +The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true + +### Error details + +/Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false + +* Object type: `CosDocument` +* Test condition: `Marked == true` +* Specification: ISO_19005_1 + +## Rule 6.8.3-1 + +### Description + +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 PDF Reference 9.6 + +### Error details + +StructTreeRoot entry is not present in the document catalog + +* Object type: `PDDocument` +* Test condition: `StructTreeRoot_size == 1` +* Specification: ISO_19005_1 + +## Rule 6.8.3-2 + +### Description + +Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem + +### Error details + +Missing or invalid Type entry in the structure element dictionary + +* Object type: `PDStructElem` +* Test condition: `Type == "StructElem"` +* Specification: ISO_19005_1 + +## Rule 6.9-1 + +### Description + +The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false + +### Error details + +The interactive form dictionary contains the NeedAppearances flag with value true + +* Object type: `PDAcroForm` +* Test condition: `NeedAppearances == null || NeedAppearances == false` +* Specification: ISO_19005_1 + +## Rule 6.9-2 + +### Description + +A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + +### Error details + +A Widget annotation contains either A or AA entry + +* Object type: `PDAnnot` +* Test condition: `Subtype != "Widget" || (A_size == 0 && AA_size == 0)` +* Specification: ISO_19005_1 + +## Rule 6.9-3 + +### Description + +A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + +### Error details + +A Form field dictionary contains the AA entry + +* Object type: `PDFormField` +* Test condition: `AA_size == 0` +* Specification: ISO_19005_1 + From 0a439f5d6e843ee836ad3a4006c497c8890dd9ec Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 25 Mar 2016 14:34:20 +0300 Subject: [PATCH 151/557] Moved the documentation to wiki --- PDF_A/PDF-1A.md | 1527 ----------------------------------------------- 1 file changed, 1527 deletions(-) delete mode 100644 PDF_A/PDF-1A.md diff --git a/PDF_A/PDF-1A.md b/PDF_A/PDF-1A.md deleted file mode 100644 index 0d28b994..00000000 --- a/PDF_A/PDF-1A.md +++ /dev/null @@ -1,1527 +0,0 @@ -# PDF/A-1A validation profile -## Rule 6.1.2-1 - -### Description - -The % character of the file header shall occur at byte offset 0 of the file. - The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms - -### Error details - -File header does not start at byte offset 0 or does not correctly identify the version of the PDF document - -* Object type: `CosDocument` -* Test condition: `headerOffset == 0 && /%PDF-\d\.\d/.test(header)` -* Specification: ISO_19005_1 - -## Rule 6.1.2-2 - -### Description - -The file header line shall be immediately followed by a comment consisting of a % character followed by at - least four characters, each of whose encoded byte values shall have a decimal value greater than 127 - -### Error details - -Binary comment in the file header is missing or does not comply PDF/A requirements - -* Object type: `CosDocument` -* Test condition: `headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127` -* Specification: ISO_19005_1 - -## Rule 6.1.3-1 - -### Description - -The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, - as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 - -### Error details - -Missing ID in the document trailer - -* Object type: `CosDocument` -* Test condition: `(isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null)` -* Specification: ISO_19005_1 - -## Rule 6.1.3-2 - -### Description - -The keyword Encrypt shall not be used in the trailer dictionary - -### Error details - -Encrypt keyword is present in the trailer dictionary - -* Object type: `CosTrailer` -* Test condition: `isEncrypted != true` -* Specification: ISO_19005_1 - -## Rule 6.1.3-3 - -### Description - -No data shall follow the last end-of-file marker except a single optional end-of-line marker. - -### Error details - -Data is present after the last end-of-file marker - -* Object type: `CosDocument` -* Test condition: `postEOFDataSize == 0` -* Specification: ISO_19005_1 - -## Rule 6.1.3-4 - -### Description - -In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - -### Error details - -Last ID is present in the Linearized PDF and does not match the first page ID - -* Object type: `CosDocument` -* Test condition: `(isLinearized != true)|| lastID == null || (firstPageID == lastID)` -* Specification: ISO_19005_1 - -## Rule 6.1.4-1 - -### Description - -In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) - -### Error details - -Spacings of subsection headers in the cross reference table do not comply PDF/A specification - -* Object type: `CosXRef` -* Test condition: `subsectionHeaderSpaceSeparated == true` -* Specification: ISO_19005_1 - -## Rule 6.1.4-2 - -### Description - -The xref keyword and the cross reference subsection header shall be separated by a single EOL marker - -### Error details - -Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification - -* Object type: `CosXRef` -* Test condition: `xrefEOLMarkersComplyPDFA` -* Specification: ISO_19005_1 - -## Rule 6.1.6-1 - -### Description - -Hexadecimal strings shall contain an even number of non-white-space characters - -### Error details - -Hexadecimal string contains odd number of non-white-space characters - -* Object type: `CosString` -* Test condition: `(isHex != true) || hexCount % 2 == 0` -* Specification: ISO_19005_1 - -## Rule 6.1.6-2 - -### Description - -All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - -### Error details - -Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f - -* Object type: `CosString` -* Test condition: `(isHex != true) || containsOnlyHex` -* Specification: ISO_19005_1 - -## Rule 6.1.7-1 - -### Description - -The value of the Length key specified in the stream dictionary shall match the number of bytes in the file - following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword - -### Error details - -Actual length of the stream does not match the value of the Length key in the Stream dictionary - -* Object type: `CosStream` -* Test condition: `isLengthCorrect` -* Specification: ISO_19005_1 - -## Rule 6.1.7-2 - -### Description - -The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker - -### Error details - -Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification - -* Object type: `CosStream` -* Test condition: `streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true` -* Specification: ISO_19005_1 - -## Rule 6.1.7-3 - -### Description - -A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys - -### Error details - -A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - -* Object type: `CosStream` -* Test condition: `F == null && FFilter == null && FDecodeParms == null` -* Specification: ISO_19005_1 - -## Rule 6.1.8-1 - -### Description - -The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword - shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. - -### Error details - -Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification - -* Object type: `CosIndirect` -* Test condition: `spacingCompliesPDFA` -* Specification: ISO_19005_1 - -## Rule 6.1.10-1 - -### Description - -The LZWDecode filter shall not be permitted - -### Error details - -LZW compression is used - -* Object type: `CosFilter` -* Test condition: `internalRepresentation != "LZWDecode"` -* Specification: ISO_19005_1 - -## Rule 6.1.10-2 - -### Description - -The LZWDecode filter shall not be permitted - -### Error details - -LZW compression is used in the inline image - -* Object type: `CosIIFilter` -* Test condition: `internalRepresentation != "LZWDecode" && internalRepresentation != "LZW"` -* Specification: ISO_19005_1 - -## Rule 6.1.11-1 - -### Description - -A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - -### Error details - -A file specification dictionary contains the EF key - -* Object type: `CosFileSpecification` -* Test condition: `EF_size == 0` -* Specification: ISO_19005_1 - -## Rule 6.1.11-2 - -### Description - -A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - -### Error details - -The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) - -* Object type: `CosDocument` -* Test condition: `EmbeddedFiles_size == 0` -* Specification: ISO_19005_1 - -## Rule 6.1.12-1 - -### Description - -Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 - -### Error details - -Integer value out of range - -* Object type: `CosInteger` -* Test condition: `(intValue <= 2147483647) && (intValue >= -2147483648)` -* Specification: ISO_19005_1 - -## Rule 6.1.12-2 - -### Description - -Absolute real value must be less than or equal to 32767.0 - -### Error details - -Real value out of range - -* Object type: `CosReal` -* Test condition: `(realValue >= -32767.0) && (realValue <= 32767.0)` -* Specification: ISO_19005_1 - -## Rule 6.1.12-3 - -### Description - -Maximum length of a string (in bytes) is 65535 - -### Error details - -Maximum length of a String (65535) exceeded - -* Object type: `CosString` -* Test condition: `value.length() < 65536` -* Specification: ISO_19005_1 - -## Rule 6.1.12-4 - -### Description - -Maximum length of a name (in bytes) is 127 - -### Error details - -Maximum length of a Name (127) exceeded - -* Object type: `CosName` -* Test condition: `internalRepresentation.length() <= 127` -* Specification: ISO_19005_1 - -## Rule 6.1.12-5 - -### Description - -Maximum capacity of an array (in elements) is 8191 - -### Error details - -Maximum capacity of an array (8191) exceeded - -* Object type: `CosArray` -* Test condition: `size <= 8191` -* Specification: ISO_19005_1 - -## Rule 6.1.12-6 - -### Description - -Maximum capacity of a dictionary (in entries) is 4095 - -### Error details - -Maximum capacity of a dictionary (4095) exceeded - -* Object type: `CosDict` -* Test condition: `size <= 4095` -* Specification: ISO_19005_1 - -## Rule 6.1.12-7 - -### Description - -Maximum number of indirect objects in a PDF file is 8,388,607 - -### Error details - -Maximum number of indirect objects (8,388,607) in a PDF file exceeded - -* Object type: `CosDocument` -* Test condition: `nrIndirects <= 8388607` -* Specification: ISO_19005_1 - -## Rule 6.1.12-8 - -### Description - -Maximum depth of graphics state nesting by q and Q operators is 28 - -### Error details - -Maximum depth of graphics state nesting (q and Q operators) is exceeded - -* Object type: `Op_q_gsave` -* Test condition: `nestingLevel <= 28` -* Specification: ISO_19005_1 - -## Rule 6.1.12-9 - -### Description - -Maximum number of DeviceN components is 8 - -### Error details - -Maximum number of DeviceN components is exceeded - -* Object type: `PDDeviceN` -* Test condition: `nrComponents <= 8` -* Specification: ISO_19005_1 - -## Rule 6.1.12-10 - -### Description - -Maximum value of a CID (character identifier) is 65,535 - -### Error details - -Maximum value of a CID (65,535) is exceeded - -* Object type: `CIDGlyph` -* Test condition: `CID <= 65535` -* Specification: ISO_19005_1 - -## Rule 6.1.13-1 - -### Description - -The document catalog dictionary shall not contain a key with the name OCProperties - -### Error details - -The document catalog dictionary contains the OCProperties entry - -* Object type: `CosDocument` -* Test condition: `isOptionalContentPresent == false` -* Specification: ISO_19005_1 - -## Rule 6.2.2-1 - -### Description - -A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents - array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - -### Error details - -The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information - -* Object type: `ICCOutputProfile` -* Test condition: `(deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0` -* Specification: ISO_19005_1 - -## Rule 6.2.2-2 - -### Description - -If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - -### Error details - -File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - -* Object type: `PDOutputIntent` -* Test condition: `destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect` -* Specification: ISO_19005_1 - -## Rule 6.2.3-1 - -### Description - -All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - -### Error details - -The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements - -* Object type: `ICCInputProfile` -* Test condition: `(deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0` -* Specification: ISO_19005_1 - -## Rule 6.2.3-2 - -### Description - -DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space - -### Error details - -DeviceRGB colour space is used without RGB output intent profile - -* Object type: `PDDeviceRGB` -* Test condition: `gOutputCS != null && gOutputCS == "RGB "` -* Specification: ISO_19005_1 - -## Rule 6.2.3-3 - -### Description - -DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space - -### Error details - -DeviceCMYK colour space is used without CMYK output intent profile - -* Object type: `PDDeviceCMYK` -* Test condition: `gOutputCS != null && gOutputCS == "CMYK"` -* Specification: ISO_19005_1 - -## Rule 6.2.3-4 - -### Description - -If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 - -### Error details - -DeviceGray colour space is used without output intent profile - -* Object type: `PDDeviceGray` -* Test condition: `gOutputCS != null` -* Specification: ISO_19005_1 - -## Rule 6.2.3-5 - -### Description - -All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4 - -### Error details - -The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile - -* Object type: `ICCProfile` -* Test condition: `N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK"))` -* Specification: ISO_19005_1 - -## Rule 6.2.4-1 - -### Description - -An Image dictionary shall not contain the Alternates key - -### Error details - -Alternates key is present in the Image dictionary( - -* Object type: `PDXImage` -* Test condition: `Alternates_size == 0` -* Specification: ISO_19005_1 - -## Rule 6.2.4-2 - -### Description - -An XObject dictionary (Image or Form) shall not contain the OPI key - -### Error details - -OPI key is present in the XObject dictionary( - -* Object type: `PDXObject` -* Test condition: `OPI_size == 0` -* Specification: ISO_19005_1 - -## Rule 6.2.4-3 - -### Description - -If an Image dictionary contains the Interpolate key, its value shall be false - -### Error details - -The value of the Interpolate key in the Image dictionary is true - -* Object type: `PDXImage` -* Test condition: `Interpolate == false` -* Specification: ISO_19005_1 - -## Rule 6.2.5-1 - -### Description - -A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - -### Error details - -The form XObject dictionary contains a PS key or Subtype2 key with value PS - -* Object type: `PDXForm` -* Test condition: `(Subtype2 == null || Subtype2 != "PS") && PS_size == 0` -* Specification: ISO_19005_1 - -## Rule 6.2.6-1 - -### Description - -A conforming file shall not contain any reference XObjects - -### Error details - -The document contains a reference XObject (Ref key in the form XObject dictionary) - -* Object type: `PDXForm` -* Test condition: `Ref_size == 0` -* Specification: ISO_19005_1 - -## Rule 6.2.7-1 - -### Description - -A conforming file shall not contain any PostScript XObjects - -### Error details - -The document contains a PostScript XObject - -* Object type: `PDXObject` -* Test condition: `Subtype != "PS"` -* Specification: ISO_19005_1 - -## Rule 6.2.8-1 - -### Description - -An ExtGState dictionary shall not contain the TR key - -### Error details - -An ExtGState dictionary contains the TR key - -* Object type: `PDExtGState` -* Test condition: `TR == null` -* Specification: ISO_19005_1 - -## Rule 6.2.8-2 - -### Description - -An ExtGState dictionary shall not contain the TR2 key with a value other than Default - -### Error details - -An ExtGState dictionary contains the TR2 key with a value other than Default - -* Object type: `PDExtGState` -* Test condition: `TR2 == null || TR2 == "Default"` -* Specification: ISO_19005_1 - -## Rule 6.2.9-1 - -### Description - -Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - -### Error details - -A rendering intent with non-standard value is used - -* Object type: `CosRenderingIntent` -* Test condition: `internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation"` -* Specification: ISO_19005_1 - -## Rule 6.2.10-1 - -### Description - -A content stream shall not contain any operators not defined in PDF Reference - even if such operators are bracketed by the BX/EX compatibility operators - -### Error details - -A content stream contains an operator not defined in PDF Reference - -* Object type: `Op_Undefined` -* Test condition: `false` -* Specification: ISO_19005_1 - -## Rule 6.3.2-1 - -### Description - -All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - -### Error details - -A Font dictionary has missing or invalid Type entry - -* Object type: `PDFont` -* Test condition: `Type == "Font"` -* Specification: ISO_19005_1 - -## Rule 6.3.2-2 - -### Description - -All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - -### Error details - -A Font dictionary has missing or invalid Subtype entry - -* Object type: `PDFont` -* Test condition: `Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2"` -* Specification: ISO_19005_1 - -## Rule 6.3.2-3 - -### Description - -All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the font - -### Error details - -A BaseFont entry is missing or has invalid type - -* Object type: `PDFont` -* Test condition: `Subtype == "Type3" || fontName != null` -* Specification: ISO_19005_1 - -## Rule 6.3.2-4 - -### Description - -All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - -### Error details - -A non-standard simple font dictionary has missing or invalid FirstChar entry - -* Object type: `PDSimpleFont` -* Test condition: `isStandard == true || FirstChar != null` -* Specification: ISO_19005_1 - -## Rule 6.3.2-5 - -### Description - -All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array - -### Error details - -A non-standard simple font dictionary has missing or invalid LastChar entry - -* Object type: `PDSimpleFont` -* Test condition: `isStandard == true || LastChar != null` -* Specification: ISO_19005_1 - -## Rule 6.3.2-6 - -### Description - -All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths - -### Error details - -Widths array is missing or has invalid size - -* Object type: `PDSimpleFont` -* Test condition: `isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1)` -* Specification: ISO_19005_1 - -## Rule 6.3.3-1 - -### Description - -For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatible - -### Error details - -Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - -* Object type: `PDType0Font` -* Test condition: `areRegistryOrderingCompatible == true` -* Specification: ISO_19005_1 - -## Rule 6.3.3-2 - -### Description - -For all Type 2 CIDFonts, 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 PDF Reference Table 5.13 - -### Error details - -A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - -* Object type: `PDCIDFont` -* Test condition: `Subtype != "CIDFontType2" || CIDToGIDMap != null` -* Specification: ISO_19005_1 - -## Rule 6.3.3-3 - -### Description - -All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 - -### Error details - -A CMap is different from "Identity-H" or "Identity-V" and is not embedded - -* Object type: `PDCMap` -* Test condition: `CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1` -* Specification: ISO_19005_1 - -## Rule 6.3.3-4 - -### Description - -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 - -* Object type: `CMapFile` -* Test condition: `WMode == dictWMode` -* Specification: ISO_19005_1 - -## Rule 6.3.4-1 - -### Description - -The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3 - -### Error details - -The font program is not embedded - -* Object type: `PDFont` -* Test condition: `Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1` -* Specification: ISO_19005_1 - -## Rule 6.3.5-1 - -### Description - -Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - -### Error details - -Not all glyphs referenced for rendering are present in the embedded font program - -* Object type: `Glyph` -* Test condition: `isGlyphPresent == true` -* Specification: ISO_19005_1 - -## Rule 6.3.5-2 - -### Description - -For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - -### Error details - -A Type1 font subset does not define CharSet entry in its Descriptor dictionary - -* Object type: `PDType1Font` -* Test condition: `fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null` -* Specification: ISO_19005_1 - -## Rule 6.3.5-3 - -### Description - -For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - -### Error details - -A CID Font subset does not define CIDSet entry in its Descriptor dictionary - -* Object type: `PDCIDFont` -* Test condition: `fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1` -* Specification: ISO_19005_1 - -## Rule 6.3.6-1 - -### Description - -For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistent - -### Error details - -Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - -* Object type: `Glyph` -* Test condition: `isWidthConsistent == true` -* Specification: ISO_19005_1 - -## Rule 6.3.7-1 - -### Description - -All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - -### Error details - -A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding - -* Object type: `PDTrueTypeFont` -* Test condition: `isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding")` -* Specification: ISO_19005_1 - -## Rule 6.3.7-2 - -### Description - -All symbolic TrueType fonts shall not specify 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: ISO_19005_1 - -## Rule 6.3.7-3 - -### Description - -Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding - -### Error details - -The embedded font program for a symbolic TrueType font contains more than one cmap subtable - -* Object type: `TrueTypeFontProgram` -* Test condition: `isSymbolic == false || nrCmaps == 1` -* Specification: ISO_19005_1 - -## Rule 6.4-1 - -### Description - -If an SMask key appears in an ExtGState dictionary, its value shall be None - -### Error details - -An ExtGState contains SMask key with a value other than None - -* Object type: `PDExtGState` -* Test condition: `SMask == null || SMask == "None"` -* Specification: ISO_19005_1 - -## Rule 6.4-2 - -### Description - -An XObject dictionary shall not contain the SMask key - -### Error details - -An XObject contains an SMask key - -* Object type: `PDXObject` -* Test condition: `SMask_size == 0` -* Specification: ISO_19005_1 - -## Rule 6.4-3 - -### Description - -A Group object with an S key with a value of Transparency shall not be included in a form XObject. - A Group object with an S key with a value of Transparency shall not be included in a page dictionary - -### Error details - -A transparency group is present in a form XObject or page dictionary - -* Object type: `PDGroup` -* Test condition: `S != "Transparency"` -* Specification: ISO_19005_1 - -## Rule 6.4-4 - -### Description - -The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible - -### Error details - -An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible - -* Object type: `PDExtGState` -* Test condition: `BM == null || BM == "Normal" || BM == "Compatible"` -* Specification: ISO_19005_1 - -## Rule 6.4-5 - -### Description - -The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 - -### Error details - -An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 - -* Object type: `PDExtGState` -* Test condition: `CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001` -* Specification: ISO_19005_1 - -## Rule 6.4-6 - -### Description - -The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0 - -### Error details - -An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 - -* Object type: `PDExtGState` -* Test condition: `ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001` -* Specification: ISO_19005_1 - -## Rule 6.5.2-1 - -### Description - -Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, - Sound and Movie types shall not be permitted - -### Error details - -Unknown or not permitted annotation type - -* Object type: `PDAnnot` -* Test condition: `Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet"` -* Specification: ISO_19005_1 - -## Rule 6.5.3-1 - -### Description - -An annotation dictionary shall not contain the CA key with a value other than 1.0 - -### Error details - -An annotation dictionary contains the CA key with value other than 1.0 - -* Object type: `PDAnnot` -* Test condition: `CA == null || CA == 1.0` -* Specification: ISO_19005_1 - -## Rule 6.5.3-2 - -### Description - -An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, - Invisible and NoView flag bits shall be set to 0 - -### Error details - -Annotation flags are either missing or have forbidden values - -* Object type: `PDAnnot` -* Test condition: `F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0` -* Specification: ISO_19005_1 - -## Rule 6.5.3-3 - -### Description - -An annotation dictionary shall not contain the C array or the IC array unless the colour space of the - DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - -### Error details - -Annotation's color or interior color is used without specifying RGB-based destination output profile - -* Object type: `PDAnnot` -* Test condition: `(C_size == 0 && IC_size == 0) || gOutputCS == "RGB "` -* Specification: ISO_19005_1 - -## Rule 6.5.3-4 - -### Description - -For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream. - -### Error details - -Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - -* Object type: `PDAnnot` -* Test condition: `AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) )` -* Specification: ISO_19005_1 - -## Rule 6.6.1-1 - -### Description - -The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) - -### Error details - -Unknown or not permitted action type - -* Object type: `PDAction` -* Test condition: `S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm"` -* Specification: ISO_19005_1 - -## Rule 6.6.1-2 - -### Description - -Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted - -### Error details - -Unknown or not permitted action type - -* Object type: `PDNamedAction` -* Test condition: `N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage"` -* Specification: ISO_19005_1 - -## Rule 6.6.1-3 - -### Description - -Interactive form fields shall not perform actions of any type - -### Error details - -Interactive form field contains an action object ('A' key) - -* Object type: `PDAnnot` -* Test condition: `Subtype != "Widget" || A_size == 0` -* Specification: ISO_19005_1 - -## Rule 6.6.2-1 - -### Description - -A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - -### Error details - -A Widget annotation contains an additional-actions dictionary (AA entry) - -* Object type: `PDAnnot` -* Test condition: `Subtype != "Widget" || AA_size == 0` -* Specification: ISO_19005_1 - -## Rule 6.6.2-2 - -### Description - -A Field dictionary shall not include an AA entry for an additional-actions dictionary - -### Error details - -A Field dictionary contains an additional-actions dictionary (AA entry) - -* Object type: `PDFormField` -* Test condition: `AA_size == 0` -* Specification: ISO_19005_1 - -## Rule 6.6.2-3 - -### Description - -The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - -### Error details - -The document catalog dictionary contains an additional-actions dictionary (AA entry) - -* Object type: `PDDocument` -* Test condition: `AA_size == 0` -* Specification: ISO_19005_1 - -## Rule 6.7.2-1 - -### Description - -The document catalog dictionary of a conforming file shall contain the Metadata key. - -### Error details - -The document catalog dictionary doesn't contain metadata key. - -* Object type: `PDDocument` -* Test condition: `metadata_size == 1` -* Specification: ISO_19005_1 - -## Rule 6.7.2-2 - -### Description - -Metadata object stream dictionaries shall not contain the Filter key. - -### Error details - -The metadata object stream dictionary contains the Filter key. - -* Object type: `PDMetadata` -* Test condition: `Filter == null` -* Specification: ISO_19005_1 - -## Rule 6.7.3-1 - -### Description - -If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. - -### Error details - -Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. - -* Object type: `CosDocument` -* Test condition: `doesInfoMatchXMP` -* Specification: ISO_19005_1 - -## Rule 6.7.5-1 - -### Description - -The bytes attribute shall not be used in the header of an XMP packet. - -### Error details - -The XMP Package contains bytes attribute. - -* Object type: `XMPPackage` -* Test condition: `bytes == null` -* Specification: ISO_19005_1 - -## Rule 6.7.5-2 - -### Description - -The encoding attribute shall not be used in the header of an XMP packet. - -### Error details - -The XMP Package contains encoding attribute. - -* Object type: `XMPPackage` -* Test condition: `encoding == null` -* Specification: ISO_19005_1 - -## Rule 6.7.8-1 - -### Description - -Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. - -### Error details - -An extension schema object contains fields not defined by the specification - -* Object type: `ExtensionSchemaObject` -* Test condition: `containsUndefinedFields == false` -* Specification: ISO_19005_1 - -## Rule 6.7.8-2 - -### Description - -The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". - The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas - -### Error details - -Invalid syntax of the extension schema container - -* Object type: `ExtensionSchemasContainer` -* Test condition: `isValidBag == true && prefix == "pdfaExtension"` -* Specification: ISO_19005_1 - -## Rule 6.7.8-3 - -### Description - -The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - -### Error details - -Invalid Extension Schema definition - -* Object type: `ExtensionSchemaDefinition` -* Test condition: `(isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && - (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && - (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && - (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") )` -* Specification: ISO_19005_1 - -## Rule 6.7.8-4 - -### Description - -The Property type defined is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - -### Error details - -Invalid extension schema Property type definition - -* Object type: `ExtensionSchemaProperty` -* Test condition: `(isNameValidText == true && namePrefix == "pdfaProperty" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && - (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" )` -* Specification: ISO_19005_1 - -## Rule 6.7.8-5 - -### Description - -The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - -### Error details - -Invalid extension schema ValueType type definition - -* Object type: `ExtensionSchemaValueType` -* Test condition: `(isTypeValidText == true && typePrefix == "pdfaType" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && fieldPrefix == "pdfaType")` -* Specification: ISO_19005_1 - -## Rule 6.7.8-6 - -### Description - -The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - -### Error details - -Invalid extension schema Field type definition - -* Object type: `ExtensionSchemaField` -* Test condition: `(isNameValidText == true && namePrefix == "pdfaField" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaField" )` -* Specification: ISO_19005_1 - -## Rule 6.7.9-1 - -### Description - -The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions - -### Error details - -%1 - -* Object type: `XMPPackage` -* Test condition: `isSerializationValid` -* Specification: ISO_19005_1 - -## Rule 6.7.9-2 - -### Description - -Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, - or extension schemas that comply with XMP Specification - -### Error details - -%1 - -* Object type: `XMPProperty` -* Test condition: `(isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true` -* Specification: ISO_19005_1 - -## Rule 6.7.11-1 - -### Description - -The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - -### Error details - -The document metadata stream doesn't contains PDF/A Identification Schema. - -* Object type: `MainXMPPackage` -* Test condition: `Identification_size == 1` -* Specification: ISO_19005_1 - -## Rule 6.7.11-2 - -### Description - -The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. - -### Error details - -The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file. - -* Object type: `PDFAIdentification` -* Test condition: `part == 1` -* Specification: ISO_19005_1 - -## Rule 6.7.11-3 - -### Description - -A Level A conforming file shall specify the value of pdfaid:conformance as A. - -### Error details - -The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file. - -* Object type: `PDFAIdentification` -* Test condition: `conformance == "A"` -* Specification: ISO_19005_1 - -## Rule 6.7.11-4 - -### Description - -The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) - -### Error details - -A property of the PDF/A Identification Schema has an invalid namespace prefix - -* Object type: `PDFAIdentification` -* Test condition: `partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid")` -* Specification: ISO_19005_1 - -## Rule 6.8.2-1 - -### Description - -The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true - -### Error details - -/Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false - -* Object type: `CosDocument` -* Test condition: `Marked == true` -* Specification: ISO_19005_1 - -## Rule 6.8.3-1 - -### Description - -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 PDF Reference 9.6 - -### Error details - -StructTreeRoot entry is not present in the document catalog - -* Object type: `PDDocument` -* Test condition: `StructTreeRoot_size == 1` -* Specification: ISO_19005_1 - -## Rule 6.8.3-2 - -### Description - -Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem - -### Error details - -Missing or invalid Type entry in the structure element dictionary - -* Object type: `PDStructElem` -* Test condition: `Type == "StructElem"` -* Specification: ISO_19005_1 - -## Rule 6.9-1 - -### Description - -The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false - -### Error details - -The interactive form dictionary contains the NeedAppearances flag with value true - -* Object type: `PDAcroForm` -* Test condition: `NeedAppearances == null || NeedAppearances == false` -* Specification: ISO_19005_1 - -## Rule 6.9-2 - -### Description - -A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - -### Error details - -A Widget annotation contains either A or AA entry - -* Object type: `PDAnnot` -* Test condition: `Subtype != "Widget" || (A_size == 0 && AA_size == 0)` -* Specification: ISO_19005_1 - -## Rule 6.9-3 - -### Description - -A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - -### Error details - -A Form field dictionary contains the AA entry - -* Object type: `PDFormField` -* Test condition: `AA_size == 0` -* Specification: ISO_19005_1 - From 99ec68fb4b0d24fec6fee931033a87868d8c6e6f Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 29 Mar 2016 15:40:43 +0300 Subject: [PATCH 152/557] Added the rule for form fields to have an appearance dictionary --- .../verapdf-profile-6-9-t04.xml | 21 +++++++++++++++++++ PDF_A/PDFA-1A.xml | 12 ++++++++++- PDF_A/PDFA-1B.xml | 12 ++++++++++- 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml new file mode 100644 index 00000000..1b1eca95 --- /dev/null +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-1:2005 - 6.9 Interactive Forms - Form field appearance + Every form field shall have an appearance dictionary associated with the field's data. +
+ + + + + Every form field shall have an appearance dictionary associated with the field's data. + Subtype != "Widget" || FT == null || AP != null + + Form field does not have an appearance dictionary associated with the field's data. + + + + + + +
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 8ed40ad7..ce5e4c05 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
@@ -1232,6 +1232,16 @@ + + + Every form field shall have an appearance dictionary associated with the field's data. + Subtype != "Widget" || FT == null || AP != null + + Form field does not have an appearance dictionary associated with the field's data. + + + + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 878cbb0f..8799bcfe 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
@@ -1196,6 +1196,16 @@ + + + Every form field shall have an appearance dictionary associated with the field's data. + Subtype != "Widget" || FT == null || AP != null + + Form field does not have an appearance dictionary associated with the field's data. + + + + From bce6ec5e05d6a0176f5328804281828aa0eae616 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 30 Mar 2016 11:23:23 +0300 Subject: [PATCH 153/557] Adjusted the 6.9-4 rule to require appearance streams for all widget annotations --- PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml | 2 +- PDF_A/PDFA-1A.xml | 4 ++-- PDF_A/PDFA-1B.xml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml index 1b1eca95..10cb069b 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml @@ -9,7 +9,7 @@ Every form field shall have an appearance dictionary associated with the field's data. - Subtype != "Widget" || FT == null || AP != null + Subtype != "Widget" || AP != null Form field does not have an appearance dictionary associated with the field's data. diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index ce5e4c05..5319834f 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
@@ -1235,7 +1235,7 @@ Every form field shall have an appearance dictionary associated with the field's data. - Subtype != "Widget" || FT == null || AP != null + Subtype != "Widget" || AP != null Form field does not have an appearance dictionary associated with the field's data. diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 8799bcfe..6c6b210d 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011
@@ -1199,7 +1199,7 @@ Every form field shall have an appearance dictionary associated with the field's data. - Subtype != "Widget" || FT == null || AP != null + Subtype != "Widget" || AP != null Form field does not have an appearance dictionary associated with the field's data. From 5b8e572659bcc6df4ee42dcd5c3cd87f6bf912e3 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 30 Mar 2016 17:56:49 +0300 Subject: [PATCH 154/557] Fixed JS syntax in Rule 6.9-1 (name of the OC config) --- PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml | 2 +- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml index deecda3f..22e8d2a3 100644 --- a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml @@ -11,7 +11,7 @@ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. - Name != null && Name.length > 0 + Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 26da301f..0bf73006 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011
@@ -1276,7 +1276,7 @@ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. - Name != null && Name.length > 0 + Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index ecfa0e08..039e3ef4 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012
@@ -1287,7 +1287,7 @@ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. - Name != null && Name.length > 0 + Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary From 402ba7bee9d41f34c953e5ae3df1ebc7a7766835 Mon Sep 17 00:00:00 2001 From: Hal Canary Date: Thu, 7 Apr 2016 16:06:56 -0400 Subject: [PATCH 155/557] s/Limunosity/Luminosity/ --- .../6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml index ea2633ca..15c8b5e0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml @@ -11,7 +11,7 @@ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" The document uses the blend mode not defined in ISO 32000-1:2008 From 4dc8e476f0bd842759e2543991971268570b17b3 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 8 Apr 2016 08:16:23 +0300 Subject: [PATCH 156/557] Merged the fix in the profile 6-2-10-1 to PDF/A-2 and 3 --- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 0bf73006..aa8dda04 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -599,7 +599,7 @@ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" The document uses the blend mode not defined in ISO 32000-1:2008 diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 039e3ef4..79ccba9e 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -599,7 +599,7 @@ Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Limunosity" + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" The document uses the blend mode not defined in ISO 32000-1:2008 From 2fd1c475c6f3562b98ea05c4e790fb8fe83cfe15 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 27 Apr 2016 19:20:28 +0300 Subject: [PATCH 157/557] Added a new rule for validating page transparency requirements --- .../verapdf-profile-6-2-10-t01.xml | 2 +- .../verapdf-profile-6-2-10-t02.xml | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml index ea2633ca..4a4e8684 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.10 Transparency - Blend modes Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml new file mode 100644 index 00000000..d05edfd5 --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml @@ -0,0 +1,32 @@ + + +
+ ISO 19005-2:2011 - 6.2.10 Transparency - Page transparency + If the document does not contain a PDF/A OutputIntent, then all Page objects + that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that + Group key shall include a CS entry whose value shall be used as the default blending colour space. +
+ + + + + If the document does not contain a PDF/A OutputIntent, then all Page objects + that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that + Group key shall include a CS entry whose value shall be used as the default blending colour space. + gOutputCS != null || groupCS_size != 0 || containsTransparency == false + + The page contains transparent objects with no blending colour space defined. + + + + + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + +
From 7f17c85556f766e623772d9744a3e59b1e2c6dc7 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 28 Apr 2016 15:05:21 +0300 Subject: [PATCH 158/557] Updated glyph validation profiles due to introduction of the renderingMode property in the model --- .../verapdf-profile-6-3-5-t01.xml | 10 ++++++---- .../verapdf-profile-6-3-6-t01.xml | 14 ++++++++------ .../verapdf-profile-6-2-11-4-t02.xml | 8 +++++--- .../verapdf-profile-6-2-11-5-t01.xml | 2 +- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml index 169fd7b4..32f3d8ed 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml @@ -1,15 +1,17 @@
- ISO 19005-1:2005 - 6.3.5 Font subsets - Embedded font programs shall define all font glyphs referenced for rendering with a conforming file + ISO 19005-1:2005 - 6.3.4 Embedded font programs + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3.
- Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - isGlyphPresent == true + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3. + renderingMode == 3 || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml index 15a2d406..35f411fa 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml @@ -2,21 +2,23 @@
ISO 19005-1:2005 - 6.3.6 Font metrics - For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistent + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and + in the embedded font program shall be consistent.
- For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistent - isWidthConsistent == true + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and + in the embedded font program shall be consistent. + renderingMode == 3 || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + + + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml index 2baf168d..0bab2aa6 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml @@ -2,14 +2,16 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - Glyphs - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement.
- Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - isGlyphPresent == true + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml index 17f06f57..e53f4267 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml @@ -11,7 +11,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary From a5fe59ec9ba4279da243a72956b9e76ef2e32b25 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 28 Apr 2016 15:19:37 +0300 Subject: [PATCH 159/557] Added the rule for validating Unicode character maps (Level U) --- .../verapdf-profile-6-2-11-7-t01.xml | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml new file mode 100644 index 00000000..870d7915 --- /dev/null +++ b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml @@ -0,0 +1,20 @@ + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. +
+ + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + + The font does not define Unicode character map or some glyphs have invalid Unicode value + + + + + + +
From 24e15d35fc4ff551d8061fa70360ddc2fe20d82f Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 28 Apr 2016 15:25:55 +0300 Subject: [PATCH 160/557] Fixed ampersand symbols --- .../verapdf-profile-6-2-11-7-t01.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml index 870d7915..91add2c3 100644 --- a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml +++ b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml @@ -9,6 +9,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 The font does not define Unicode character map or some glyphs have invalid Unicode value From efb2da9d73c339b941a65790c039f8e1b6c3a8aa Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 28 Apr 2016 15:54:32 +0300 Subject: [PATCH 161/557] Updated merged profiles - introducing Glyph.renderingMode property to distinguish between rules that apply only in rendering mode 3 or in any rendering mode - introducing Level U rules - adding transparency rules for PDF/A-2 and 3 --- PDF_A/PDFA-1A.xml | 19 +- PDF_A/PDFA-1B.xml | 19 +- PDF_A/PDFA-2B.xml | 25 +- PDF_A/PDFA-2U.xml | 1384 ++++++++++++++++++++++++++++++++++++++++++++ PDF_A/PDFA-3B.xml | 25 +- PDF_A/PDFA-3U.xml | 1395 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 2841 insertions(+), 26 deletions(-) create mode 100644 PDF_A/PDFA-2U.xml create mode 100644 PDF_A/PDFA-3U.xml diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 5319834f..ae1d9bfa 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,8 +1,8 @@ -
+
PDF/A-1A validation profile - Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 + Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -674,8 +674,9 @@ - Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - isGlyphPresent == true + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3. + renderingMode == 3 || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -710,14 +711,16 @@ - For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistent - isWidthConsistent == true + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and + in the embedded font program shall be consistent. + renderingMode == 3 || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + + + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 6c6b210d..870887e3 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,8 +1,8 @@ -
+
PDF/A-1B validation profile - Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011 + Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -674,8 +674,9 @@ - Embedded font programs shall define all font glyphs referenced for rendering with a conforming file - isGlyphPresent == true + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + except when the fonts are used exclusively with text rendering mode 3. + renderingMode == 3 || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -710,14 +711,16 @@ - For every font embedded in a conforming file, the glyph width information stored in the Widths entry of the - font dictionary and in the embedded font program shall be consistent - isWidthConsistent == true + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and + in the embedded font program shall be consistent. + renderingMode == 3 || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + + + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index aa8dda04..6b4f0f7a 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,8 +1,8 @@ -
+
PDF/A-2B validation profile - Validation rules against ISO 19005-2:2011 + Validation rules against ISO 19005-2:2011, Level B
@@ -608,6 +608,20 @@ + + + If the document does not contain a PDF/A OutputIntent, then all Page objects + that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that + Group key shall include a CS entry whose value shall be used as the default blending colour space. + gOutputCS != null || groupCS_size != 0 || containsTransparency == false + + The page contains transparent objects with no blending colour space defined. + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to @@ -788,8 +802,9 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - isGlyphPresent == true + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -822,7 +837,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml new file mode 100644 index 00000000..15b8ebdf --- /dev/null +++ b/PDF_A/PDFA-2U.xml @@ -0,0 +1,1384 @@ + + +
+ PDF/A-2U validation profile + Validation rules against ISO 19005-2:2011, Level U +
+ + + + + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h) + headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + + + + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID != null + + Missing ID in the document trailer + + + + + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + + + + + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker. + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of + LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be + used. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || + internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || + (internalRepresentation == "Crypt" && decodeParms == "Identity") + + + LZW compression is used + + + + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || + internalRepresentation == "AHx" || internalRepresentation == "A85" || + internalRepresentation == "Fl" || internalRepresentation == "RL" || + internalRepresentation == "CCF" || internalRepresentation == "DCT" + + + Inline image uses LZW, Crypt or one of the unknown filters + + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + + + + + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 + (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + Real value out of range + + + + + + + A conforming file shall not contain any string longer than 32767 bytes. + value.length() < 32767 + + Maximum length of a String (32767) exceeded + + + + + + + A conforming file shall not contain any name longer than 127 bytes. + internalRepresentation.length() <= 127 + + Maximum length of a Name (127) exceeded + + + + + + + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) + + Non-zero real value is too close to 0.0 + + + + + + + A conforming file shall not contain more than 8388607 indirect objects + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + + + + + A conforming file shall not nest q/Q pairs by more than 28 nesting levels + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + + + + + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + nrComponents <= 32 + + Maximum number of DeviceN components (32) is exceeded + + + + + + + A conforming file shall not contain a CID value greater than 65535. + CID <= 65535 + + Maximum value of a CID (65535) is exceeded + + + + + + + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units + in either direction, nor shall it be greater than 14 400 units in either direction. + top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + + One of the bage boundaries is out of range (3-14400) in one of the directions + + + + + + + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + by the BX/EX compatibility operators. + false + + A content stream contains an operator not defined in ISO 32000-1 + + + + + + + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + isInherited == false + + A content stream references a named resource that is not defined in an explicitly associated Resources dictionary + + + + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + + + + + + + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + DestOutputProfileRef_size == 0 + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + + + + + + + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements + + + + + + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + or if a PDF/A OutputIntent is present. + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + + + + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + + + + + An ExtGState dictionary shall not contain the HTP key + HTP_size == 0 + + An ExtGState dictionary contains the HTP key + + + + + + + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + + + + + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + + A rendering intent with non-standard value is used + + + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + + + + + An Image dictionary shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + + + + + If an Image dictionary contains the Interpolate key, its value shall be false. + For an inline image, the I key shall have a value of false. + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 + + JPEG2000 image has number of colour channels different from 1, 3 or 4. + + + + + + + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. + nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + + The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). + + + + + + + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only + that colour space and shall ignore all other colour space specifications. + colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + + Colour specification of the JPEG2000 image has specification method. + + + + + + + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + colrEnumCS == null || colrEnumCS != 19 + + JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A + + + + + + + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + + JPEG2000 image has invalid bit-depth parameters + + + + + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + + The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key + + + + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + + + + + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" + + The document uses the blend mode not defined in ISO 32000-1:2008 + + + + + + + + + If the document does not contain a PDF/A OutputIntent, then all Page objects + that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that + Group key shall include a CS entry whose value shall be used as the default blending colour space. + gOutputCS != null || groupCS_size != 0 || containsTransparency == false + + The page contains transparent objects with no blending colour space defined. + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + renderingMode == 3 || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps >= 1 + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The font does not define Unicode character map or some glyphs have invalid Unicode value + + + + + + + A PDF/A-2 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" + + Unknown or not permitted annotation type + + + + + + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + + + + + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. + Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) + + Text annotation has one of the flags NoZoom or NoRotate set to 0 + + + + + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + An annotation does not contain an appearance dictionary + + + + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + AA_size == 0 + + A Form field dictionary contains the AA entry + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + XFA_size == 0 + + The interactive form dictionary contains the XFA key + + + + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + + + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + + + + + + + The document's Catalog shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + + + + + The Page dictionary shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The Page dictionary contains an additional-actions dictionary (AA entry) + + + + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + isSerializationValid + + %1 + + errorMessage + + + + + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + containsUndefinedFields == false + + An extension schema object contains fields not defined by the specification + + + + + + + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" + + Invalid syntax of the extension schema container + + + + + + + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && + (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && + (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) + + Invalid Extension Schema definition + + + + + + + The Property type defined is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). + (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && + (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) + + Invalid extension schema Property type definition + + + + + + + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isFieldValidSeq == true && fieldPrefix == "pdfaType") + + Invalid extension schema ValueType type definition + + + + + + + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + (isNameValidText == true && namePrefix == "pdfaField" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) + + Invalid extension schema Field type definition + + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + %1 + + errorMessage + + + + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 2 + + The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file. + + part + + + + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "B" || conformance == "U" || conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + + conformance + + + + + + + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && + (amdPrefix == null || amdPrefix == "pdfaid") && + (corrPrefix == null || corrPrefix == "pdfaid") + + A property of the PDF/A Identification Schema has an invalid namespace prefix + + + + + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is + compliant with either ISO 19005-1 or this part of ISO 19005. + isValidPDFA12 == true + + An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 + + + + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + EF_size == 0 || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-2 file. + hasDuplicateName == false + + Optional content configuration dictionary has duplicated name + + + + + + + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. + doesOrderContainAllOCGs == true + + Not all optional content groups are present in the Order entry of the optional content configuration dictionary + + + + + + + The AS key shall not appear in any optional content configuration dictionary. + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + + There shall be no AlternatePresentations entry in the document's name dictionary + containsAlternatePresentations == false + + The document's name dictionary contains the AlternatePresentations entry + + + + + + + There shall be no PresSteps entry in any Page dictionary + containsPresSteps == false + + A Page dictionary contains the PresSteps entry + + + + + + + The document catalog shall not contain the Requirements key + Requirements == null + + The document catalog contains the Requirements key + + + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + null + gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + + +
diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 79ccba9e..181107f9 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,8 +1,8 @@ -
+
PDF/A-3B validation profile - Validation rules against ISO 19005-3:2012 + Validation rules against ISO 19005-3:2012, Level B
@@ -608,6 +608,20 @@ + + + If the document does not contain a PDF/A OutputIntent, then all Page objects + that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that + Group key shall include a CS entry whose value shall be used as the default blending colour space. + gOutputCS != null || groupCS_size != 0 || containsTransparency == false + + The page contains transparent objects with no blending colour space defined. + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to @@ -788,8 +802,9 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - isGlyphPresent == true + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -822,7 +837,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml new file mode 100644 index 00000000..3ca0e77a --- /dev/null +++ b/PDF_A/PDFA-3U.xml @@ -0,0 +1,1395 @@ + + +
+ PDF/A-3U validation profile + Validation rules against ISO 19005-3:2012, Level U +
+ + + + + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h) + headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + + + + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID != null + + Missing ID in the document trailer + + + + + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + + + + + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker. + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of + LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be + used. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || + internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || + (internalRepresentation == "Crypt" && decodeParms == "Identity") + + + LZW compression is used + + + + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || + internalRepresentation == "AHx" || internalRepresentation == "A85" || + internalRepresentation == "Fl" || internalRepresentation == "RL" || + internalRepresentation == "CCF" || internalRepresentation == "DCT" + + + Inline image uses LZW, Crypt or one of the unknown filters + + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + + + + + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 + (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + Real value out of range + + + + + + + A conforming file shall not contain any string longer than 32767 bytes. + value.length() < 32767 + + Maximum length of a String (32767) exceeded + + + + + + + A conforming file shall not contain any name longer than 127 bytes. + internalRepresentation.length() <= 127 + + Maximum length of a Name (127) exceeded + + + + + + + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) + + Non-zero real value is too close to 0.0 + + + + + + + A conforming file shall not contain more than 8388607 indirect objects + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + + + + + A conforming file shall not nest q/Q pairs by more than 28 nesting levels + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + + + + + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + nrComponents <= 32 + + Maximum number of DeviceN components (32) is exceeded + + + + + + + A conforming file shall not contain a CID value greater than 65535. + CID <= 65535 + + Maximum value of a CID (65535) is exceeded + + + + + + + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units + in either direction, nor shall it be greater than 14 400 units in either direction. + top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + + One of the bage boundaries is out of range (3-14400) in one of the directions + + + + + + + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + by the BX/EX compatibility operators. + false + + A content stream contains an operator not defined in ISO 32000-1 + + + + + + + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + isInherited == false + + A content stream references a named resource that is not defined in an explicitly associated Resources dictionary + + + + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + + + + + + + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + DestOutputProfileRef_size == 0 + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + + + + + + + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements + + + + + + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + or if a PDF/A OutputIntent is present. + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + + + + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + + + + + An ExtGState dictionary shall not contain the HTP key + HTP_size == 0 + + An ExtGState dictionary contains the HTP key + + + + + + + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + + + + + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + + A rendering intent with non-standard value is used + + + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + + + + + An Image dictionary shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + + + + + If an Image dictionary contains the Interpolate key, its value shall be false. + For an inline image, the I key shall have a value of false. + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 + + JPEG2000 image has number of colour channels different from 1, 3 or 4. + + + + + + + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. + nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + + The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). + + + + + + + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only + that colour space and shall ignore all other colour space specifications. + colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + + Colour specification of the JPEG2000 image has specification method. + + + + + + + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + colrEnumCS == null || colrEnumCS != 19 + + JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A + + + + + + + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + + JPEG2000 image has invalid bit-depth parameters + + + + + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + + The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key + + + + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + + + + + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" + + The document uses the blend mode not defined in ISO 32000-1:2008 + + + + + + + + + If the document does not contain a PDF/A OutputIntent, then all Page objects + that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that + Group key shall include a CS entry whose value shall be used as the default blending colour space. + gOutputCS != null || groupCS_size != 0 || containsTransparency == false + + The page contains transparent objects with no blending colour space defined. + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + renderingMode == 3 || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps >= 1 + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The font does not define Unicode character map or some glyphs have invalid Unicode value + + + + + + + A PDF/A-2 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" + + Unknown or not permitted annotation type + + + + + + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + + + + + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. + Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) + + Text annotation has one of the flags NoZoom or NoRotate set to 0 + + + + + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + An annotation does not contain an appearance dictionary + + + + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + AA_size == 0 + + A Form field dictionary contains the AA entry + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + XFA_size == 0 + + The interactive form dictionary contains the XFA key + + + + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + + + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + + + + + + + The document's Catalog shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + + + + + The Page dictionary shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The Page dictionary contains an additional-actions dictionary (AA entry) + + + + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + isSerializationValid + + %1 + + errorMessage + + + + + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + containsUndefinedFields == false + + An extension schema object contains fields not defined by the specification + + + + + + + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" + + Invalid syntax of the extension schema container + + + + + + + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && + (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && + (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) + + Invalid Extension Schema definition + + + + + + + The Property type defined is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). + (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && + (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) + + Invalid extension schema Property type definition + + + + + + + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isFieldValidSeq == true && fieldPrefix == "pdfaType") + + Invalid extension schema ValueType type definition + + + + + + + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + (isNameValidText == true && namePrefix == "pdfaField" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) + + Invalid extension schema Field type definition + + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + %1 + + errorMessage + + + + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 3 + + The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file. + + part + + + + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "B" || conformance == "U" || conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + + conformance + + + + + + + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && + (amdPrefix == null || amdPrefix == "pdfaid") && + (corrPrefix == null || corrPrefix == "pdfaid") + + A property of the PDF/A Identification Schema has an invalid namespace prefix + + + + + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. + If the MIME type is not known, the "application/octet-stream" shall be used. + Subtype != null + + An embedded file dictionary doe snot contain the MIME type information (Subtype entry) + + + + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + EF_size == 0 || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + + In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, + a new (required) key has been defined and its presence (in the dictionary) is required. + AFRelationship != null + + The file specification dictionary for an embedded file does not contain the AFRelationship key + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-2 file. + hasDuplicateName == false + + Optional content configuration dictionary has duplicated name + + + + + + + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. + doesOrderContainAllOCGs == true + + Not all optional content groups are present in the Order entry of the optional content configuration dictionary + + + + + + + The AS key shall not appear in any optional content configuration dictionary. + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + + There shall be no AlternatePresentations entry in the document's name dictionary + containsAlternatePresentations == false + + The document's name dictionary contains the AlternatePresentations entry + + + + + + + There shall be no PresSteps entry in any Page dictionary + containsPresSteps == false + + A Page dictionary contains the PresSteps entry + + + + + + + The document catalog shall not contain the Requirements key + Requirements == null + + The document catalog contains the Requirements key + + + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + null + gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + + +
From 8f2a3a36e3378bce77c024586d38c020573a7d3c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 2 May 2016 12:45:13 +0300 Subject: [PATCH 162/557] Added the rule on ICCBasedCMYK and OPM mode --- .../verapdf-profile-6-2-4-t01.xml | 4 +-- .../verapdf-profile-6-2-4-t02.xml | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t02.xml diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t01.xml index eabc7baf..c82b9eb8 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased colour spaces The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. @@ -7,7 +7,7 @@ - + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t02.xml new file mode 100644 index 00000000..106141a9 --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased CMYK and OPM + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + when overprinting for stroke or fill or both is set to true. +
+ + + + + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + when overprinting for stroke or fill or both is set to true. + overprintFlag == false || OPM == 0 + + Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting + + + + + + + + +
From e18d765bae1893ad831f515df147ccaddcc895c4 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 3 May 2016 10:48:18 +0300 Subject: [PATCH 163/557] Updated the rule to check only for the presence of the explicitly associated resource dictionary (for now) --- .../6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml index 7474866e..763431a1 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml @@ -1,19 +1,19 @@
- ISO 19005-2:2011 - 6.2.2 Content streams - + ISO 19005-2:2011 - 6.2.2 Content streams - Resources dictionary A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3.
- + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + hasExplicitResources == false - A content stream references a named resource that is not defined in an explicitly associated Resources dictionary + A content stream does not have an explicitly associated Resources dictionary From 5d99b821bac6c60a3d824b53838d0f96984ff3f1 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 3 May 2016 10:49:36 +0300 Subject: [PATCH 164/557] Fixed misprint in the test --- .../6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml index 763431a1..598cbf68 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml @@ -11,7 +11,7 @@ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - hasExplicitResources == false + hasExplicitResources == true A content stream does not have an explicitly associated Resources dictionary From c7122e994c1e7af363f83df1661ece1bc654e5f5 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 3 May 2016 11:26:21 +0300 Subject: [PATCH 165/557] Fixed specification references for embedded files in PDF/A-3b --- PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml | 4 ++-- PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml | 4 ++-- PDF_A/PDFA-3B.xml | 8 ++++---- PDF_A/PDFA-3U.xml | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml index d666f254..8272d70b 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-3:2012 - 6.8 Embedded files - Subtype The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. @@ -8,7 +8,7 @@ - + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used. Subtype != null diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml index 16b90046..7cede964 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-3:2012 - 6.8 Embedded files - AFRelationship In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, @@ -8,7 +8,7 @@ - + In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, a new (required) key has been defined and its presence (in the dictionary) is required. AFRelationship != null diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 181107f9..d0a02197 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -298,13 +298,13 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + hasExplicitResources == true - A content stream references a named resource that is not defined in an explicitly associated Resources dictionary + A content stream does not have an explicitly associated Resources dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 3ca0e77a..2ed8decb 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -298,13 +298,13 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + hasExplicitResources == true - A content stream references a named resource that is not defined in an explicitly associated Resources dictionary + A content stream does not have an explicitly associated Resources dictionary From 59a7936e057b06d19ae0f8c50f3bd54e769b0dd9 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 3 May 2016 16:33:39 +0300 Subject: [PATCH 166/557] Merge PDF/A-2 profiles --- PDF_A/PDFA-2B.xml | 22 ++++++++++++---------- PDF_A/PDFA-2U.xml | 8 ++++---- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 6b4f0f7a..6044d2d3 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -298,13 +298,13 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + hasExplicitResources == true - A content stream references a named resource that is not defined in an explicitly associated Resources dictionary + A content stream does not have an explicitly associated Resources dictionary @@ -362,16 +362,18 @@ - + - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + when overprinting for stroke or fill or both is set to true. + overprintFlag == false || OPM == 0 - DeviceRGB colour space is used without RGB output intent profile + Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + + + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 15b8ebdf..71d7deb0 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -298,13 +298,13 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + hasExplicitResources == true - A content stream references a named resource that is not defined in an explicitly associated Resources dictionary + A content stream does not have an explicitly associated Resources dictionary From 734c5a80ca4120d3949e8816995fffd6694985ec Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 3 May 2016 17:41:29 +0300 Subject: [PATCH 167/557] Reverted the rule on the explicitly associated resources --- .../verapdf-profile-6-2-2-t02.xml | 6 ++-- ...01.xml => verapdf-profile-6-2-4-2-t01.xml} | 2 +- ...02.xml => verapdf-profile-6-2-4-2-t02.xml} | 2 +- ...02.xml => verapdf-profile-6-2-4-3-t02.xml} | 4 +-- ...03.xml => verapdf-profile-6-2-4-3-t03.xml} | 4 +-- ...04.xml => verapdf-profile-6-2-4-3-t04.xml} | 4 +-- ...05.xml => verapdf-profile-6-2-4-4-t01.xml} | 4 +-- ...06.xml => verapdf-profile-6-2-4-4-t02.xml} | 4 +-- PDF_A/PDFA-2B.xml | 31 +++++++++++++------ 9 files changed, 36 insertions(+), 25 deletions(-) rename PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/{verapdf-profile-6-2-4-t01.xml => verapdf-profile-6-2-4-2-t01.xml} (94%) rename PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/{verapdf-profile-6-2-4-t02.xml => verapdf-profile-6-2-4-2-t02.xml} (94%) rename PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/{verapdf-profile-6-2-4-t02.xml => verapdf-profile-6-2-4-3-t02.xml} (94%) rename PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/{verapdf-profile-6-2-4-t03.xml => verapdf-profile-6-2-4-3-t03.xml} (94%) rename PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/{verapdf-profile-6-2-4-t04.xml => verapdf-profile-6-2-4-3-t04.xml} (93%) rename PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/{verapdf-profile-6-2-4-t05.xml => verapdf-profile-6-2-4-4-t01.xml} (92%) rename PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/{verapdf-profile-6-2-4-t06.xml => verapdf-profile-6-2-4-4-t02.xml} (94%) diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml index 598cbf68..03237e33 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml @@ -7,13 +7,13 @@
- + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - hasExplicitResources == true + isInherited == false - A content stream does not have an explicitly associated Resources dictionary + A content stream refers to resources not defined in an explicitly associated Resources dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml similarity index 94% rename from PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t01.xml rename to PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml index c82b9eb8..f848f5d9 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml @@ -7,7 +7,7 @@ - + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml similarity index 94% rename from PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t02.xml rename to PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml index 106141a9..31091b01 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml @@ -8,7 +8,7 @@ - + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml similarity index 94% rename from PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t02.xml rename to PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml index 4558392f..382aa596 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceRGB DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the @@ -8,7 +8,7 @@ - + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile. gOutputCS != null && gOutputCS == "RGB " diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml similarity index 94% rename from PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t03.xml rename to PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml index 6bd3cf0c..c06b2b6a 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceCMYK DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space @@ -8,7 +8,7 @@ - + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. gOutputCS != null && gOutputCS == "CMYK" diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml similarity index 93% rename from PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t04.xml rename to PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml index 9b84ac33..02cf7e4b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceGray DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, @@ -8,7 +8,7 @@ - + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present. gOutputCS != null diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml similarity index 92% rename from PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t05.xml rename to PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml index 176ad081..34f49a8a 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - DeviceN colorants For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. @@ -7,7 +7,7 @@ - + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml similarity index 94% rename from PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t06.xml rename to PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml index 43292978..821dcb90 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - Consistency of Separations All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the @@ -9,7 +9,7 @@ - + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 6044d2d3..2bab03e0 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -298,13 +298,13 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - hasExplicitResources == true + isInherited == false - A content stream does not have an explicitly associated Resources dictionary + A content stream refers to resources not defined in an explicitly associated Resources dictionary @@ -350,7 +350,7 @@ - + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 @@ -363,7 +363,7 @@ - + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -375,8 +375,19 @@ + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + - + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. gOutputCS != null && gOutputCS == "CMYK" @@ -387,7 +398,7 @@ - + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present. gOutputCS != null @@ -398,7 +409,7 @@ - + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true @@ -410,7 +421,7 @@ - + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression From 9c7871d3faf1ac537688f37a4af6c4ba39f392a2 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 3 May 2016 17:41:59 +0300 Subject: [PATCH 168/557] Merged the profiles --- PDF_A/PDFA-2U.xml | 33 +++++++++++++++++++++++---------- PDF_A/PDFA-3B.xml | 33 +++++++++++++++++++++++---------- PDF_A/PDFA-3U.xml | 33 +++++++++++++++++++++++---------- 3 files changed, 69 insertions(+), 30 deletions(-) diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 71d7deb0..707d8f91 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -298,13 +298,13 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - hasExplicitResources == true + isInherited == false - A content stream does not have an explicitly associated Resources dictionary + A content stream refers to resources not defined in an explicitly associated Resources dictionary @@ -350,7 +350,7 @@ - + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 @@ -362,8 +362,21 @@ + + + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + when overprinting for stroke or fill or both is set to true. + overprintFlag == false || OPM == 0 + + Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting + + + + + + - + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile. gOutputCS != null && gOutputCS == "RGB " @@ -374,7 +387,7 @@ - + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. gOutputCS != null && gOutputCS == "CMYK" @@ -385,7 +398,7 @@ - + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present. gOutputCS != null @@ -396,7 +409,7 @@ - + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true @@ -408,7 +421,7 @@ - + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d0a02197..bc8cb7cd 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -298,13 +298,13 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - hasExplicitResources == true + isInherited == false - A content stream does not have an explicitly associated Resources dictionary + A content stream refers to resources not defined in an explicitly associated Resources dictionary @@ -350,7 +350,7 @@ - + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 @@ -362,8 +362,21 @@ + + + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + when overprinting for stroke or fill or both is set to true. + overprintFlag == false || OPM == 0 + + Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting + + + + + + - + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile. gOutputCS != null && gOutputCS == "RGB " @@ -374,7 +387,7 @@ - + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. gOutputCS != null && gOutputCS == "CMYK" @@ -385,7 +398,7 @@ - + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present. gOutputCS != null @@ -396,7 +409,7 @@ - + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true @@ -408,7 +421,7 @@ - + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 2ed8decb..c395e6c6 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -298,13 +298,13 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - hasExplicitResources == true + isInherited == false - A content stream does not have an explicitly associated Resources dictionary + A content stream refers to resources not defined in an explicitly associated Resources dictionary @@ -350,7 +350,7 @@ - + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 @@ -362,8 +362,21 @@ + + + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + when overprinting for stroke or fill or both is set to true. + overprintFlag == false || OPM == 0 + + Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting + + + + + + - + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile. gOutputCS != null && gOutputCS == "RGB " @@ -374,7 +387,7 @@ - + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. gOutputCS != null && gOutputCS == "CMYK" @@ -385,7 +398,7 @@ - + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present. gOutputCS != null @@ -396,7 +409,7 @@ - + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true @@ -408,7 +421,7 @@ - + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression From 90cf6aa8a7d3b2c5fad5b753cbf92208ba421e5e Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 3 May 2016 18:10:40 +0300 Subject: [PATCH 169/557] Added atomic PDF/A-2a rules --- .../verapdf-profile-6-6-4-t03.xml | 25 +++++++++++++++++++ .../verapdf-profile-6-7-2-t01.xml | 23 +++++++++++++++++ .../verapdf-profile-6-7-3-t01.xml | 25 +++++++++++++++++++ .../verapdf-profile-6-7-3-t02.xml | 23 +++++++++++++++++ .../verapdf-profile-6-6-4-t03.xml | 25 +++++++++++++++++++ 5 files changed, 121 insertions(+) create mode 100644 PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml create mode 100644 PDF_A/2a/6.7 Logical Strucure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml create mode 100644 PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml create mode 100644 PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml create mode 100644 PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml diff --git a/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml new file mode 100644 index 00000000..b067867b --- /dev/null +++ b/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. +
+ + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + + conformance + + + + + + +
diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml b/PDF_A/2a/6.7 Logical Strucure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml new file mode 100644 index 00000000..d3750852 --- /dev/null +++ b/PDF_A/2a/6.7 Logical Strucure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.7.2 Tagged PDF - 6.7.2.2 Mark information dictionary + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. +
+ + + + + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. + Marked == true + + /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false + + + + + + + + +
diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml b/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml new file mode 100644 index 00000000..362affb1 --- /dev/null +++ b/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.7.3 Artefacts - StructTreeRoot + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry + of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. +
+ + + + + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry + of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + +
diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml new file mode 100644 index 00000000..19d05276 --- /dev/null +++ b/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.7.3 Artefacts - Structure element type + Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem +
+ + + + + Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem + Type == "StructElem" + + Missing or invalid Type entry in the structure element dictionary + + + + + + + + +
diff --git a/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml new file mode 100644 index 00000000..0b91d256 --- /dev/null +++ b/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. +
+ + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "U" || conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + + conformance + + + + + + +
From 3838d22ab2c0dcc5f05f79e81835e1c8e5ef5dd1 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 3 May 2016 18:28:57 +0300 Subject: [PATCH 170/557] Added merged profiles for all flavors --- .../verapdf-profile-6-6-4-t03.xml | 2 +- PDF_A/PDFA-2A.xml | 1434 ++++++++++++++++ PDF_A/PDFA-2U.xml | 6 +- PDF_A/PDFA-3A.xml | 1445 +++++++++++++++++ PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 6 +- 6 files changed, 2887 insertions(+), 8 deletions(-) create mode 100644 PDF_A/PDFA-2A.xml create mode 100644 PDF_A/PDFA-3A.xml diff --git a/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 0b91d256..d30108a3 100644 --- a/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -13,7 +13,7 @@ pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U.
conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file. conformance diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml new file mode 100644 index 00000000..10e427c5 --- /dev/null +++ b/PDF_A/PDFA-2A.xml @@ -0,0 +1,1434 @@ + + +
+ PDF/A-2A validation profile + Validation rules against ISO 19005-2:2011, Level A +
+ + + + + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h) + headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + + + + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID != null + + Missing ID in the document trailer + + + + + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + + + + + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker. + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of + LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be + used. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || + internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || + (internalRepresentation == "Crypt" && decodeParms == "Identity") + + + LZW compression is used + + + + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || + internalRepresentation == "AHx" || internalRepresentation == "A85" || + internalRepresentation == "Fl" || internalRepresentation == "RL" || + internalRepresentation == "CCF" || internalRepresentation == "DCT" + + + Inline image uses LZW, Crypt or one of the unknown filters + + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + + + + + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 + (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + Real value out of range + + + + + + + A conforming file shall not contain any string longer than 32767 bytes. + value.length() < 32767 + + Maximum length of a String (32767) exceeded + + + + + + + A conforming file shall not contain any name longer than 127 bytes. + internalRepresentation.length() <= 127 + + Maximum length of a Name (127) exceeded + + + + + + + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) + + Non-zero real value is too close to 0.0 + + + + + + + A conforming file shall not contain more than 8388607 indirect objects + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + + + + + A conforming file shall not nest q/Q pairs by more than 28 nesting levels + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + + + + + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + nrComponents <= 32 + + Maximum number of DeviceN components (32) is exceeded + + + + + + + A conforming file shall not contain a CID value greater than 65535. + CID <= 65535 + + Maximum value of a CID (65535) is exceeded + + + + + + + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units + in either direction, nor shall it be greater than 14 400 units in either direction. + top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + + One of the bage boundaries is out of range (3-14400) in one of the directions + + + + + + + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + by the BX/EX compatibility operators. + false + + A content stream contains an operator not defined in ISO 32000-1 + + + + + + + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + isInherited == false + + A content stream refers to resources not defined in an explicitly associated Resources dictionary + + + + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + + + + + + + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + DestOutputProfileRef_size == 0 + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + + + + + + + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements + + + + + + + + + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + when overprinting for stroke or fill or both is set to true. + overprintFlag == false || OPM == 0 + + Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting + + + + + + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + or if a PDF/A OutputIntent is present. + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + + + + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + + + + + An ExtGState dictionary shall not contain the HTP key + HTP_size == 0 + + An ExtGState dictionary contains the HTP key + + + + + + + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + + + + + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + + A rendering intent with non-standard value is used + + + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + + + + + An Image dictionary shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + + + + + If an Image dictionary contains the Interpolate key, its value shall be false. + For an inline image, the I key shall have a value of false. + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 + + JPEG2000 image has number of colour channels different from 1, 3 or 4. + + + + + + + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. + nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + + The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). + + + + + + + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only + that colour space and shall ignore all other colour space specifications. + colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + + Colour specification of the JPEG2000 image has specification method. + + + + + + + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + colrEnumCS == null || colrEnumCS != 19 + + JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A + + + + + + + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + + JPEG2000 image has invalid bit-depth parameters + + + + + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + + The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key + + + + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + + + + + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" + + The document uses the blend mode not defined in ISO 32000-1:2008 + + + + + + + + + If the document does not contain a PDF/A OutputIntent, then all Page objects + that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that + Group key shall include a CS entry whose value shall be used as the default blending colour space. + gOutputCS != null || groupCS_size != 0 || containsTransparency == false + + The page contains transparent objects with no blending colour space defined. + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + renderingMode == 3 || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps >= 1 + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The font does not define Unicode character map or some glyphs have invalid Unicode value + + + + + + + A PDF/A-2 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" + + Unknown or not permitted annotation type + + + + + + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + + + + + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. + Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) + + Text annotation has one of the flags NoZoom or NoRotate set to 0 + + + + + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + An annotation does not contain an appearance dictionary + + + + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + AA_size == 0 + + A Form field dictionary contains the AA entry + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + XFA_size == 0 + + The interactive form dictionary contains the XFA key + + + + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + + + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + + + + + + + The document's Catalog shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + + + + + The Page dictionary shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The Page dictionary contains an additional-actions dictionary (AA entry) + + + + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + isSerializationValid + + %1 + + errorMessage + + + + + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + containsUndefinedFields == false + + An extension schema object contains fields not defined by the specification + + + + + + + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" + + Invalid syntax of the extension schema container + + + + + + + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && + (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && + (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) + + Invalid Extension Schema definition + + + + + + + The Property type defined is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). + (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && + (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) + + Invalid extension schema Property type definition + + + + + + + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isFieldValidSeq == true && fieldPrefix == "pdfaType") + + Invalid extension schema ValueType type definition + + + + + + + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + (isNameValidText == true && namePrefix == "pdfaField" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) + + Invalid extension schema Field type definition + + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + %1 + + errorMessage + + + + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 2 + + The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file. + + part + + + + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + + conformance + + + + + + + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && + (amdPrefix == null || amdPrefix == "pdfaid") && + (corrPrefix == null || corrPrefix == "pdfaid") + + A property of the PDF/A Identification Schema has an invalid namespace prefix + + + + + + + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. + Marked == true + + /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false + + + + + + + + + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry + of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + + Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem + Type == "StructElem" + + Missing or invalid Type entry in the structure element dictionary + + + + + + + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is + compliant with either ISO 19005-1 or this part of ISO 19005. + isValidPDFA12 == true + + An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 + + + + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + EF_size == 0 || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-2 file. + hasDuplicateName == false + + Optional content configuration dictionary has duplicated name + + + + + + + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. + doesOrderContainAllOCGs == true + + Not all optional content groups are present in the Order entry of the optional content configuration dictionary + + + + + + + The AS key shall not appear in any optional content configuration dictionary. + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + + There shall be no AlternatePresentations entry in the document's name dictionary + containsAlternatePresentations == false + + The document's name dictionary contains the AlternatePresentations entry + + + + + + + There shall be no PresSteps entry in any Page dictionary + containsPresSteps == false + + A Page dictionary contains the PresSteps entry + + + + + + + The document catalog shall not contain the Requirements key + Requirements == null + + The document catalog contains the Requirements key + + + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + null + gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + + +
diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 707d8f91..60335051 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -1266,9 +1266,9 @@ A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. - conformance == "B" || conformance == "U" || conformance == "A" + conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file. conformance diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml new file mode 100644 index 00000000..a84e54e0 --- /dev/null +++ b/PDF_A/PDFA-3A.xml @@ -0,0 +1,1445 @@ + + +
+ PDF/A-3A validation profile + Validation rules against ISO 19005-3:2012, Level A +
+ + + + + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 7 (37h) + headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + + + + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID != null + + Missing ID in the document trailer + + + + + + + + + The keyword Encrypt shall not be used in the trailer dictionary + isEncrypted != true + + Encrypt keyword is present in the trailer dictionary + + + + + + + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + character. The endstream keyword shall be preceded by an EOL marker. + streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + + Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + + + + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of + LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be + used. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || + internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || + (internalRepresentation == "Crypt" && decodeParms == "Identity") + + + LZW compression is used + + + + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + or an array containing any such value. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || + internalRepresentation == "AHx" || internalRepresentation == "A85" || + internalRepresentation == "Fl" || internalRepresentation == "RL" || + internalRepresentation == "CCF" || internalRepresentation == "DCT" + + + Inline image uses LZW, Crypt or one of the unknown filters + + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + (intValue <= 2147483647) && (intValue >= -2147483648) + + Integer value out of range + + + + + + + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 + (realValue >= -3.403e+38) && (realValue <= 3.403e+38) + + Real value out of range + + + + + + + A conforming file shall not contain any string longer than 32767 bytes. + value.length() < 32767 + + Maximum length of a String (32767) exceeded + + + + + + + A conforming file shall not contain any name longer than 127 bytes. + internalRepresentation.length() <= 127 + + Maximum length of a Name (127) exceeded + + + + + + + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) + + Non-zero real value is too close to 0.0 + + + + + + + A conforming file shall not contain more than 8388607 indirect objects + nrIndirects <= 8388607 + + Maximum number of indirect objects (8,388,607) in a PDF file exceeded + + + + + + + A conforming file shall not nest q/Q pairs by more than 28 nesting levels + nestingLevel <= 28 + + Maximum depth of graphics state nesting (q and Q operators) is exceeded + + + + + + + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + nrComponents <= 32 + + Maximum number of DeviceN components (32) is exceeded + + + + + + + A conforming file shall not contain a CID value greater than 65535. + CID <= 65535 + + Maximum value of a CID (65535) is exceeded + + + + + + + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units + in either direction, nor shall it be greater than 14 400 units in either direction. + top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + + One of the bage boundaries is out of range (3-14400) in one of the directions + + + + + + + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + by the BX/EX compatibility operators. + false + + A content stream contains an operator not defined in ISO 32000-1 + + + + + + + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + isInherited == false + + A content stream refers to resources not defined in an explicitly associated Resources dictionary + + + + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + + + + + + + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + DestOutputProfileRef_size == 0 + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + + + + + + + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements + + + + + + + + + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + when overprinting for stroke or fill or both is set to true. + overprintFlag == false || OPM == 0 + + Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting + + + + + + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, + or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + gOutputCS != null && gOutputCS == "RGB " + + DeviceRGB colour space is used without RGB output intent profile + + + + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + gOutputCS != null && gOutputCS == "CMYK" + + DeviceCMYK colour space is used without CMYK output intent profile + + + + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, + or if a PDF/A OutputIntent is present. + gOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + + + + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + + + + + An ExtGState dictionary shall not contain the TR key + TR == null + + An ExtGState dictionary contains the TR key + + + + + + + An ExtGState dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An ExtGState dictionary contains the TR2 key with a value other than Default + + + + + + + An ExtGState dictionary shall not contain the HTP key + HTP_size == 0 + + An ExtGState dictionary contains the HTP key + + + + + + + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + + + + + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + + A rendering intent with non-standard value is used + + + + + + + An Image dictionary shall not contain the Alternates key + Alternates_size == 0 + + Alternates key is present in the Image dictionary( + + + + + + + An Image dictionary shall not contain the OPI key + OPI_size == 0 + + OPI key is present in the XObject dictionary( + + + + + + + If an Image dictionary contains the Interpolate key, its value shall be false. + For an inline image, the I key shall have a value of false. + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 + + JPEG2000 image has number of colour channels different from 1, 3 or 4. + + + + + + + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. + nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + + The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). + + + + + + + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only + that colour space and shall ignore all other colour space specifications. + colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + + Colour specification of the JPEG2000 image has specification method. + + + + + + + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + colrEnumCS == null || colrEnumCS != 19 + + JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A + + + + + + + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + + JPEG2000 image has invalid bit-depth parameters + + + + + + + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + + The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key + + + + + + + A conforming file shall not contain any reference XObjects + Ref_size == 0 + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + A conforming file shall not contain any PostScript XObjects + Subtype != "PS" + + The document contains a PostScript XObject + + + + + + + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || + BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || + BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" + + The document uses the blend mode not defined in ISO 32000-1:2008 + + + + + + + + + If the document does not contain a PDF/A OutputIntent, then all Page objects + that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that + Group key shall include a CS entry whose value shall be used as the default blending colour space. + gOutputCS != null || groupCS_size != 0 || containsTransparency == false + + The page contains transparent objects with no blending colour space defined. + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + renderingMode == 3 || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps >= 1 + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The font does not define Unicode character map or some glyphs have invalid Unicode value + + + + + + + A PDF/A-2 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" + + Unknown or not permitted annotation type + + + + + + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + + + + + Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. + Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) + + Text annotation has one of the flags NoZoom or NoRotate set to 0 + + + + + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, + shall have at least one appearance dictionary: + - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + + An annotation does not contain an appearance dictionary + + + + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + Subtype != "Widget" || (A_size == 0 && AA_size == 0) + + A Widget annotation contains either A or AA entry + + + + + + + A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + AA_size == 0 + + A Form field dictionary contains the AA entry + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + XFA_size == 0 + + The interactive form dictionary contains the XFA key + + + + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + Additionally, the deprecated set-state and noop actions shall not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + + Unknown or not permitted action type + + + + + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + + + + + + + The document's Catalog shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The document catalog dictionary contains an additional-actions dictionary (AA entry) + + + + + + + The Page dictionary shall not include an AA entry for an additional-actions dictionary. + AA_size == 0 + + The Page dictionary contains an additional-actions dictionary (AA entry) + + + + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + isSerializationValid + + %1 + + errorMessage + + + + + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + containsUndefinedFields == false + + An extension schema object contains fields not defined by the specification + + + + + + + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" + + Invalid syntax of the extension schema container + + + + + + + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && + (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && + (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) + + Invalid Extension Schema definition + + + + + + + The Property type defined is an XMP structure containing the definition of a schema property. The + field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). + (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && + (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) + + Invalid extension schema Property type definition + + + + + + + The ValueType type is an XMP structure containing the definition of all property value + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isFieldValidSeq == true && fieldPrefix == "pdfaType") + + Invalid extension schema ValueType type definition + + + + + + + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: + pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + (isNameValidText == true && namePrefix == "pdfaField" ) && + (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) + + Invalid extension schema Field type definition + + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + %1 + + errorMessage + + + + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 3 + + The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file. + + part + + + + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-3A conforming file. + + conformance + + + + + + + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) + partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && + (amdPrefix == null || amdPrefix == "pdfaid") && + (corrPrefix == null || corrPrefix == "pdfaid") + + A property of the PDF/A Identification Schema has an invalid namespace prefix + + + + + + + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. + Marked == true + + /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false + + + + + + + + + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry + of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + + Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem + Type == "StructElem" + + Missing or invalid Type entry in the structure element dictionary + + + + + + + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. + If the MIME type is not known, the "application/octet-stream" shall be used. + Subtype != null + + An embedded file dictionary doe snot contain the MIME type information (Subtype entry) + + + + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + EF_size == 0 || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + + In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, + a new (required) key has been defined and its presence (in the dictionary) is required. + AFRelationship != null + + The file specification dictionary for an embedded file does not contain the AFRelationship key + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-2 file. + hasDuplicateName == false + + Optional content configuration dictionary has duplicated name + + + + + + + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. + doesOrderContainAllOCGs == true + + Not all optional content groups are present in the Order entry of the optional content configuration dictionary + + + + + + + The AS key shall not appear in any optional content configuration dictionary. + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + + There shall be no AlternatePresentations entry in the document's name dictionary + containsAlternatePresentations == false + + The document's name dictionary contains the AlternatePresentations entry + + + + + + + There shall be no PresSteps entry in any Page dictionary + containsPresSteps == false + + A Page dictionary contains the PresSteps entry + + + + + + + The document catalog shall not contain the Requirements key + Requirements == null + + The document catalog contains the Requirements key + + + + + + + + null + S == "GTS_PDFA1" ? colorSpace : gOutputCS + + + null + gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + + +
diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index bc8cb7cd..ae9c406b 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1258,7 +1258,7 @@ pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "B" || conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-3B conforming file. conformance diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index c395e6c6..939a2ef6 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -1266,9 +1266,9 @@ A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. - conformance == "B" || conformance == "U" || conformance == "A" + conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file. conformance From 8400f5986a7cae01f27d3753527ace13d48dc2c1 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 16 May 2016 16:18:10 +0300 Subject: [PATCH 171/557] Removed the rule as the corresponding clause changed from 'shall' to 'should' requirement in Corrigendum 2 --- .../verapdf-profile-6-8-3-t02.xml | 23 ------------------- 1 file changed, 23 deletions(-) delete mode 100644 PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml b/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml deleted file mode 100644 index 0eb2d5d5..00000000 --- a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 19005-1:2005 - 6.8.3 Artifacts - Structure element type - Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem -
- - - - - Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem - Type == "StructElem" - - Missing or invalid Type entry in the structure element dictionary - - - - - - - - -
From 2fc77fdfb9c0d355350856010fd2930f80e47087 Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Fri, 20 May 2016 11:27:40 +0300 Subject: [PATCH 172/557] Modify 6-1-7-t02 profile --- .../6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml index 8833f23b..2e0b084d 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml @@ -11,7 +11,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 2bab03e0..e3334d8c 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -107,7 +107,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification From 1f4de2f6140db827de6a929a1d6df24883f1964a Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 20 May 2016 11:46:48 +0300 Subject: [PATCH 173/557] Fixed JavaScript syntax in rule 6.1.7-2 --- .../6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml | 2 +- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml index 8833f23b..2e0b084d 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml @@ -11,7 +11,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 10e427c5..2f27fd05 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -107,7 +107,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 2bab03e0..05f1c8f3 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -107,7 +107,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 60335051..e387de63 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -107,7 +107,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index a84e54e0..c7d7da4e 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -107,7 +107,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index ae9c406b..5086e88a 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -107,7 +107,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 939a2ef6..db90bf50 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -107,7 +107,7 @@ The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. - streamKeywordCRLFCompliant && endstreamKeywordEOLCompliant + streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification From 25defae635b1762f2178b40a5df3172a3021f7df Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 20 May 2016 11:49:33 +0300 Subject: [PATCH 174/557] Generated merged PDF/A-1 profiles --- PDF_A/PDFA-1A.xml | 14 +------------- PDF_A/PDFA-1B.xml | 2 +- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index ae1d9bfa..7f95c438 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -1193,18 +1193,6 @@ - - - Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem - Type == "StructElem" - - Missing or invalid Type entry in the structure element dictionary - - - - - - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 870887e3..1ad89d2e 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
From 90bad5f8ef26ae9a01e53c6fd943e014e3b8766d Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Fri, 27 May 2016 10:40:57 +0300 Subject: [PATCH 175/557] Fixed lastID check for empty ID --- .../6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index 186843f1..909a26d4 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -9,7 +9,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null + lastID != null && lastID.length > 0 Missing ID in the document trailer From b948477d578ff3269274c12e7c098d6cf64b1725 Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Fri, 27 May 2016 11:15:35 +0300 Subject: [PATCH 176/557] Merged lastID changes into PDF/A-2B profile --- PDF_A/PDFA-2U.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index e387de63..51127eda 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -31,7 +31,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null + lastID != null && lastID.length > 0 Missing ID in the document trailer From f663a79d378175e2ce1f84b5ac236385ef2f4ade Mon Sep 17 00:00:00 2001 From: Dmitry Remezow Date: Mon, 30 May 2016 15:06:07 +0300 Subject: [PATCH 177/557] Modify 6.1.3-t01 rule in PDFA-2B profile --- PDF_A/PDFA-2B.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 05f1c8f3..1321c28e 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -31,7 +31,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null + lastID != null && lastID.length > 0 Missing ID in the document trailer From 07497fa49c2f7cfd78679342d679b9f7af4c9dd0 Mon Sep 17 00:00:00 2001 From: Timur Kamalov Date: Mon, 30 May 2016 16:37:11 +0300 Subject: [PATCH 178/557] Fixed greater than operator in rule. --- .../6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index 909a26d4..2802518f 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -9,7 +9,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null && lastID.length > 0 + lastID != null && lastID.length > 0 Missing ID in the document trailer From 82bb5db117e9e30d3418408e8751c8e2076bf509 Mon Sep 17 00:00:00 2001 From: Timur Kamalov Date: Mon, 30 May 2016 16:46:34 +0300 Subject: [PATCH 179/557] Fixed rule. --- .../6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index 2802518f..1d36c40f 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -9,7 +9,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null && lastID.length > 0 + lastID != null && lastID.length() > 0 Missing ID in the document trailer From 07d24a074d9a2269276af5743dbc6b88a501118e Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 30 May 2016 16:58:06 +0300 Subject: [PATCH 180/557] Merged Part 2 and 3 profiles --- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 2f27fd05..067b2187 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -31,7 +31,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null + lastID != null && lastID.length() > 0 Missing ID in the document trailer diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 1321c28e..2efbc396 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -31,7 +31,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null && lastID.length > 0 + lastID != null && lastID.length() > 0 Missing ID in the document trailer diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 51127eda..9c2970e1 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -31,7 +31,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null && lastID.length > 0 + lastID != null && lastID.length() > 0 Missing ID in the document trailer diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index c7d7da4e..82ed5fb4 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -31,7 +31,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null + lastID != null && lastID.length() > 0 Missing ID in the document trailer diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 5086e88a..f5ea0721 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -31,7 +31,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null + lastID != null && lastID.length() > 0 Missing ID in the document trailer diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index db90bf50..0e29135b 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -31,7 +31,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 - lastID != null + lastID != null && lastID.length() > 0 Missing ID in the document trailer From 93439d12400addb6b0bb693a313686cd60e1716c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 30 May 2016 18:22:34 +0300 Subject: [PATCH 181/557] Added digital signature validation rules --- .../verapdf-profile-6-4-3-t01.xml | 26 ++++++++++++++++ .../verapdf-profile-6-4-3-t02.xml | 30 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml create mode 100644 PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml new file mode 100644 index 00000000..04b90626 --- /dev/null +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-2:2011 - 6.4.3 Digital signatures - ByteRange + When computing the digest for the file, it shall be computed over the entire file, including the signature + dictionary but excluding the PDF Signature itself. +
+ + + + + When computing the digest for the file, it shall be computed over the entire file, including the signature + dictionary but excluding the PDF Signature itself. + doesByteRangeCoverEntireDocument == true + + ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + + + + + + + + + +
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml new file mode 100644 index 00000000..f43d0525 --- /dev/null +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-2:2011 - 6.4.3 Digital signatures - PKCS#7 object + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. + a single "SignerInfo" structure) in the PDF Signature. +
+ + + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. + a single "SignerInfo" structure) in the PDF Signature. + signingCertificatePresent == true && SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + + + + + + + + + +
From e3d67660e3fa73690eb7ffceec217af0c10531b5 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 30 May 2016 18:30:24 +0300 Subject: [PATCH 182/557] Added digital signature rules to part 2 and 3 validation profiles --- PDF_A/PDFA-2A.xml | 32 +++++++++++++++++++++++++++++++- PDF_A/PDFA-2B.xml | 32 +++++++++++++++++++++++++++++++- PDF_A/PDFA-2U.xml | 32 +++++++++++++++++++++++++++++++- PDF_A/PDFA-3A.xml | 32 +++++++++++++++++++++++++++++++- PDF_A/PDFA-3B.xml | 32 +++++++++++++++++++++++++++++++- PDF_A/PDFA-3U.xml | 34 ++++++++++++++++++++++++++++++++-- 6 files changed, 187 insertions(+), 7 deletions(-) diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 067b2187..ba09f16d 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -1048,6 +1048,36 @@ + + + When computing the digest for the file, it shall be computed over the entire file, including the signature + dictionary but excluding the PDF Signature itself. + doesByteRangeCoverEntireDocument == true + + ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + + + + + + + + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. + a single "SignerInfo" structure) in the PDF Signature. + signingCertificatePresent == true && SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 2efbc396..f45c7d42 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -1038,6 +1038,36 @@ + + + When computing the digest for the file, it shall be computed over the entire file, including the signature + dictionary but excluding the PDF Signature itself. + doesByteRangeCoverEntireDocument == true + + ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + + + + + + + + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. + a single "SignerInfo" structure) in the PDF Signature. + signingCertificatePresent == true && SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 9c2970e1..c3bfa25e 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -1048,6 +1048,36 @@ + + + When computing the digest for the file, it shall be computed over the entire file, including the signature + dictionary but excluding the PDF Signature itself. + doesByteRangeCoverEntireDocument == true + + ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + + + + + + + + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. + a single "SignerInfo" structure) in the PDF Signature. + signingCertificatePresent == true && SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 82ed5fb4..555db90c 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -1048,6 +1048,36 @@ + + + When computing the digest for the file, it shall be computed over the entire file, including the signature + dictionary but excluding the PDF Signature itself. + doesByteRangeCoverEntireDocument == true + + ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + + + + + + + + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. + a single "SignerInfo" structure) in the PDF Signature. + signingCertificatePresent == true && SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index f5ea0721..45f4d06b 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -1038,6 +1038,36 @@ + + + When computing the digest for the file, it shall be computed over the entire file, including the signature + dictionary but excluding the PDF Signature itself. + doesByteRangeCoverEntireDocument == true + + ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + + + + + + + + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. + a single "SignerInfo" structure) in the PDF Signature. + signingCertificatePresent == true && SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 0e29135b..e1c093bc 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -1048,6 +1048,36 @@ + + + When computing the digest for the file, it shall be computed over the entire file, including the signature + dictionary but excluding the PDF Signature itself. + doesByteRangeCoverEntireDocument == true + + ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + + + + + + + + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. + a single "SignerInfo" structure) in the PDF Signature. + signingCertificatePresent == true && SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. @@ -1268,7 +1298,7 @@ pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-3U conforming file. conformance From 42d37bf5c27873b223c569f4398f42b0330283b9 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 13 Jun 2016 16:03:13 +0300 Subject: [PATCH 183/557] Removed redundant rule 6.7.3-2 (Type entry in the structure elements) --- .../verapdf-profile-6-7-3-t02.xml | 23 ------------------- PDF_A/PDFA-2A.xml | 12 ---------- PDF_A/PDFA-3A.xml | 12 ---------- 3 files changed, 47 deletions(-) delete mode 100644 PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml deleted file mode 100644 index 19d05276..00000000 --- a/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 19005-2:2011 - 6.7.3 Artefacts - Structure element type - Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem -
- - - - - Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem - Type == "StructElem" - - Missing or invalid Type entry in the structure element dictionary - - - - - - - - -
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index ba09f16d..a13f37ec 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1344,18 +1344,6 @@
- - - Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem - Type == "StructElem" - - Missing or invalid Type entry in the structure element dictionary - - - - - - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 555db90c..5df134d8 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1344,18 +1344,6 @@ - - - Each structure element dictionary in the structure hierarchy shall have a Type entry with the name value of StructElem - Type == "StructElem" - - Missing or invalid Type entry in the structure element dictionary - - - - - - The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. From c9856cd11c0689eecc259ead0fef12c2103fbdda Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 29 Jun 2016 13:38:10 +0300 Subject: [PATCH 184/557] Added rules for validating roles mapping --- .../verapdf-profile-6-8-3-t02.xml | 25 +++++++++++++++++++ .../verapdf-profile-6-7-3-t02.xml | 25 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml create mode 100644 PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml b/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml new file mode 100644 index 00000000..8f5b8411 --- /dev/null +++ b/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-1:2005 - 6.8.3 Artifacts - Standard roles + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as + defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. +
+ + + + + + + + +
diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml new file mode 100644 index 00000000..9c678143 --- /dev/null +++ b/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-1:2005 - 6.8.3 Artifacts - Standard roles + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as + defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. +
+ + + + + + + + +
From 8a3e98f0a0add88adb3f4871b2a7e683e40f9735 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Wed, 29 Jun 2016 15:42:56 +0300 Subject: [PATCH 185/557] Fixed missing quote --- .../6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml b/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml index 8f5b8411..d9251c45 100644 --- a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml +++ b/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml @@ -8,7 +8,7 @@ - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. standardType != null From b5bc7bef9bbe07caba14f3cfe60d18672416306e Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Wed, 29 Jun 2016 15:43:28 +0300 Subject: [PATCH 186/557] Fixed missing quote --- .../6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml index 9c678143..10675b94 100644 --- a/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml @@ -8,7 +8,7 @@ - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. standardType != null From 45941a77b6768ad8fa7404b9dc36105952d25ce3 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 29 Jun 2016 15:54:48 +0300 Subject: [PATCH 187/557] Update merged profiles --- PDF_A/PDFA-1A.xml | 15 ++++++++++++++- PDF_A/PDFA-2A.xml | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 7f95c438..3fedf9cb 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -1193,6 +1193,19 @@ + + + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as + defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. + standardType != null + + Non-standard structure type is not mapped to a standard type + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index a13f37ec..81b09366 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -1344,6 +1344,19 @@ + + + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as + defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + standardType != null + + Non-standard structure type is not mapped to a standard type + + + + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is From df8f6c342618d037078c5a9bfba5c700bcbb47ec Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 29 Jun 2016 15:55:16 +0300 Subject: [PATCH 188/557] Updated merged 3A profile --- PDF_A/PDFA-3A.xml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 5df134d8..a3277f29 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -1344,6 +1344,19 @@ + + + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as + defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + standardType != null + + Non-standard structure type is not mapped to a standard type + + + + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. From e72a63806a717c51b5f7fa57f056e59bbd393b16 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 29 Jun 2016 17:17:05 +0300 Subject: [PATCH 189/557] Added rules for validation permissions in PDF/A-2 and 3 --- .../verapdf-profile-6-1-12-t01.xml | 23 ++++++++++++++++ .../verapdf-profile-6-1-12-t02.xml | 25 +++++++++++++++++ PDF_A/PDFA-2A.xml | 27 ++++++++++++++++++- PDF_A/PDFA-2B.xml | 27 ++++++++++++++++++- PDF_A/PDFA-2U.xml | 27 ++++++++++++++++++- PDF_A/PDFA-3A.xml | 27 ++++++++++++++++++- PDF_A/PDFA-3B.xml | 27 ++++++++++++++++++- PDF_A/PDFA-3U.xml | 27 ++++++++++++++++++- 8 files changed, 204 insertions(+), 6 deletions(-) create mode 100644 PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml create mode 100644 PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml diff --git a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml new file mode 100644 index 00000000..db1e97b5 --- /dev/null +++ b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.1.12 Permissions - UR3 and DocMDP + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). +
+ + + + + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + containsOtherEntries == false + + The document permissions dictionary contains keys other than UR3 and DocMDP + + + + + + + + +
diff --git a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml new file mode 100644 index 00000000..c2aa83e3 --- /dev/null +++ b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.1.12 Permissions - Digest keys + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) + shall not contain the keys DigestLocation, DigestMethod, and DigestValue. +
+ + + + + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) + shall not contain the keys DigestLocation, DigestMethod, and DigestValue. + permsContainDocMDP == false || containsDigestEntries == false + + The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. + + + + + + + + +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 81b09366..83393d2e 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -186,6 +186,31 @@ + + + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + containsOtherEntries == false + + The document permissions dictionary contains keys other than UR3 and DocMDP + + + + + + + + + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) + shall not contain the keys DigestLocation, DigestMethod, and DigestValue. + permsContainDocMDP == false || containsDigestEntries == false + + The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index f45c7d42..5d2a1b1d 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -186,6 +186,31 @@ + + + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + containsOtherEntries == false + + The document permissions dictionary contains keys other than UR3 and DocMDP + + + + + + + + + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) + shall not contain the keys DigestLocation, DigestMethod, and DigestValue. + permsContainDocMDP == false || containsDigestEntries == false + + The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index c3bfa25e..8c0851aa 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -186,6 +186,31 @@ + + + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + containsOtherEntries == false + + The document permissions dictionary contains keys other than UR3 and DocMDP + + + + + + + + + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) + shall not contain the keys DigestLocation, DigestMethod, and DigestValue. + permsContainDocMDP == false || containsDigestEntries == false + + The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index a3277f29..dbd603ad 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -186,6 +186,31 @@ + + + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + containsOtherEntries == false + + The document permissions dictionary contains keys other than UR3 and DocMDP + + + + + + + + + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) + shall not contain the keys DigestLocation, DigestMethod, and DigestValue. + permsContainDocMDP == false || containsDigestEntries == false + + The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 45f4d06b..839846ba 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -186,6 +186,31 @@ + + + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + containsOtherEntries == false + + The document permissions dictionary contains keys other than UR3 and DocMDP + + + + + + + + + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) + shall not contain the keys DigestLocation, DigestMethod, and DigestValue. + permsContainDocMDP == false || containsDigestEntries == false + + The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index e1c093bc..2d0edf54 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -186,6 +186,31 @@ + + + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + containsOtherEntries == false + + The document permissions dictionary contains keys other than UR3 and DocMDP + + + + + + + + + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) + shall not contain the keys DigestLocation, DigestMethod, and DigestValue. + permsContainDocMDP == false || containsDigestEntries == false + + The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. + + + + + + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. From 083369632cf08e2496b90493a18fc1d60b5e6d37 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 30 Jun 2016 14:44:06 +0300 Subject: [PATCH 190/557] Fixed the issue with negative width and height of the page boundaries in the implementation limit check --- .../verapdf-profile-6-1-13-t11.xml | 2 +- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 6 +++--- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml index 9126b8eb..0dfb0342 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml @@ -11,7 +11,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. - top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the bage boundaries is out of range (3-14400) in one of the directions diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 83393d2e..b99d6c00 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -305,7 +305,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. - top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the bage boundaries is out of range (3-14400) in one of the directions diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 5d2a1b1d..144b7475 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -305,7 +305,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. - top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the bage boundaries is out of range (3-14400) in one of the directions diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 8c0851aa..14b44c59 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -305,7 +305,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. - top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the bage boundaries is out of range (3-14400) in one of the directions diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index dbd603ad..cacceef7 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -305,7 +305,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. - top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the bage boundaries is out of range (3-14400) in one of the directions diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 839846ba..2addd235 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -305,7 +305,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. - top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the bage boundaries is out of range (3-14400) in one of the directions diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 2d0edf54..3b406d98 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ - -
+ +
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -305,7 +305,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. - top - bottom >= 3 && top - bottom <= 14400 && right - left >= 3 && right - left <= 14400 + Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the bage boundaries is out of range (3-14400) in one of the directions From c1de461e53f4734be1dc1751e593ba7dadc7f6c1 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 1 Jul 2016 12:04:24 +0300 Subject: [PATCH 191/557] Fixed profile flavour --- PDF_A/PDFA-3U.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 3b406d98..b38252a4 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,5 +1,5 @@ - +
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U From cd1bdd6028966d78e912ac3dc1bea4dd3c479ad6 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 1 Jul 2016 14:14:23 +0300 Subject: [PATCH 192/557] Added new rules for checking file provenance info --- .../verapdf-profile-6-7-7-t01.xml | 25 +++++++++++++++++++ .../verapdf-profile-6-6-6-t01.xml | 25 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 PDF_A/1b/6.7 Metadata/6.7.7 File provenance information/verapdf-profile-6-7-7-t01.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.6 File provenance information/verapdf-profile-6-6-6-t01.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.7 File provenance information/verapdf-profile-6-7-7-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.7 File provenance information/verapdf-profile-6-7-7-t01.xml new file mode 100644 index 00000000..c385345b --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.7 File provenance information/verapdf-profile-6-7-7-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-1:2005 - 6.7.7 File provenance information + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. +
+ + + + + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. + (action != null) && (parameters != null) && (when != null) + + One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent + + + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.6 File provenance information/verapdf-profile-6-6-6-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.6 File provenance information/verapdf-profile-6-6-6-t01.xml new file mode 100644 index 00000000..e3605de9 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.6 File provenance information/verapdf-profile-6-6-6-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.6.6 File provenance information + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. +
+ + + + + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. + (action != null) && (parameters != null) && (when != null) + + One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent + + + + + + + + +
From 098f3c8b6fd898aef87599482d9e215dd49cfd9d Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 8 Jul 2016 16:27:46 +0300 Subject: [PATCH 193/557] Updated rules to check invisible fonts --- .../6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml | 7 ++++--- .../verapdf-profile-6-3-4-t01.xml | 2 +- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml | 2 +- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml | 2 +- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml | 2 +- .../verapdf-profile-6-2-11-6-t01.xml | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml index d36165f1..a059b34f 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml @@ -2,22 +2,23 @@
ISO 19005-1:2005 - 6.3.3 Composite fonts - CIDToGIDMap - For all Type 2 CIDFonts, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13
- For all Type 2 CIDFonts, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + diff --git a/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml index a8cb9aae..c1e4978a 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.4 Embedded font programs/verapdf-profile-6-3-4-t01.xml @@ -11,7 +11,7 @@ The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml index c1c74535..3f38abb0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml @@ -9,7 +9,7 @@ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml index 92e6c6e3..7cfd9f3d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml @@ -11,7 +11,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml index 983ff6ab..ce48bbf8 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml @@ -11,7 +11,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml index ca4be815..b0c2e671 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml @@ -11,7 +11,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 + isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables From 13f5464ac42fc68614a527ff68c8933be36c7d8a Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 8 Jul 2016 16:34:59 +0300 Subject: [PATCH 194/557] Updated merged profiles --- PDF_A/PDFA-1A.xml | 22 ++++++++++++++++++---- PDF_A/PDFA-1B.xml | 22 ++++++++++++++++++---- PDF_A/PDFA-2A.xml | 23 ++++++++++++++++++----- PDF_A/PDFA-2B.xml | 23 ++++++++++++++++++----- PDF_A/PDFA-2U.xml | 23 ++++++++++++++++++----- PDF_A/PDFA-3A.xml | 23 ++++++++++++++++++----- PDF_A/PDFA-3B.xml | 23 ++++++++++++++++++----- PDF_A/PDFA-3U.xml | 23 ++++++++++++++++++----- 8 files changed, 144 insertions(+), 38 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 3fedf9cb..1a97d019 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -626,15 +626,16 @@ - For all Type 2 CIDFonts, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + @@ -663,7 +664,7 @@ The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -1005,6 +1006,19 @@ + + + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. + (action != null) && (parameters != null) && (when != null) + + One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent + + + + + + Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 1ad89d2e..6d4ef665 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -626,15 +626,16 @@ - For all Type 2 CIDFonts, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + @@ -663,7 +664,7 @@ The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -1005,6 +1006,19 @@ + + + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. + (action != null) && (parameters != null) && (when != null) + + One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent + + + + + + Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index b99d6c00..66958170 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -829,7 +829,7 @@ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -853,7 +853,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -864,7 +864,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary @@ -886,7 +886,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 + isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1344,6 +1344,19 @@ + + + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. + (action != null) && (parameters != null) && (when != null) + + One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent + + + + + + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 144b7475..e00c2a6c 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -829,7 +829,7 @@ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -853,7 +853,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -864,7 +864,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary @@ -886,7 +886,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 + isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1334,6 +1334,19 @@ + + + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. + (action != null) && (parameters != null) && (when != null) + + One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent + + + + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 14b44c59..cce0ad20 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -829,7 +829,7 @@ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -853,7 +853,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -864,7 +864,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary @@ -886,7 +886,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 + isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1344,6 +1344,19 @@ + + + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. + (action != null) && (parameters != null) && (when != null) + + One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent + + + + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index cacceef7..ffb4e639 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -829,7 +829,7 @@ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -853,7 +853,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -864,7 +864,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary @@ -886,7 +886,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 + isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1344,6 +1344,19 @@ + + + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. + (action != null) && (parameters != null) && (when != null) + + One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent + + + + + + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 2addd235..ad7a550e 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -829,7 +829,7 @@ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -853,7 +853,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -864,7 +864,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary @@ -886,7 +886,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 + isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1334,6 +1334,19 @@ + + + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. + (action != null) && (parameters != null) && (when != null) + + One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent + + + + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index b38252a4..7ee58d3e 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -829,7 +829,7 @@ The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || fontFile_size == 1 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -853,7 +853,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -864,7 +864,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary @@ -886,7 +886,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 + isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1344,6 +1344,19 @@ + + + In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be + recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. + (action != null) && (parameters != null) && (when != null) + + One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent + + + + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. From 4d2da713d293000ad0ce1f07738bb450362dd613 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 5 Sep 2016 15:50:33 +0300 Subject: [PATCH 195/557] Removed the rules on File provenance info Discussed at veraPDF TWG and decided that the file provenance info contains requrements for the creating application rather than the document itself --- .../verapdf-profile-6-7-7-t01.xml | 25 ------------------- .../verapdf-profile-6-6-6-t01.xml | 25 ------------------- PDF_A/PDFA-1A.xml | 15 +---------- PDF_A/PDFA-1B.xml | 15 +---------- PDF_A/PDFA-2A.xml | 15 +---------- PDF_A/PDFA-2B.xml | 15 +---------- PDF_A/PDFA-2U.xml | 15 +---------- PDF_A/PDFA-3A.xml | 17 ++----------- PDF_A/PDFA-3B.xml | 15 +---------- PDF_A/PDFA-3U.xml | 17 ++----------- 10 files changed, 10 insertions(+), 164 deletions(-) delete mode 100644 PDF_A/1b/6.7 Metadata/6.7.7 File provenance information/verapdf-profile-6-7-7-t01.xml delete mode 100644 PDF_A/2b/6.6 Metadata/6.6.6 File provenance information/verapdf-profile-6-6-6-t01.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.7 File provenance information/verapdf-profile-6-7-7-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.7 File provenance information/verapdf-profile-6-7-7-t01.xml deleted file mode 100644 index c385345b..00000000 --- a/PDF_A/1b/6.7 Metadata/6.7.7 File provenance information/verapdf-profile-6-7-7-t01.xml +++ /dev/null @@ -1,25 +0,0 @@ - - -
- ISO 19005-1:2005 - 6.7.7 File provenance information - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. -
- - - - - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. - (action != null) && (parameters != null) && (when != null) - - One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent - - - - - - - - -
diff --git a/PDF_A/2b/6.6 Metadata/6.6.6 File provenance information/verapdf-profile-6-6-6-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.6 File provenance information/verapdf-profile-6-6-6-t01.xml deleted file mode 100644 index e3605de9..00000000 --- a/PDF_A/2b/6.6 Metadata/6.6.6 File provenance information/verapdf-profile-6-6-6-t01.xml +++ /dev/null @@ -1,25 +0,0 @@ - - -
- ISO 19005-2:2011 - 6.6.6 File provenance information - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. -
- - - - - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. - (action != null) && (parameters != null) && (when != null) - - One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent - - - - - - - - -
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 1a97d019..3693e199 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -1006,19 +1006,6 @@ - - - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. - (action != null) && (parameters != null) && (when != null) - - One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent - - - - - - Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 6d4ef665..e97a6768 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -1006,19 +1006,6 @@ - - - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. - (action != null) && (parameters != null) && (when != null) - - One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent - - - - - - Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 66958170..fb73cab4 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -1344,19 +1344,6 @@ - - - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. - (action != null) && (parameters != null) && (when != null) - - One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent - - - - - - The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index e00c2a6c..938598ea 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -1334,19 +1334,6 @@ - - - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. - (action != null) && (parameters != null) && (when != null) - - One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent - - - - - - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index cce0ad20..b5b6e4be 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -1344,19 +1344,6 @@ - - - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. - (action != null) && (parameters != null) && (when != null) - - One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent - - - - - - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ffb4e639..ef30b946 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ - -
+ +
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -1344,19 +1344,6 @@ - - - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. - (action != null) && (parameters != null) && (when != null) - - One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent - - - - - - The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index ad7a550e..689ae78e 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -1334,19 +1334,6 @@ - - - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. - (action != null) && (parameters != null) && (when != null) - - One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent - - - - - - The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 7ee58d3e..1fc4cd0a 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ - -
+ +
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -1344,19 +1344,6 @@ - - - In order to describe all high-level user actions taken to create, transform or otherwise instantiate a conforming file, each of those actions should be - recorded in the xmpMM:History property. For each action that is recorded the action, parameters and when fields shall be specified. - (action != null) && (parameters != null) && (when != null) - - One of the required properties (action, parameters, when) is missing in the xmpMM:History ResourceEvent - - - - - - The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. From 7ae7b30c54ff6c9856abe2d9ec80bf1f85729fdf Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 5 Sep 2016 15:54:54 +0300 Subject: [PATCH 196/557] Fixed flavour ID --- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ef30b946..067c8810 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,5 +1,5 @@ - +
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 1fc4cd0a..c37963cd 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,5 +1,5 @@ - +
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U From 7166a7d828670e804ad010fcd0d8f1f460474d8e Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 20 Oct 2016 12:48:25 +0300 Subject: [PATCH 197/557] Updated font subset and metrics consistence checks Now the checks for glyph presence in the subset and metrics consistence are ignored if the font is not embedded or is corrupt --- .../6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml | 2 +- .../6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml | 2 +- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml | 2 +- .../6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml | 2 +- PDF_A/PDFA-1A.xml | 6 +++--- PDF_A/PDFA-1B.xml | 6 +++--- PDF_A/PDFA-2A.xml | 6 +++--- PDF_A/PDFA-2B.xml | 6 +++--- PDF_A/PDFA-2U.xml | 6 +++--- PDF_A/PDFA-3A.xml | 6 +++--- PDF_A/PDFA-3B.xml | 6 +++--- PDF_A/PDFA-3U.xml | 6 +++--- 12 files changed, 28 insertions(+), 28 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml index 32f3d8ed..f231f2d7 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml @@ -11,7 +11,7 @@ The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3. - renderingMode == 3 || isGlyphPresent == true + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml index 35f411fa..0296552d 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml @@ -11,7 +11,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml index 0bab2aa6..2599613c 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml @@ -11,7 +11,7 @@ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. - renderingMode == 3 || isGlyphPresent == true + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml index e53f4267..9f42aef0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml @@ -11,7 +11,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 3693e199..2602434e 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -677,7 +677,7 @@ The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3. - renderingMode == 3 || isGlyphPresent == true + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -714,7 +714,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index e97a6768..6ef21bcc 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -677,7 +677,7 @@ The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3. - renderingMode == 3 || isGlyphPresent == true + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -714,7 +714,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index fb73cab4..62ba87dd 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -842,7 +842,7 @@ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. - renderingMode == 3 || isGlyphPresent == true + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -875,7 +875,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 938598ea..b83cabb1 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -842,7 +842,7 @@ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. - renderingMode == 3 || isGlyphPresent == true + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -875,7 +875,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index b5b6e4be..30daec5a 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -842,7 +842,7 @@ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. - renderingMode == 3 || isGlyphPresent == true + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -875,7 +875,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 067c8810..f88d754a 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -842,7 +842,7 @@ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. - renderingMode == 3 || isGlyphPresent == true + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -875,7 +875,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 689ae78e..a75b2407 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -842,7 +842,7 @@ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. - renderingMode == 3 || isGlyphPresent == true + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -875,7 +875,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index c37963cd..c21de6aa 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -842,7 +842,7 @@ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. - renderingMode == 3 || isGlyphPresent == true + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -875,7 +875,7 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == true + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary From 840b4431fe9bf004bcd3e20b278f39e5d1e41dc7 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 9 Nov 2016 15:59:07 +0300 Subject: [PATCH 198/557] Added a new rule on all embedded file to be associated with some part of the PDF document This requirement is not explicitly present in the ISO 19005-3, but is implied by the Annex E (confirmed by the veraPDF TWG). --- .../verapdf-profile-6-8-t04.xml | 23 +++++++++++++++++++ PDF_A/PDFA-3A.xml | 13 ++++++++++- PDF_A/PDFA-3B.xml | 13 ++++++++++- PDF_A/PDFA-3U.xml | 13 ++++++++++- 4 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml new file mode 100644 index 00000000..4804632c --- /dev/null +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-3:2012 - 6.8 Embedded files - AF arrays + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship + between the embedded file and the PDF document or the part of the PDF document with which it is associated. +
+ + + + + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship + between the embedded file and the PDF document or the part of the PDF document with which it is associated. + isAssociatedFile == true + + The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts + + + + + + +
diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index f88d754a..ff5a3fe6 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -1414,6 +1414,17 @@ + + + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship + between the embedded file and the PDF document or the part of the PDF document with which it is associated. + isAssociatedFile == true + + The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index a75b2407..afb33b95 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -1366,6 +1366,17 @@ + + + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship + between the embedded file and the PDF document or the part of the PDF document with which it is associated. + isAssociatedFile == true + + The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index c21de6aa..a9554b31 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -1376,6 +1376,17 @@ + + + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship + between the embedded file and the PDF document or the part of the PDF document with which it is associated. + isAssociatedFile == true + + The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the From a30e7aa8d1a45ef6ceb70303edfa5737a80dbc71 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 12 Dec 2016 18:10:48 +0300 Subject: [PATCH 199/557] Added unicode map rule to the PDF/A-1A validation profile --- .../verapdf-profile-6-3-8-t01.xml | 29 +++++++++++++++++++ .../verapdf-profile-6-8-t01.xml | 2 +- PDF_A/PDFA-1A.xml | 16 +++++++++- 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml diff --git a/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml b/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml new file mode 100644 index 00000000..ec315878 --- /dev/null +++ b/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-1:2008 - 6.3 Fonts - 6.3.8 Unicode character maps + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, + as described in PDF Reference 5.9, unless the font meets any of the following three conditions: + (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; + (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. +
+ + + + + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, + as described in PDF Reference 5.9, unless the font meets any of the following three conditions: + (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; + (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. + toUnicode != null + + The font does not define Unicode character map + + + + + + +
diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml index 8272d70b..2fe1ce4c 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml @@ -13,7 +13,7 @@ If the MIME type is not known, the "application/octet-stream" shall be used.
Subtype != null - An embedded file dictionary doe snot contain the MIME type information (Subtype entry) + An embedded file dictionary does not contain the MIME type information (Subtype entry) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 2602434e..58d7ee27 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -761,6 +761,20 @@ + + + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, + as described in PDF Reference 5.9, unless the font meets any of the following three conditions: + (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; + (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. + toUnicode != null + + The font does not define Unicode character map + + + + If an SMask key appears in an ExtGState dictionary, its value shall be None From b9b43d8802a612a7d6ad163d578fd6e17e58dcb0 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 22 Mar 2017 00:53:16 +0300 Subject: [PATCH 200/557] Fixed Registry and Ordering compatibility for composite fonts for PDF/A-1 (Corr.2) --- .../6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml | 6 ++++-- PDF_A/PDFA-1A.xml | 8 +++++--- PDF_A/PDFA-1B.xml | 8 +++++--- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml index 18f6b53c..6122e874 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml @@ -10,14 +10,16 @@ For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatible - areRegistryOrderingCompatible == true + CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries + for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. + cmapName == "Identity-H" || cmapName == "Identity-V" || areRegistryOrderingCompatible == true Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 58d7ee27..e343d740 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -614,14 +614,16 @@ For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatible - areRegistryOrderingCompatible == true + CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries + for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. + cmapName == "Identity-H" || cmapName == "Identity-V" || areRegistryOrderingCompatible == true Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 6ef21bcc..39b293d1 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -614,14 +614,16 @@ For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatible - areRegistryOrderingCompatible == true + CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries + for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. + cmapName == "Identity-H" || cmapName == "Identity-V" || areRegistryOrderingCompatible == true Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + From db46d2ff57de23e4dd21bfc6e3ef5d8d82418b0f Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Tue, 30 May 2017 13:03:59 +0300 Subject: [PATCH 201/557] Changed validation of schema fields and valueType fields in extension schema of xmp Metadata validation --- .../verapdf-profile-6-6-2-3-t03.xml | 16 ++++++++-------- .../verapdf-profile-6-6-2-3-t05.xml | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml index 7d33a0cb..24ce214f 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml @@ -2,21 +2,21 @@
ISO 19005-2:2011 - 6.7.8 Extension schemas - Extension schema definition - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType).
- The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && - (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && - (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" ) && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema" ) && + (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) Invalid Extension Schema definition diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml index 9aac17f1..547e48f5 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml @@ -17,7 +17,7 @@ pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). (isTypeValidText == true && typePrefix == "pdfaType" ) && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && fieldPrefix == "pdfaType") From cd0b553087686914ed44faba22f6620f921e5c11 Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Tue, 30 May 2017 15:23:28 +0300 Subject: [PATCH 202/557] merge profiles --- .../verapdf-profile-6-6-2-3-t03.xml | 6 +- .../verapdf-profile-6-6-2-3-t05.xml | 14 +-- PDF_A/PDFA-2A.xml | 110 +++++++++--------- PDF_A/PDFA-2B.xml | 108 ++++++++--------- PDF_A/PDFA-2U.xml | 108 ++++++++--------- PDF_A/PDFA-3A.xml | 108 ++++++++--------- PDF_A/PDFA-3B.xml | 108 ++++++++--------- PDF_A/PDFA-3U.xml | 108 ++++++++--------- 8 files changed, 335 insertions(+), 335 deletions(-) diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml index 24ce214f..73ad9079 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml @@ -13,9 +13,9 @@ The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" ) && - (isPrefixValidText == true && prefixPrefix == "pdfaSchema" ) && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml index 547e48f5..eedab0d2 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml @@ -3,8 +3,8 @@
ISO 19005-2:2011 - 6.6.2.3 Extension schemas - Extension schema ValueType type The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field).
@@ -12,13 +12,13 @@ The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && (isFieldValidSeq == true && fieldPrefix == "pdfaType") Invalid extension schema ValueType type definition diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 62ba87dd..b9a92e00 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -761,11 +761,11 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +776,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +789,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -840,7 +840,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +873,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +884,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +898,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -952,10 +952,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1054,7 +1054,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1105,7 +1105,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1182,7 +1182,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1199,7 +1199,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1210,7 +1210,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1221,13 +1221,13 @@ - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && - (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && - (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && + (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) Invalid Extension Schema definition @@ -1239,9 +1239,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1254,12 +1254,12 @@ The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType" ) && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && fieldPrefix == "pdfaType") @@ -1270,10 +1270,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1319,7 +1319,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "A" @@ -1332,8 +1332,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1358,7 +1358,7 @@ - The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. StructTreeRoot_size == 1 @@ -1405,7 +1405,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1416,7 +1416,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file. hasDuplicateName == false @@ -1427,7 +1427,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index b83cabb1..16107d94 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -761,11 +761,11 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +776,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +789,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -840,7 +840,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +873,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +884,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +898,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -942,10 +942,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1044,7 +1044,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1095,7 +1095,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1172,7 +1172,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1189,7 +1189,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1200,7 +1200,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1211,13 +1211,13 @@ - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && - (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && - (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" ) && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && + (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) Invalid Extension Schema definition @@ -1229,9 +1229,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1244,12 +1244,12 @@ The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType" ) && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && fieldPrefix == "pdfaType") @@ -1260,10 +1260,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1309,7 +1309,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "B" || conformance == "U" || conformance == "A" @@ -1322,8 +1322,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1357,7 +1357,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1368,7 +1368,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file. hasDuplicateName == false @@ -1379,7 +1379,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 30daec5a..00a0076a 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -761,11 +761,11 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +776,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +789,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -840,7 +840,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +873,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +884,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +898,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -952,10 +952,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1054,7 +1054,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1105,7 +1105,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1182,7 +1182,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1199,7 +1199,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1210,7 +1210,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1221,13 +1221,13 @@ - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && - (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && - (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && + (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) Invalid Extension Schema definition @@ -1239,9 +1239,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1254,12 +1254,12 @@ The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType" ) && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && fieldPrefix == "pdfaType") @@ -1270,10 +1270,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1319,7 +1319,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "U" || conformance == "A" @@ -1332,8 +1332,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1367,7 +1367,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1378,7 +1378,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file. hasDuplicateName == false @@ -1389,7 +1389,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ff5a3fe6..a8490b03 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -761,11 +761,11 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +776,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +789,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -840,7 +840,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +873,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +884,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +898,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -952,10 +952,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1054,7 +1054,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1105,7 +1105,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1182,7 +1182,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1199,7 +1199,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1210,7 +1210,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1221,13 +1221,13 @@ - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && - (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && - (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && + (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) Invalid Extension Schema definition @@ -1239,9 +1239,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1254,10 +1254,10 @@ The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType" ) && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && @@ -1270,10 +1270,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1319,7 +1319,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "A" @@ -1332,8 +1332,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1358,7 +1358,7 @@ - The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. StructTreeRoot_size == 1 @@ -1427,7 +1427,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1438,7 +1438,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file. hasDuplicateName == false @@ -1449,7 +1449,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index afb33b95..50493708 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -761,11 +761,11 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +776,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +789,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -840,7 +840,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +873,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +884,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +898,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -942,10 +942,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1044,7 +1044,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1095,7 +1095,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1172,7 +1172,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1189,7 +1189,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1200,7 +1200,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1211,13 +1211,13 @@ - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && - (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && - (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && + (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) Invalid Extension Schema definition @@ -1229,9 +1229,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1244,12 +1244,12 @@ The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType" ) && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && fieldPrefix == "pdfaType") @@ -1260,10 +1260,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1309,7 +1309,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "B" || conformance == "U" || conformance == "A" @@ -1322,8 +1322,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1379,7 +1379,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1390,7 +1390,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file. hasDuplicateName == false @@ -1401,7 +1401,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index a9554b31..b76d82b3 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -761,11 +761,11 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +776,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +789,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -840,7 +840,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +873,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +884,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +898,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -952,10 +952,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1054,7 +1054,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1105,7 +1105,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1182,7 +1182,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1199,7 +1199,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1210,7 +1210,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1221,13 +1221,13 @@ - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && - (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && - (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && + (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) Invalid Extension Schema definition @@ -1239,9 +1239,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1254,12 +1254,12 @@ The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType" ) && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && fieldPrefix == "pdfaType") @@ -1270,10 +1270,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1319,7 +1319,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "U" || conformance == "A" @@ -1332,8 +1332,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1389,7 +1389,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1400,7 +1400,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file. hasDuplicateName == false @@ -1411,7 +1411,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true From 1eab0a30c8475ea27c392e9e6309dbcb77b0c29b Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Tue, 30 May 2017 15:28:13 +0300 Subject: [PATCH 203/557] fix --- PDF_A/PDFA-3A.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index a8490b03..5e5006bb 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1224,7 +1224,7 @@ The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && @@ -1259,7 +1259,7 @@ pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). (isTypeValidText == true && typePrefix == "pdfaType" ) && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && fieldPrefix == "pdfaType") From 85504c0a6031e7986b5521bfd72adfacfc7d6b3a Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Wed, 31 May 2017 16:40:11 +0300 Subject: [PATCH 204/557] Fixed validation of valueType's field element --- .../6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml index eedab0d2..146eb79e 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml @@ -19,7 +19,7 @@ (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && - (isFieldValidSeq == true && fieldPrefix == "pdfaType") + (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index b9a92e00..781a3a4c 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1261,7 +1261,7 @@ (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && fieldPrefix == "pdfaType") + (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 16107d94..d750ea09 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1251,7 +1251,7 @@ (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && fieldPrefix == "pdfaType") + (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 00a0076a..8f9aad65 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1261,7 +1261,7 @@ (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && fieldPrefix == "pdfaType") + (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 5e5006bb..771a1942 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1261,7 +1261,7 @@ (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && fieldPrefix == "pdfaType") + (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 50493708..7aa59ada 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1251,7 +1251,7 @@ (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && fieldPrefix == "pdfaType") + (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index b76d82b3..5cfc2497 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1261,7 +1261,7 @@ (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && fieldPrefix == "pdfaType") + (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition From 50d6d7c6b74250ae387e3368e4f369c13ad442ec Mon Sep 17 00:00:00 2001 From: Maksim Bezrukov Date: Wed, 31 May 2017 18:08:40 +0300 Subject: [PATCH 205/557] Fixes for PDF/A-1 flavour --- .../verapdf-profile-6-7-8-t03.xml | 16 ++-- .../verapdf-profile-6-7-8-t05.xml | 16 ++-- PDF_A/PDFA-1A.xml | 94 +++++++++---------- PDF_A/PDFA-1B.xml | 92 +++++++++--------- 4 files changed, 109 insertions(+), 109 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml index cc5906d5..219a6e55 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml @@ -2,21 +2,21 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType).
- The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && - (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && - (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && + (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) Invalid Extension Schema definition diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml index ff3f5e55..e32f8d7e 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml @@ -3,8 +3,8 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field).
@@ -12,14 +12,14 @@ The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && + (isTypeValidText == true && typePrefix == "pdfaType") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && + (isPrefixValidText == true && prefixPrefix == "pdfaType") && (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && fieldPrefix == "pdfaType") + (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index e343d740..b79697ee 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -8,7 +8,7 @@ - The % character of the file header shall occur at byte offset 0 of the file. + The % character of the file header shall occur at byte offset 0 of the file. The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) @@ -21,7 +21,7 @@ - The file header line shall be immediately followed by a comment consisting of a % character followed by at + The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -63,7 +63,7 @@ - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical (isLinearized != true)|| lastID == null || (firstPageID == lastID) @@ -150,7 +150,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -338,7 +338,7 @@ - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 @@ -363,7 +363,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements @@ -406,7 +406,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) @@ -521,7 +521,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" @@ -537,10 +537,10 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -555,7 +555,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -571,7 +571,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null @@ -585,7 +585,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || LastChar != null @@ -599,7 +599,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) @@ -613,7 +613,7 @@ - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. cmapName == "Identity-H" || cmapName == "Identity-V" || areRegistryOrderingCompatible == true @@ -628,7 +628,7 @@ - For all Type 2 CIDFonts that are used for rendering, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 @@ -664,7 +664,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -677,7 +677,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -714,7 +714,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -765,7 +765,7 @@ - The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; @@ -801,7 +801,7 @@ - A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionary S != "Transparency" @@ -844,9 +844,9 @@ - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" @@ -892,8 +892,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) @@ -907,7 +907,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1036,7 +1036,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1049,13 +1049,13 @@ - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && - (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && - (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && + (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) Invalid Extension Schema definition @@ -1069,9 +1069,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1084,14 +1084,14 @@ The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && fieldPrefix == "pdfaType") + (isTypeValidText == true && typePrefix == "pdfaType") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && + (isPrefixValidText == true && prefixPrefix == "pdfaType") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && + (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition @@ -1100,10 +1100,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1128,7 +1128,7 @@ - Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true @@ -1175,8 +1175,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 39b293d1..d9260f4c 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -8,7 +8,7 @@ - The % character of the file header shall occur at byte offset 0 of the file. + The % character of the file header shall occur at byte offset 0 of the file. The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) @@ -21,7 +21,7 @@ - The file header line shall be immediately followed by a comment consisting of a % character followed by at + The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -63,7 +63,7 @@ - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical (isLinearized != true)|| lastID == null || (firstPageID == lastID) @@ -150,7 +150,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -338,7 +338,7 @@ - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 @@ -363,7 +363,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements @@ -406,7 +406,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) @@ -521,7 +521,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" @@ -537,10 +537,10 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -555,7 +555,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -571,7 +571,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null @@ -585,7 +585,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || LastChar != null @@ -599,7 +599,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) @@ -613,7 +613,7 @@ - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. cmapName == "Identity-H" || cmapName == "Identity-V" || areRegistryOrderingCompatible == true @@ -628,7 +628,7 @@ - For all Type 2 CIDFonts that are used for rendering, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 @@ -664,7 +664,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -677,7 +677,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -714,7 +714,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -787,7 +787,7 @@ - A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionary S != "Transparency" @@ -830,9 +830,9 @@ - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" @@ -878,8 +878,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) @@ -893,7 +893,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1022,7 +1022,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1035,13 +1035,13 @@ - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". + The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && (schemaPrefix == null || schemaPrefix == "pdfaSchema") ) && - (isNamespaceURIValidURI == true && ( (ExtensionSchemaProperties_size == 0 && namespaceURIPrefix == null) || namespaceURIPrefix == "pdfaSchema" ) ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaSchema") ) && - (isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") ) && + (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && + (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) Invalid Extension Schema definition @@ -1055,9 +1055,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1070,14 +1070,14 @@ The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), + types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". + The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && - (isPrefixValidText == true && (prefixPrefix == null || prefixPrefix == "pdfaType") ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && fieldPrefix == "pdfaType") + (isTypeValidText == true && typePrefix == "pdfaType") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && + (isPrefixValidText == true && prefixPrefix == "pdfaType") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && + (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition @@ -1086,10 +1086,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1114,7 +1114,7 @@ - Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true @@ -1161,8 +1161,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") From 80f183a87c590b7d741d2e87d502e7be294b5e17 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 31 May 2017 19:28:40 +0300 Subject: [PATCH 206/557] Implement TWG resolutions A014 (OpenType) and A025 (referenced CMaps) --- .../verapdf-profile-6-3-2-t07.xml | 30 ++++ .../verapdf-profile-6-2-11-2-t07.xml | 31 ++++ .../verapdf-profile-6-2-11-3-t01.xml | 2 +- .../verapdf-profile-6-2-11-3-t02.xml | 2 +- .../verapdf-profile-6-2-11-3-t03.xml | 2 +- .../verapdf-profile-6-2-11-3-t04.xml | 2 +- .../verapdf-profile-6-2-11-3-t05.xml | 38 +++++ PDF_A/PDFA-1A.xml | 88 ++++++----- PDF_A/PDFA-1B.xml | 86 ++++++----- PDF_A/PDFA-2A.xml | 142 +++++++++++------ PDF_A/PDFA-2B.xml | 142 +++++++++++------ PDF_A/PDFA-2U.xml | 140 +++++++++++------ PDF_A/PDFA-3A.xml | 146 ++++++++++++------ PDF_A/PDFA-3B.xml | 142 +++++++++++------ PDF_A/PDFA-3U.xml | 142 +++++++++++------ 15 files changed, 765 insertions(+), 370 deletions(-) create mode 100644 PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml create mode 100644 PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml create mode 100644 PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml new file mode 100644 index 00000000..63aa95e9 --- /dev/null +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-1:2005 - 6.3.2 Font types - embedded fond Subtype + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF). +
+ + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF). + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" + + Unsupported font file format of the embedded font + + + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml new file mode 100644 index 00000000..e3a11e72 --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml @@ -0,0 +1,31 @@ + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - embedded fond Subtype + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. +
+ + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + + Unsupported font file format of the embedded font + + + + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml index 438e2a46..324244d3 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDSystemInfo For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml index fc508145..456693f8 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-1:2005 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDToGIDMap ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml index df1e9d05..e53146c0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CMaps All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml index 225e5629..19994fc9 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - WMode For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml new file mode 100644 index 00000000..d93256cf --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml @@ -0,0 +1,38 @@ + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CMaps + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. +
+ + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" + + A CMap references another non-standard CMap + + + + + + + + +
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index b79697ee..68ea3ecd 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -8,7 +8,7 @@ - The % character of the file header shall occur at byte offset 0 of the file. + The % character of the file header shall occur at byte offset 0 of the file. The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) @@ -21,7 +21,7 @@ - The file header line shall be immediately followed by a comment consisting of a % character followed by at + The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -63,7 +63,7 @@ - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical (isLinearized != true)|| lastID == null || (firstPageID == lastID) @@ -150,7 +150,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -338,7 +338,7 @@ - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 @@ -363,7 +363,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements @@ -406,7 +406,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) @@ -521,7 +521,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" @@ -537,10 +537,10 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -555,7 +555,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -571,7 +571,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null @@ -585,7 +585,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || LastChar != null @@ -599,7 +599,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) @@ -611,9 +611,25 @@ + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF). + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" + + Unsupported font file format of the embedded font + + + + + + + - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. cmapName == "Identity-H" || cmapName == "Identity-V" || areRegistryOrderingCompatible == true @@ -628,7 +644,7 @@ - For all Type 2 CIDFonts that are used for rendering, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 @@ -664,7 +680,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -677,7 +693,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -714,7 +730,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -765,7 +781,7 @@ - The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; @@ -801,7 +817,7 @@ - A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionary S != "Transparency" @@ -844,9 +860,9 @@ - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" @@ -892,8 +908,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) @@ -907,7 +923,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1036,7 +1052,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1069,9 +1085,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1090,7 +1106,7 @@ (isTypeValidText == true && typePrefix == "pdfaType") && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition @@ -1100,10 +1116,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1128,7 +1144,7 @@ - Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true @@ -1175,8 +1191,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index d9260f4c..cfb13e16 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -8,7 +8,7 @@ - The % character of the file header shall occur at byte offset 0 of the file. + The % character of the file header shall occur at byte offset 0 of the file. The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) @@ -21,7 +21,7 @@ - The file header line shall be immediately followed by a comment consisting of a % character followed by at + The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -63,7 +63,7 @@ - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical (isLinearized != true)|| lastID == null || (firstPageID == lastID) @@ -150,7 +150,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -338,7 +338,7 @@ - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 @@ -363,7 +363,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements @@ -406,7 +406,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) @@ -521,7 +521,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" @@ -537,10 +537,10 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -555,7 +555,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -571,7 +571,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null @@ -585,7 +585,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || LastChar != null @@ -599,7 +599,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) @@ -611,9 +611,25 @@ + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF). + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" + + Unsupported font file format of the embedded font + + + + + + + - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. cmapName == "Identity-H" || cmapName == "Identity-V" || areRegistryOrderingCompatible == true @@ -628,7 +644,7 @@ - For all Type 2 CIDFonts that are used for rendering, the CIDFont dictionary shall contain a CIDToGIDMap entry that shall be a stream mapping + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 @@ -664,7 +680,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -677,7 +693,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -714,7 +730,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -787,7 +803,7 @@ - A Group object with an S key with a value of Transparency shall not be included in a form XObject. + A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionary S != "Transparency" @@ -830,9 +846,9 @@ - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" @@ -878,8 +894,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) @@ -893,7 +909,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1022,7 +1038,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1055,9 +1071,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1076,7 +1092,7 @@ (isTypeValidText == true && typePrefix == "pdfaType") && (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition @@ -1086,10 +1102,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1114,7 +1130,7 @@ - Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true @@ -1161,8 +1177,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 781a3a4c..df0365b1 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -759,13 +759,30 @@ + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + + Unsupported font file format of the embedded font + + + + + + + + - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +793,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +806,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -826,6 +843,33 @@ + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" + + A CMap references another non-standard CMap + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. @@ -840,7 +884,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +917,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +928,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +942,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -952,10 +996,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1054,7 +1098,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1105,7 +1149,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1182,7 +1226,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1199,7 +1243,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1210,7 +1254,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1239,9 +1283,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1257,10 +1301,10 @@ types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition @@ -1270,10 +1314,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1319,7 +1363,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "A" @@ -1332,8 +1376,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1358,7 +1402,7 @@ - The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. StructTreeRoot_size == 1 @@ -1405,7 +1449,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1416,7 +1460,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file. hasDuplicateName == false @@ -1427,7 +1471,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index d750ea09..7182ea35 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -759,13 +759,30 @@ + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + + Unsupported font file format of the embedded font + + + + + + + + - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +793,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +806,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -826,6 +843,33 @@ + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" + + A CMap references another non-standard CMap + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. @@ -840,7 +884,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +917,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +928,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +942,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -942,10 +986,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1044,7 +1088,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1095,7 +1139,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1172,7 +1216,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1189,7 +1233,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1200,7 +1244,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1215,7 +1259,7 @@ The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" ) && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) @@ -1229,9 +1273,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1247,10 +1291,10 @@ types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition @@ -1260,10 +1304,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1309,7 +1353,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "B" || conformance == "U" || conformance == "A" @@ -1322,8 +1366,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1357,7 +1401,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1368,7 +1412,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file. hasDuplicateName == false @@ -1379,7 +1423,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 8f9aad65..e8b6bd4b 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -759,13 +759,30 @@ + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + + Unsupported font file format of the embedded font + + + + + + + + - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +793,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +806,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -826,6 +843,33 @@ + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" + + A CMap references another non-standard CMap + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. @@ -840,7 +884,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +917,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +928,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +942,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -952,10 +996,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1054,7 +1098,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1105,7 +1149,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1182,7 +1226,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1199,7 +1243,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1210,7 +1254,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1239,9 +1283,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1257,10 +1301,10 @@ types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition @@ -1270,10 +1314,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1319,7 +1363,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "U" || conformance == "A" @@ -1332,8 +1376,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1367,7 +1411,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1378,7 +1422,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file. hasDuplicateName == false @@ -1389,7 +1433,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 771a1942..4548f77d 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -759,13 +759,30 @@ + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + + Unsupported font file format of the embedded font + + + + + + + + - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +793,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +806,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -826,6 +843,33 @@ + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" + + A CMap references another non-standard CMap + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. @@ -840,7 +884,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +917,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +928,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +942,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -952,10 +996,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1054,7 +1098,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1105,7 +1149,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1182,7 +1226,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1199,7 +1243,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1210,7 +1254,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1239,9 +1283,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1257,10 +1301,10 @@ types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition @@ -1270,10 +1314,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1319,7 +1363,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "A" @@ -1332,8 +1376,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1358,7 +1402,7 @@ - The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. StructTreeRoot_size == 1 @@ -1388,7 +1432,7 @@ If the MIME type is not known, the "application/octet-stream" shall be used. Subtype != null - An embedded file dictionary doe snot contain the MIME type information (Subtype entry) + An embedded file dictionary does not contain the MIME type information (Subtype entry) @@ -1427,7 +1471,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1438,8 +1482,8 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-2 file. + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-3 file. hasDuplicateName == false Optional content configuration dictionary has duplicated name @@ -1449,7 +1493,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 7aa59ada..4710b667 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -759,13 +759,30 @@ + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + + Unsupported font file format of the embedded font + + + + + + + + - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +793,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +806,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -826,6 +843,33 @@ + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" + + A CMap references another non-standard CMap + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. @@ -840,7 +884,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +917,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +928,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +942,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -942,10 +986,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1044,7 +1088,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1095,7 +1139,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1172,7 +1216,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1189,7 +1233,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1200,7 +1244,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1229,9 +1273,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1247,10 +1291,10 @@ types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition @@ -1260,10 +1304,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1309,7 +1353,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "B" || conformance == "U" || conformance == "A" @@ -1322,8 +1366,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1340,7 +1384,7 @@ If the MIME type is not known, the "application/octet-stream" shall be used. Subtype != null - An embedded file dictionary doe snot contain the MIME type information (Subtype entry) + An embedded file dictionary does not contain the MIME type information (Subtype entry) @@ -1379,7 +1423,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1390,7 +1434,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file. hasDuplicateName == false @@ -1401,7 +1445,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 5cfc2497..c0236b9a 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -8,7 +8,7 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) @@ -19,7 +19,7 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 @@ -105,7 +105,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -145,7 +145,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true @@ -158,7 +158,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. spacingCompliesPDFA @@ -170,7 +170,7 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || @@ -314,7 +314,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false @@ -338,7 +338,7 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 @@ -377,7 +377,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements @@ -389,7 +389,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and when overprinting for stroke or fill or both is set to true. overprintFlag == false || OPM == 0 @@ -541,7 +541,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false @@ -562,7 +562,7 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 @@ -683,7 +683,7 @@ in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" A Font dictionary has missing or invalid Subtype entry @@ -701,7 +701,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font Subtype == "Type3" || fontName != null @@ -759,13 +759,30 @@ + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + + Unsupported font file format of the embedded font + + + + + + + + - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) @@ -776,7 +793,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -789,7 +806,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -826,6 +843,33 @@ + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + 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-EUC-H" || CMapName == "GBK2K-EUC-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" + + A CMap references another non-standard CMap + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. @@ -840,7 +884,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -873,7 +917,7 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true @@ -884,7 +928,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 @@ -898,10 +942,10 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List @@ -952,10 +996,10 @@ Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" @@ -1054,7 +1098,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. XFA_size == 0 @@ -1105,7 +1149,7 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" @@ -1182,7 +1226,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid @@ -1199,7 +1243,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1210,7 +1254,7 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1239,9 +1283,9 @@ The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), + pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && + (isNameValidText == true && namePrefix == "pdfaProperty" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) @@ -1257,10 +1301,10 @@ types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType" ) && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" ) && + (isTypeValidText == true && typePrefix == "pdfaType") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) Invalid extension schema ValueType type definition @@ -1270,10 +1314,10 @@ - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && + (isNameValidText == true && namePrefix == "pdfaField" ) && (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) @@ -1319,7 +1363,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "U" || conformance == "A" @@ -1332,8 +1376,8 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), + The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && (amdPrefix == null || amdPrefix == "pdfaid") && @@ -1350,7 +1394,7 @@ If the MIME type is not known, the "application/octet-stream" shall be used. Subtype != null - An embedded file dictionary doe snot contain the MIME type information (Subtype entry) + An embedded file dictionary does not contain the MIME type information (Subtype entry) @@ -1389,7 +1433,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. Name != null && Name.length() > 0 @@ -1400,7 +1444,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file. hasDuplicateName == false @@ -1411,7 +1455,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. doesOrderContainAllOCGs == true From c1345dedec059c36be0188a99444c0b9dee23d10 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 12 Jun 2017 15:42:03 +0300 Subject: [PATCH 207/557] Updated the description of rule 6-8-2-t01 according to corrigendum 2 --- .../6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml | 4 ++-- PDF_A/PDFA-1A.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml b/PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml index 8b9cc683..e8a3b58d 100644 --- a/PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml +++ b/PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml @@ -2,13 +2,13 @@
ISO 19005-1:2005 - 6.8.2 Tagged PDF - 6.8.2.2 Mark information dictionary - The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true + The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true.
- The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true + The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true. Marked == true /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 68ea3ecd..1acdaf5a 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -1204,7 +1204,7 @@ - The document catalog dictionary shall include a MarkInfo dictionary whose sole entry, Marked, shall have a value of true + The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true. Marked == true /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false From 4c28d29a64641d64205cc9d897b83788bfd5d63c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 13 Jun 2017 12:43:31 +0300 Subject: [PATCH 208/557] Fixed misprint in the folder name --- .../6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml | 0 .../6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml | 0 .../6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml | 0 .../6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml | 0 .../6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml | 0 .../6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename PDF_A/1a/{6.8 Logical Strucure => 6.8 Logical Structure}/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml (100%) rename PDF_A/1a/{6.8 Logical Strucure => 6.8 Logical Structure}/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml (100%) rename PDF_A/1a/{6.8 Logical Strucure => 6.8 Logical Structure}/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml (100%) rename PDF_A/2a/{6.7 Logical Strucure => 6.7 Logical Structure}/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml (100%) rename PDF_A/2a/{6.7 Logical Strucure => 6.7 Logical Structure}/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml (100%) rename PDF_A/2a/{6.7 Logical Strucure => 6.7 Logical Structure}/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml (100%) diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml similarity index 100% rename from PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml rename to PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml similarity index 100% rename from PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml rename to PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml similarity index 100% rename from PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml rename to PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml similarity index 100% rename from PDF_A/2a/6.7 Logical Strucure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml rename to PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml similarity index 100% rename from PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml rename to PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml similarity index 100% rename from PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml rename to PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml From 4649da04c8e928dc3aadaca4cdeae8d7f374f49b Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 13 Jun 2017 15:38:09 +0300 Subject: [PATCH 209/557] Updated the description of the rule according to the TWG resolution --- .../verapdf-profile-6-2-4-2-t02.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml index 31091b01..b5f778a1 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml @@ -2,15 +2,17 @@
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased CMYK and OPM - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both.
- Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting From c1f3ecd4b6f2ed2d9184955455b724e2be746924 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 27 Jun 2017 14:13:35 +0300 Subject: [PATCH 210/557] Updated descriptions for several rules --- .../verapdf-profile-6-2-11-7-t01.xml | 12 +++++++++--- PDF_A/PDFA-2A.xml | 15 ++++++++++----- PDF_A/PDFA-2B.xml | 7 ++++--- PDF_A/PDFA-2U.xml | 15 ++++++++++----- PDF_A/PDFA-3A.xml | 17 +++++++++++------ PDF_A/PDFA-3B.xml | 7 ++++--- PDF_A/PDFA-3U.xml | 15 ++++++++++----- 7 files changed, 58 insertions(+), 30 deletions(-) diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml index 91add2c3..6be6e9ce 100644 --- a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml +++ b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml @@ -2,19 +2,25 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2:2011, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE.
- The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE. toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 The font does not define Unicode character map or some glyphs have invalid Unicode value - + + + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index df0365b1..f14576d4 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting @@ -974,13 +975,17 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE. toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 The font does not define Unicode character map or some glyphs have invalid Unicode value - + + + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 7182ea35..fb9430f0 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index e8b6bd4b..80551cca 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting @@ -974,13 +975,17 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE. toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 The font does not define Unicode character map or some glyphs have invalid Unicode value - + + + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 4548f77d..772a1c94 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting @@ -974,13 +975,17 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE. toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 The font does not define Unicode character map or some glyphs have invalid Unicode value - + + + @@ -1483,7 +1488,7 @@ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-3 file. + dictionaries within the PDF/A-2 file. hasDuplicateName == false Optional content configuration dictionary has duplicated name diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 4710b667..b5102a49 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index c0236b9a..9c979827 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting @@ -974,13 +975,17 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE. toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 The font does not define Unicode character map or some glyphs have invalid Unicode value - + + + From 946c4da551fda05f4b9e5e80cd80c687d446b516 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 27 Jun 2017 19:05:01 +0300 Subject: [PATCH 211/557] Updated Unicode map rules - split Level U conformance into two different rules - added new Level A rule on the use of Unicode PUA and Actual Text --- .../verapdf-profile-6-2-11-7-t03.xml | 29 ++++++++++++++++ .../verapdf-profile-6-2-11-7-t01.xml | 14 ++++---- .../verapdf-profile-6-2-11-7-t02.xml | 21 ++++++++++++ PDF_A/PDFA-2A.xml | 34 ++++++++++++++++--- PDF_A/PDFA-2U.xml | 19 ++++++++--- PDF_A/PDFA-3A.xml | 34 ++++++++++++++++--- PDF_A/PDFA-3U.xml | 19 ++++++++--- 7 files changed, 142 insertions(+), 28 deletions(-) create mode 100644 PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml create mode 100644 PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml diff --git a/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml new file mode 100644 index 00000000..12dbfd65 --- /dev/null +++ b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - Unicode PUA + For any character, regardless of its rendering mode, that is mapped to a code + or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in + ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a + character is a part. +
+ + + + + For any character, regardless of its rendering mode, that is mapped to a code + or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in + ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a + character is a part. + unicodePUA == false || actualTextPresent == true + + The character has Unicode value from Private Use Area, and no replacement text present + + + + + + + + +
diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml index 6be6e9ce..d014dd8e 100644 --- a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml +++ b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml @@ -1,21 +1,19 @@
- ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps + ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - Unicode mapping 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 ISO 19005-2:2011, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. + or other mechanisms as defined in ISO 19005-2:2011, 6.2.11.7.2.
- + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. - toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2. + toUnicode != null - The font does not define Unicode character map or some glyphs have invalid Unicode value + The glyph can not be mapped to Unicode diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml new file mode 100644 index 00000000..e9da03af --- /dev/null +++ b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - Valid Unicode values + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. +
+ + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The glyph has an invalid Unicode value + + + + + + +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index f14576d4..c3d5bf32 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -976,17 +976,41 @@ 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. - toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2. + toUnicode != null - The font does not define Unicode character map or some glyphs have invalid Unicode value + The glyph can not be mapped to Unicode + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The glyph has an invalid Unicode value + + + + + + + For any character, regardless of its rendering mode, that is mapped to a code + or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in + ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a + character is a part. + unicodePUA == false || actualTextPresent == true + + The character has Unicode value from Private Use Area, and no replacement text present + + + + + + A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 80551cca..d2c4396e 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -976,17 +976,26 @@ 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. - toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2. + toUnicode != null - The font does not define Unicode character map or some glyphs have invalid Unicode value + The glyph can not be mapped to Unicode + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The glyph has an invalid Unicode value + + + + A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 772a1c94..6144dde2 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -976,17 +976,41 @@ 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. - toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2. + toUnicode != null - The font does not define Unicode character map or some glyphs have invalid Unicode value + The glyph can not be mapped to Unicode + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The glyph has an invalid Unicode value + + + + + + + For any character, regardless of its rendering mode, that is mapped to a code + or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in + ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a + character is a part. + unicodePUA == false || actualTextPresent == true + + The character has Unicode value from Private Use Area, and no replacement text present + + + + + + A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 9c979827..d6a4cadb 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -976,17 +976,26 @@ 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. - toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2. + toUnicode != null - The font does not define Unicode character map or some glyphs have invalid Unicode value + The glyph can not be mapped to Unicode + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The glyph has an invalid Unicode value + + + + A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing From f12c54a42243a18515590b751b681ae770760105 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 27 Jun 2017 20:37:34 +0300 Subject: [PATCH 212/557] Fixced null check in the new Unicode invalid value rule --- .../verapdf-profile-6-2-11-7-t02.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml index e9da03af..5e654495 100644 --- a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml +++ b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml @@ -9,7 +9,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index c3d5bf32..7434247e 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -989,7 +989,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index d2c4396e..85ae3ba2 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -989,7 +989,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 6144dde2..19ac89a7 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -989,7 +989,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index d6a4cadb..89250e77 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -989,7 +989,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value From 0882598cd4bdbe503fa938772f58b84178cbb165 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 29 Jun 2017 11:00:19 +0300 Subject: [PATCH 213/557] Fixed 1 byte off in the implementation limits for strings --- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml index 29934f71..2dc844e0 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml @@ -9,7 +9,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 7434247e..a9ea7a31 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index fb9430f0..21d64b32 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 85ae3ba2..71d7ddbc 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 19ac89a7..9dc26f79 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index b5102a49..610f0b77 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 89250e77..91843f31 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded From c188942235bb2fc9466c4fd6e0e35d751374b55e Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 29 Jun 2017 11:47:40 +0300 Subject: [PATCH 214/557] Fixed the rule to check the implementation limits for CIDs It now checks not only CIDs of the glyphs used on the page, but also CIDs present in the CMap. --- .../verapdf-profile-6-1-13-t10.xml | 4 ++-- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml index 77455b68..9a2c69c8 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml @@ -6,10 +6,10 @@
- + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index a9ea7a31..d9dc1669 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 21d64b32..65030bac 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 71d7ddbc..136a7919 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 9dc26f79..cf33e790 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 610f0b77..df7b515b 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 91843f31..3ce0a110 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded From 788a0e50ad10f3e7089919d14a09a1c3834bf134 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 5 Jul 2017 12:23:50 +0300 Subject: [PATCH 215/557] Replance link Page.groupCS by a boolean property Page.containsGroupCS --- .../6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml index d05edfd5..f14e5747 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml @@ -13,7 +13,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index d9dc1669..f35dd668 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 65030bac..44dd854e 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 136a7919..02fafbc3 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index cf33e790..81de8411 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index df7b515b..7b676ec0 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 3ce0a110..4c32057f 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. From 9d88ea0bf3065acca221745851fef4c920cded8c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 5 Jul 2017 13:02:04 +0300 Subject: [PATCH 216/557] Minor date fix --- PDF_A/PDFA-2B.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 44dd854e..206d51e4 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
From 4971016b6d36c2343df6632f81ca3ac46ec609dd Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 14 Jul 2017 19:36:51 +0300 Subject: [PATCH 217/557] Added validation of the MIME type for embedded files --- PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml index 2fe1ce4c..46636752 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml @@ -11,9 +11,9 @@ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used. - Subtype != null + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - An embedded file dictionary does not contain the MIME type information (Subtype entry) + The MIME type information (Subtype entry) of an embedded file is missing or invalid diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 81de8411..ba306bf9 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1459,9 +1459,9 @@ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used. - Subtype != null + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - An embedded file dictionary does not contain the MIME type information (Subtype entry) + The MIME type information (Subtype entry) of an embedded file is missing or invalid diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 7b676ec0..d06a8687 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1383,9 +1383,9 @@ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used. - Subtype != null + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - An embedded file dictionary does not contain the MIME type information (Subtype entry) + The MIME type information (Subtype entry) of an embedded file is missing or invalid diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 4c32057f..71ec2d51 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1406,9 +1406,9 @@ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used. - Subtype != null + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - An embedded file dictionary does not contain the MIME type information (Subtype entry) + The MIME type information (Subtype entry) of an embedded file is missing or invalid From 036bbc867fa55e4cf3b6ededc100ad3903a02f0c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 14 Jul 2017 20:29:36 +0300 Subject: [PATCH 218/557] Added a new rule to validate TransferFunction in halftone dictionaries --- .../verapdf-profile-6-2-5-t01.xml | 4 ++-- .../verapdf-profile-6-2-5-t02.xml | 4 ++-- .../verapdf-profile-6-2-5-t03.xml | 4 ++-- .../verapdf-profile-6-2-5-t04.xml | 4 ++-- .../verapdf-profile-6-2-5-t05.xml | 4 ++-- .../verapdf-profile-6-2-5-t06.xml | 23 +++++++++++++++++++ PDF_A/PDFA-2A.xml | 14 ++++++++++- PDF_A/PDFA-2B.xml | 14 ++++++++++- PDF_A/PDFA-2U.xml | 14 ++++++++++- PDF_A/PDFA-3A.xml | 16 +++++++++++-- PDF_A/PDFA-3B.xml | 14 ++++++++++- PDF_A/PDFA-3U.xml | 16 +++++++++++-- 12 files changed, 113 insertions(+), 18 deletions(-) create mode 100644 PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml index 978c2c3f..4eff7529 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR key An ExtGState dictionary shall not contain the TR key @@ -7,7 +7,7 @@ - + An ExtGState dictionary shall not contain the TR key TR == null diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml index 75363502..4da97b19 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR2 key An ExtGState dictionary shall not contain the TR2 key with a value other than Default @@ -7,7 +7,7 @@ - + An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml index a29efd0b..3d646b1d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - HTP key An ExtGState dictionary shall not contain the HTP key @@ -7,7 +7,7 @@ - + An ExtGState dictionary shall not contain the HTP key HTP_size == 0 diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml index a01a2dcc..1f934ae2 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone type All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. @@ -7,7 +7,7 @@ - + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml index 874b0dfa..1f8ce48d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone name Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. @@ -7,7 +7,7 @@ - + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. HalftoneName == null diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml new file mode 100644 index 00000000..7a490fe1 --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - TransferFunction in halftones + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. +
+ + + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + + + +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index f35dd668..cbd0b9bf 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 206d51e4..a1f17895 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 02fafbc3..81994829 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ba306bf9..c5bb5dc5 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ - -
+ +
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d06a8687..cf978246 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 71ec2d51..4f94d65c 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ - -
+ +
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, From a4f353865c0055e712829e052c3f7afc95b7c922 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 18 Jul 2017 13:31:34 +0300 Subject: [PATCH 219/557] Fixed the desciption of the rule 6.3.5-1 in PDF/A-1 --- .../6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml | 8 +++----- PDF_A/PDFA-1A.xml | 5 ++--- PDF_A/PDFA-1B.xml | 5 ++--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml index f231f2d7..7467a1bb 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml @@ -1,16 +1,14 @@
- ISO 19005-1:2005 - 6.3.4 Embedded font programs - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3. + ISO 19005-1:2005 - 6.3.5 Font subsets + Embedded font programs shall define all font glyphs referenced for rendering with conforming file.
- The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3. + Embedded font programs shall define all font glyphs referenced for rendering with conforming file. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 1acdaf5a..6b10e9f1 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -693,8 +693,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3. + Embedded font programs shall define all font glyphs referenced for rendering with conforming file. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index cfb13e16..fa905092 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -693,8 +693,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3. + Embedded font programs shall define all font glyphs referenced for rendering with conforming file. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program From 06c986587d188c21c07f7442551eb8b34eba4a9b Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 19 Jul 2017 13:32:01 +0300 Subject: [PATCH 220/557] Fixed flavour names --- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index c5bb5dc5..65c8c676 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,5 +1,5 @@ - +
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 4f94d65c..c6438bbb 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,5 +1,5 @@ - +
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U From d26537b7103e8f99bf5eb064e881356b2366da2b Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 19 Jul 2017 15:32:35 +0300 Subject: [PATCH 221/557] Fixed rule 6.2.5-6 (TransferFunction in Halftones) --- .../verapdf-profile-6-2-5-t06.xml | 4 +++- PDF_A/PDFA-2A.xml | 6 ++++-- PDF_A/PDFA-2B.xml | 6 ++++-- PDF_A/PDFA-2U.xml | 6 ++++-- PDF_A/PDFA-3A.xml | 6 ++++-- PDF_A/PDFA-3B.xml | 6 ++++-- PDF_A/PDFA-3U.xml | 6 ++++-- 7 files changed, 27 insertions(+), 13 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml index 7a490fe1..cb7cf851 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -9,7 +9,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index cbd0b9bf..3fe649cb 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index a1f17895..7850ecf3 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 81994829..379983a9 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 65c8c676..1091be1c 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index cf978246..d33b5c0e 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index c6438bbb..692b2117 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary From 3c8dcff8338ccab396866d12c55a50867add758b Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 25 Jul 2017 15:40:14 +0300 Subject: [PATCH 222/557] Added deferred property for the rule to check if the embedded file is associated with any document content This flag 'deferred' indicates that the rule will be put on hold till all other non-deferred rules are checked. We can only say if the file is associated with any object in the document when we ended document parsting --- PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml index 4804632c..d50b6a3e 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml @@ -7,7 +7,7 @@
- + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated. diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 1091be1c..0370a488 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1501,7 +1501,7 @@
- + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d33b5c0e..e529ee53 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1425,7 +1425,7 @@ - + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 692b2117..99c91205 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1448,7 +1448,7 @@ - + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated. From b07862c061edd4ddc9aab687459121773d9a371d Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 25 Jul 2017 22:46:32 +0300 Subject: [PATCH 223/557] Added new rule to check Lang format --- .../verapdf-profile-6-7-3-t02.xml | 2 +- .../verapdf-profile-6-7-4-t01.xml | 30 +++++++++++++++++++ .../verapdf-profile-6-6-4-t03.xml | 25 ++++++++++++++++ PDF_A/PDFA-2A.xml | 18 ++++++++++- PDF_A/PDFA-3A.xml | 18 ++++++++++- 5 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml create mode 100644 PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml index 10675b94..add7df94 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.8.3 Artifacts - Standard roles + ISO 19005-2:2011 - 6.8.3 Artefacts - Standard roles All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root.
diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml new file mode 100644 index 00000000..d46b6288 --- /dev/null +++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-2:2011 - 6.7.4 Natural language specification + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. +
+ + + + + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. + value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + + Non-standard structure type is not mapped to a standard type + + + + + + + + + +
diff --git a/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml new file mode 100644 index 00000000..94d08899 --- /dev/null +++ b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Conformance level. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. +
+ + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-3A conforming file. + + conformance + + + + + + +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 3fe649cb..8f640cb8 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -1469,6 +1469,22 @@ + + + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. + value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + + Non-standard structure type is not mapped to a standard type + + + + + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 0370a488..344ecbde 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -1469,6 +1469,22 @@ + + + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. + value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + + Non-standard structure type is not mapped to a standard type + + + + + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. From 8290ed4e73a97406583f3f0dd30c643b07666a55 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 1 Aug 2017 08:33:44 +0300 Subject: [PATCH 224/557] Updated profiles accroding to the model changes These changes make strickter the checks on presense of certain keys in the dictionaries --- .../verapdf-profile-6-1-11-t01.xml | 2 +- .../verapdf-profile-6-1-11-t02.xml | 2 +- .../verapdf-profile-6-2-4-t02.xml | 2 +- .../verapdf-profile-6-2-5-t01.xml | 2 +- .../verapdf-profile-6-2-6-t01.xml | 2 +- .../verapdf-profile-6-6-2-t01.xml | 2 +- .../verapdf-profile-6-6-2-t02.xml | 2 +- .../verapdf-profile-6-6-2-t03.xml | 2 +- .../verapdf-profile-6-9-t02.xml | 2 +- .../verapdf-profile-6-9-t03.xml | 2 +- .../verapdf-profile-6-2-8-t02.xml | 2 +- .../verapdf-profile-6-2-9-t01.xml | 2 +- .../verapdf-profile-6-2-9-t02.xml | 2 +- .../verapdf-profile-6-4-1-t01.xml | 2 +- .../verapdf-profile-6-4-1-t02.xml | 2 +- .../verapdf-profile-6-5-2-t01.xml | 2 +- .../verapdf-profile-6-5-2-t02.xml | 2 +- .../verapdf-profile-6-8-t02.xml | 2 +- PDF_A/PDFA-1A.xml | 22 +++++++++---------- PDF_A/PDFA-1B.xml | 22 +++++++++---------- PDF_A/PDFA-2A.xml | 18 +++++++-------- PDF_A/PDFA-2B.xml | 18 +++++++-------- PDF_A/PDFA-2U.xml | 18 +++++++-------- PDF_A/PDFA-3A.xml | 18 +++++++-------- PDF_A/PDFA-3B.xml | 18 +++++++-------- PDF_A/PDFA-3U.xml | 18 +++++++-------- 26 files changed, 94 insertions(+), 94 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml index 3e4fc954..670b9106 100644 --- a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml @@ -9,7 +9,7 @@ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 + containsEF == false A file specification dictionary contains the EF key diff --git a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml index 98cf6e8f..a1429c8f 100644 --- a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml @@ -9,7 +9,7 @@ A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 + containsEmbeddedFiles == false The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml index 7df73363..e866ca89 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml @@ -9,7 +9,7 @@ An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( diff --git a/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml index 754b7dcf..53178898 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml @@ -9,7 +9,7 @@ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false The form XObject dictionary contains a PS key or Subtype2 key with value PS diff --git a/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml index f843774d..dae51e63 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml @@ -9,7 +9,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml index 01c3cd72..1fb6ee7b 100644 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 + Subtype != "Widget" || containsAA == false A Widget annotation contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml index 6fe43bc7..cf9dc95e 100644 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml @@ -9,7 +9,7 @@ A Field dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false A Field dictionary contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml index 12ba29b1..f1327977 100644 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml @@ -9,7 +9,7 @@ The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml index b9a89f25..92364464 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml index af71b353..96312d3d 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml index be4bb819..cceac047 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml @@ -9,7 +9,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml index 054f8dd2..f0d50909 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml @@ -9,7 +9,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml index 258b1691..e98f2c51 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml @@ -9,7 +9,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index 6ac90c39..60dfa819 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml index 50ddf87b..1d2f79ad 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml index 76efd892..422c6825 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml @@ -9,7 +9,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml index 14e41ca3..036a3553 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml @@ -9,7 +9,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml index 93f0ff67..7d3ab628 100644 --- a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml +++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml @@ -9,7 +9,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 6b10e9f1..425a1e4e 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -183,7 +183,7 @@ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 + containsEF == false A file specification dictionary contains the EF key @@ -195,7 +195,7 @@ A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 + containsEmbeddedFiles == false The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) @@ -430,7 +430,7 @@ An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -450,7 +450,7 @@ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false The form XObject dictionary contains a PS key or Subtype2 key with value PS @@ -460,7 +460,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -958,7 +958,7 @@ A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 + Subtype != "Widget" || containsAA == false A Widget annotation contains an additional-actions dictionary (AA entry) @@ -968,7 +968,7 @@ A Field dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false A Field dictionary contains an additional-actions dictionary (AA entry) @@ -978,7 +978,7 @@ The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1251,7 +1251,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1261,7 +1261,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index fa905092..89cae118 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -183,7 +183,7 @@ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 + containsEF == false A file specification dictionary contains the EF key @@ -195,7 +195,7 @@ A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 + containsEmbeddedFiles == false The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) @@ -430,7 +430,7 @@ An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -450,7 +450,7 @@ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false The form XObject dictionary contains a PS key or Subtype2 key with value PS @@ -460,7 +460,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -944,7 +944,7 @@ A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 + Subtype != "Widget" || containsAA == false A Widget annotation contains an additional-actions dictionary (AA entry) @@ -954,7 +954,7 @@ A Field dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false A Field dictionary contains an additional-actions dictionary (AA entry) @@ -964,7 +964,7 @@ The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1200,7 +1200,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1210,7 +1210,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 8f640cb8..6b105f01 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1112,7 +1112,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1122,7 +1122,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1218,7 +1218,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1228,7 +1228,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1499,7 +1499,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 7850ecf3..654f50f1 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1074,7 +1074,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1084,7 +1084,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1180,7 +1180,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1190,7 +1190,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1407,7 +1407,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 379983a9..610a78b1 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1097,7 +1097,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1107,7 +1107,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1203,7 +1203,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1213,7 +1213,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1430,7 +1430,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 344ecbde..a7b522f5 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1112,7 +1112,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1122,7 +1122,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1218,7 +1218,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1228,7 +1228,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1499,7 +1499,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index e529ee53..d94237fa 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1074,7 +1074,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1084,7 +1084,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1180,7 +1180,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1190,7 +1190,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1407,7 +1407,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 99c91205..7e293cb5 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1097,7 +1097,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1107,7 +1107,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1203,7 +1203,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1213,7 +1213,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1430,7 +1430,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key From c87a671a1c823539650fe08ff7005e576f8ae0fa Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 1 Aug 2017 17:54:48 +0300 Subject: [PATCH 225/557] Final fix for stricter checks on presence of certtain keys in dictionaries --- .../6.2.4 Images/verapdf-profile-6-2-4-t01.xml | 2 +- .../6.6.1 General/verapdf-profile-6-6-1-t03.xml | 2 +- .../verapdf-profile-6-9-t02.xml | 2 +- .../verapdf-profile-6-2-11-6-t01.xml | 2 +- .../verapdf-profile-6-2-3-t03.xml | 2 +- .../verapdf-profile-6-2-5-t03.xml | 2 +- .../6.2.8.1 General/verapdf-profile-6-2-8-t01.xml | 2 +- .../6.4.1 General/verapdf-profile-6-4-1-t01.xml | 2 +- .../6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml | 2 +- PDF_A/PDFA-1A.xml | 8 ++++---- PDF_A/PDFA-1B.xml | 8 ++++---- PDF_A/PDFA-2A.xml | 14 +++++++------- PDF_A/PDFA-2B.xml | 14 +++++++------- PDF_A/PDFA-2U.xml | 14 +++++++------- PDF_A/PDFA-3A.xml | 14 +++++++------- PDF_A/PDFA-3B.xml | 14 +++++++------- PDF_A/PDFA-3U.xml | 14 +++++++------- 17 files changed, 59 insertions(+), 59 deletions(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml index 65c33d4d..7fb0bcd4 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml @@ -9,7 +9,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml index 044201fc..f695ac5d 100644 --- a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml @@ -9,7 +9,7 @@ Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 + Subtype != "Widget" || containsA == false Interactive form field contains an action object ('A' key) diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml index 92364464..bb140aae 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml index b0c2e671..d321a66f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml @@ -11,7 +11,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index 8bda2ece..82483235 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -9,7 +9,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml index 3d646b1d..a5f5725b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml @@ -9,7 +9,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml index 34314102..d4d677d7 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml @@ -9,7 +9,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index 60dfa819..a4baa767 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml index 9b718015..995aec4d 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml @@ -11,7 +11,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 425a1e4e..bc0c6347 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -420,7 +420,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -948,7 +948,7 @@ Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 + Subtype != "Widget" || containsA == false Interactive form field contains an action object ('A' key) @@ -1251,7 +1251,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 89cae118..7f53a106 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -420,7 +420,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -934,7 +934,7 @@ Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 + Subtype != "Widget" || containsA == false Interactive form field contains an action object ('A' key) @@ -1200,7 +1200,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 6b105f01..d0e37baa 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1112,7 +1112,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1143,7 +1143,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 654f50f1..1d3d8a4f 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1074,7 +1074,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1105,7 +1105,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 610a78b1..1f40487c 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1097,7 +1097,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1128,7 +1128,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index a7b522f5..12651b83 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1112,7 +1112,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1143,7 +1143,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d94237fa..850d9e03 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1074,7 +1074,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1105,7 +1105,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 7e293cb5..98b832fa 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1097,7 +1097,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1128,7 +1128,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key From fd980c05f96dab48305f463dd80daf0be3363b10 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 7 Aug 2017 12:11:50 +0300 Subject: [PATCH 226/557] Fixed names of the GBK2K-H and GBK2K-V predefined CMaps --- .../verapdf-profile-6-2-11-3-t03.xml | 2 +- .../verapdf-profile-6-2-11-3-t05.xml | 2 +- PDF_A/PDFA-2A.xml | 6 +++--- PDF_A/PDFA-2B.xml | 6 +++--- PDF_A/PDFA-2U.xml | 6 +++--- PDF_A/PDFA-3A.xml | 6 +++--- PDF_A/PDFA-3B.xml | 6 +++--- PDF_A/PDFA-3U.xml | 6 +++--- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml index e53146c0..02c7bba0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml @@ -13,7 +13,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml index d93256cf..df073c74 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml @@ -11,7 +11,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index d0e37baa..5218be99 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 1d3d8a4f..30db2b99 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 1f40487c..33a79ef7 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 12651b83..ded1a846 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 850d9e03..d5ca6ae7 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 98b832fa..a6ea03c9 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || From a24ef88674f75a9cb2c169c4c329e7532985f2f9 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 7 Aug 2017 14:17:13 +0300 Subject: [PATCH 227/557] Restricted rule 6.2.3-3 to PDF/X OutputIntents --- .../6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml | 2 +- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index 82483235..9ef6be88 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -9,7 +9,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 5218be99..d38fa860 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 30db2b99..58e5e080 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 33a79ef7..f612793b 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ded1a846..605827a6 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d5ca6ae7..354a1a15 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index a6ea03c9..f1edd940 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef From 9a8cf7edc27961ef8858b25298d2cfacd66155c6 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 8 Aug 2017 17:40:17 +0300 Subject: [PATCH 228/557] restricted the PDF/A-2 checks on CharSet/CIDSet to font subsets --- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml | 4 ++-- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml | 4 ++-- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml | 6 +++--- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml | 6 +++--- PDF_A/PDFA-2A.xml | 6 +++--- PDF_A/PDFA-2B.xml | 6 +++--- PDF_A/PDFA-2U.xml | 6 +++--- PDF_A/PDFA-3A.xml | 6 +++--- PDF_A/PDFA-3B.xml | 6 +++--- PDF_A/PDFA-3U.xml | 6 +++--- 10 files changed, 28 insertions(+), 28 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml index 3f38abb0..82c2ae42 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - General The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. @@ -7,7 +7,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml index 2599613c..1075c2dd 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - Glyphs Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely @@ -8,7 +8,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml index 7cfd9f3d..a97eac51 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CharSet entry in Type1 fonts If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs @@ -8,10 +8,10 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml index ce48bbf8..a8dd57b8 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CIDSet entry in CID Fonts If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, @@ -8,10 +8,10 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index d38fa860..e3199205 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 58e5e080..547f8635 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index f612793b..df023ab3 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 605827a6..54275e80 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 354a1a15..66e01f11 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index f1edd940..4bbe5211 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary From 7b6a2fe99aa3d311ac6663561a911382d5326786 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 25 Aug 2017 11:03:01 +0300 Subject: [PATCH 229/557] Removed rule 6.3.2-3 fromPDF/A-2(3) validation profiles This is only a 'should' clause in ISO 19005-2(3) --- .../verapdf-profile-6-3-2-t03.xml | 21 ---------------- .../verapdf-profile-6-6-4-t03.xml | 2 +- .../verapdf-profile-6-6-4-t03.xml | 25 +++++++++++++++++++ .../verapdf-profile-6-6-4-t03.xml | 25 +++++++++++++++++++ PDF_A/PDFA-2A.xml | 12 +-------- PDF_A/PDFA-2B.xml | 14 ++--------- PDF_A/PDFA-2U.xml | 12 +-------- PDF_A/PDFA-3A.xml | 12 +-------- PDF_A/PDFA-3B.xml | 12 +-------- PDF_A/PDFA-3U.xml | 12 +-------- 10 files changed, 58 insertions(+), 89 deletions(-) delete mode 100644 PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml create mode 100644 PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml create mode 100644 PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml deleted file mode 100644 index 280efa87..00000000 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - Flags of Text annotations - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. -
- - - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - - - -
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 81f524b9..b36d68c7 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -13,7 +13,7 @@ pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "B" || conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file. conformance diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml new file mode 100644 index 00000000..059da05e --- /dev/null +++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. +
+ + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "B" || conformance == "U" || conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-3B conforming file. + + conformance + + + + + + +
diff --git a/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml new file mode 100644 index 00000000..b9b33d13 --- /dev/null +++ b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. +
+ + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "U" || conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-3U conforming file. + + conformance + + + + + + +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index e3199205..90ae823f 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -1073,16 +1073,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 547f8635..3032eb24 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -1035,16 +1035,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, @@ -1372,7 +1362,7 @@ pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "B" || conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file. conformance diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index df023ab3..cd15b1ed 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -1058,16 +1058,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 54275e80..e087eb42 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -1073,16 +1073,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 66e01f11..d5035fa5 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -1035,16 +1035,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 4bbe5211..2531fbb4 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -1058,16 +1058,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, From 2cccc3a5c51cc88a8ba6bf9fc6e59d3942b72cee Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 6 Sep 2017 16:13:19 +0300 Subject: [PATCH 230/557] Fixed validation of maximal CID value in PDF/A-1 --- .../verapdf-profile-6-1-12-t10.xml | 5 +++-- PDF_A/PDFA-1A.xml | 6 +++--- PDF_A/PDFA-1B.xml | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml index 46bebd1a..3731dca9 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml @@ -6,10 +6,10 @@
- + Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65,535) is exceeded @@ -21,3 +21,4 @@
+ diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index bc0c6347..bfe454e0 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -314,10 +314,10 @@ - + Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65,535) is exceeded diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 7f53a106..5ec1e145 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -314,10 +314,10 @@ - + Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65,535) is exceeded From 37c72d7bec4e3a70b89ccc4618613a3cbf91ba37 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Thu, 16 Nov 2017 14:57:29 +0300 Subject: [PATCH 231/557] Checked the rule to check for SMask entry in XObjects. Now we check it if the value of this entry has an arbitrary type --- PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml index a4d041a8..551a8b58 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml @@ -9,7 +9,7 @@ An XObject dictionary shall not contain the SMask key - SMask_size == 0 + containsSMask == false An XObject contains an SMask key diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index bfe454e0..599c70e8 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -805,7 +805,7 @@ An XObject dictionary shall not contain the SMask key - SMask_size == 0 + containsSMask == false An XObject contains an SMask key diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 5ec1e145..0ddbad94 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -791,7 +791,7 @@ An XObject dictionary shall not contain the SMask key - SMask_size == 0 + containsSMask == false An XObject contains an SMask key From 4810035eb1fbf84263501d689216e64fa0f95083 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Fri, 27 Jul 2018 13:36:19 +0300 Subject: [PATCH 232/557] Fixed misprint in the ICC profile color space marker: "LAB " -> "Lab " --- .../6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml | 2 +- .../6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml | 2 +- .../verapdf-profile-6-2-4-2-t01.xml | 2 +- PDF_A/PDFA-1A.xml | 4 ++-- PDF_A/PDFA-1B.xml | 4 ++-- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml index 39e6c892..38af2034 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml @@ -10,7 +10,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml index fe84ea45..e6022c20 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml @@ -13,7 +13,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml index f848f5d9..82d1a5e5 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml @@ -10,7 +10,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 599c70e8..5ce65568 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -364,7 +364,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements @@ -408,7 +408,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 0ddbad94..ecb8ae20 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -364,7 +364,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements @@ -408,7 +408,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 90ae823f..429b7140 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 3032eb24..f443147e 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index cd15b1ed..8d0f15f1 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index e087eb42..ee042e90 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d5035fa5..02452bef 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 2531fbb4..4145fb7f 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements From 1e1e4597f210ed842065d8ef00e4bb02e17802b2 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Wed, 9 Jan 2019 16:59:58 +0300 Subject: [PATCH 233/557] Fixed specification references --- .../6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index 9ef6be88..9d6401b8 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.3 Output intent - DestOutputProfileRef entry In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. @@ -7,7 +7,7 @@ - + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. S != 'GTS_PDFX' || containsDestOutputProfileRef == false @@ -15,7 +15,7 @@ - + From b38793bd967ea4ace9412c03222cc2fa361a5e63 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Tue, 11 Feb 2020 16:21:23 +0300 Subject: [PATCH 234/557] Fix #906 --- .../verapdf-profile-6-6-2-1-t05.xml | 23 +++++++++++++++++++ PDF_A/PDFA-2A.xml | 12 ++++++++++ PDF_A/PDFA-2B.xml | 12 ++++++++++ PDF_A/PDFA-2U.xml | 12 ++++++++++ PDF_A/PDFA-3A.xml | 14 ++++++++++- PDF_A/PDFA-3B.xml | 14 ++++++++++- PDF_A/PDFA-3U.xml | 14 ++++++++++- 7 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml new file mode 100644 index 00000000..53b51d44 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.1 General - Conforms to XMP Specification. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. +
+ + + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + + + +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 429b7140..9436d192 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1273,6 +1273,18 @@ + + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index f443147e..a0b39d53 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1235,6 +1235,18 @@ + + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 8d0f15f1..dca3205d 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1258,6 +1258,18 @@ + + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ee042e90..9a2ae44e 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1274,7 +1274,19 @@ - + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 02452bef..fda5a611 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1236,7 +1236,19 @@ - + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 4145fb7f..44dcc2fc 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1259,7 +1259,19 @@ - + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. From 69af28647dd5bb6f09b77fa44b69cb44baf3d8e8 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Tue, 11 Feb 2020 17:35:59 +0300 Subject: [PATCH 235/557] Added check that the annotation appearance dictionary is not empty --- .../6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml | 2 +- .../6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml index b52f88b5..54ff6626 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml @@ -14,7 +14,7 @@ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml index c1e504d9..55ee99e1 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -14,7 +14,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 5ce65568..88c641ed 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -911,7 +911,7 @@ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index ecb8ae20..5bef7cb0 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -897,7 +897,7 @@ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 9436d192..51b83606 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1092,7 +1092,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index a0b39d53..f6042da2 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1054,7 +1054,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index dca3205d..405e9607 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1077,7 +1077,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 9a2ae44e..58fde3c9 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1092,7 +1092,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index fda5a611..4ed79ef4 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1054,7 +1054,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 44dcc2fc..5a2dd64c 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1077,7 +1077,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type From fc738e0b45f49189c29044dff59112ca00241e68 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 4 Mar 2020 16:05:56 +0300 Subject: [PATCH 236/557] PDF/UA validation. Rules 5.1, 5.2, 7.1.4, 7.1.9, 7.1.10. Added new profiles. --- .../verapdf-profile-5-t01.xml | 21 ++++++++++++++++ .../verapdf-profile-5-t02.xml | 24 +++++++++++++++++++ .../1/7.1 General/verapdf-profile-7-1-t04.xml | 23 ++++++++++++++++++ .../1/7.1 General/verapdf-profile-7-1-t09.xml | 21 ++++++++++++++++ .../1/7.1 General/verapdf-profile-7-1-t10.xml | 20 ++++++++++++++++ 5 files changed, 109 insertions(+) create mode 100644 PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml create mode 100644 PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml new file mode 100644 index 00000000..d211bbdc --- /dev/null +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO/FDIS 14289-1:2013 - 5 Version identification - PDF/UA Identification Schema. + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. +
+ + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + UAIdentification_size == 1 + + The document metadata stream doesn't contains PDF/UA Identification Schema. + + + + + + +
diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml new file mode 100644 index 00000000..e584a5a8 --- /dev/null +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml @@ -0,0 +1,24 @@ + + +
+ ISO/FDIS 14289-1:2013 - 5 Version identification - Part number. + The value of pdfuaid:part shall be the part number of the International Standard to which the file + conforms. +
+ + + + + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. + part == 1 + + The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA conforming file. + + part + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml new file mode 100644 index 00000000..ffd4be5c --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml @@ -0,0 +1,23 @@ + + +
+ ISO/FDIS 14289-1:2013 - 7.1 General - 7.1.4 Suspects + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. +
+ + + + + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. + Suspects == false + + /Suspects entry of the MarkInfo dictionary is not present in the document catalog or is set to true + + + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml new file mode 100644 index 00000000..fe0fdca3 --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml @@ -0,0 +1,21 @@ + + +
+ ISO/FDIS 14289-1:2013 - 5 Version identification - PDF/UA Identification Schema. + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. +
+ + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + containsDc_title == true + + The document metadata stream doesn't contains PDF/UA Identification Schema. + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml new file mode 100644 index 00000000..9a6260b5 --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml @@ -0,0 +1,20 @@ + + +
+ ISO/FDIS 14289-1:2013 - 7.1 General - 7.1.10 DisplayDocTitle + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. +
+ + + + + The document catalog dictionary shall include a MarkInfo dictionary containing a DisplayDocTitle key, whose value shall be true. + DisplayDocTitle == true + + /DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true + + + + + +
From 6d0b7fc4c88661f262d54c7c4a8a8fe5f80ac38a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 6 Mar 2020 16:06:50 +0300 Subject: [PATCH 237/557] PDF/UA validation. Rule 7.18.1. Added new profile. --- .../verapdf-profile-7-18-t01.xml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml diff --git a/PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml b/PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml new file mode 100644 index 00000000..23df9181 --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO/FDIS 14289-1:2013 - 7.18 Annotations - PDF/UA Identification Schema. + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. +
+ + + + + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. + annots_size == 0 || Tabs == 'S' + + A page containing an annotation does not contain a Tabs key or has a Tabs key with a value other than S. + + + + + + +
From 87ccb4b819877062b5bc85b8e9b2bbc5d2dce8c9 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Thu, 12 Mar 2020 15:08:27 +0300 Subject: [PATCH 238/557] Fixed Unicode value for Lang entry --- .../verapdf-profile-6-7-4-t01.xml | 6 +++--- PDF_A/PDFA-2A.xml | 6 +++--- PDF_A/PDFA-3A.xml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml index d46b6288..da30c423 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml @@ -11,13 +11,13 @@ - If the Lang entry is present in the document’s Catalog dictionary or in a structure element dictionary or + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) - Non-standard structure type is not mapped to a standard type + The Lang value is invalid diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 51b83606..efbf5658 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1473,13 +1473,13 @@ - If the Lang entry is present in the document’s Catalog dictionary or in a structure element dictionary or + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) - Non-standard structure type is not mapped to a standard type + The Lang value is invalid diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 58fde3c9..1fcfb7ff 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1473,13 +1473,13 @@ - If the Lang entry is present in the document’s Catalog dictionary or in a structure element dictionary or + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) - Non-standard structure type is not mapped to a standard type + The Lang value is invalid From 5a13fc1f484bcd45de84b93aed52f613ee9f3927 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Thu, 12 Mar 2020 16:01:54 +0300 Subject: [PATCH 239/557] Final fix of the CosLang validation rule --- .../verapdf-profile-6-7-4-t01.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml index da30c423..63567f71 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml @@ -15,7 +15,7 @@ property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) The Lang value is invalid diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index efbf5658..28af8482 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1477,7 +1477,7 @@ property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) The Lang value is invalid diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 1fcfb7ff..0a3fcf87 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1477,7 +1477,7 @@ property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) The Lang value is invalid From cb174ea49a335ae0ebd168add07140e78208f8e5 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 16 Mar 2020 16:13:14 +0300 Subject: [PATCH 240/557] Fixed profiles. --- .../verapdf-profile-5-t01.xml | 8 ++++---- .../verapdf-profile-5-t02.xml | 8 ++++---- PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml | 10 +++++----- PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml | 14 +++++++------- PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml | 10 +++++----- .../verapdf-profile-7-18-3-t01.xml} | 8 ++++---- 6 files changed, 29 insertions(+), 29 deletions(-) rename PDF_UA/1/7.18 Annotations/{verapdf-profile-7-18-t01.xml => 7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml} (71%) diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml index d211bbdc..79ac6acb 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml @@ -1,13 +1,13 @@ - -
- ISO/FDIS 14289-1:2013 - 5 Version identification - PDF/UA Identification Schema. + +
+ ISO 14289-1:2014 - 5 Version identification - PDF/UA Identification Schema The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema.
- + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. UAIdentification_size == 1 diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml index e584a5a8..ab6cf06d 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml @@ -1,14 +1,14 @@ - -
- ISO/FDIS 14289-1:2013 - 5 Version identification - Part number. + +
+ ISO 14289-1:2014 - 5 Version identification - Part number The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms.
- + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. part == 1 diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml index ffd4be5c..6db2b5b1 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml @@ -1,17 +1,17 @@ - -
- ISO/FDIS 14289-1:2013 - 7.1 General - 7.1.4 Suspects + +
+ ISO 14289-1:2014 - 7.1 General - Suspects The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false.
- + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. Suspects == false - /Suspects entry of the MarkInfo dictionary is not present in the document catalog or is set to true + Suspects entry of the MarkInfo dictionary is not present in the document catalog or is set to true diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml index fe0fdca3..0b6935d3 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml @@ -1,17 +1,17 @@ - -
- ISO/FDIS 14289-1:2013 - 5 Version identification - PDF/UA Identification Schema. - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + +
+ ISO 14289-1:2014 - 7.1 General - Dc title +
- - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + + containsDc_title == true - The document metadata stream doesn't contains PDF/UA Identification Schema. + Metadata stream does not contain dc:title diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml index 9a6260b5..cc29ab1c 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml @@ -1,17 +1,17 @@ - -
- ISO/FDIS 14289-1:2013 - 7.1 General - 7.1.10 DisplayDocTitle + +
+ ISO 14289-1:2014 - 7.1 General - DisplayDocTitle The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true.
- + The document catalog dictionary shall include a MarkInfo dictionary containing a DisplayDocTitle key, whose value shall be true. DisplayDocTitle == true - /DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true + DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true diff --git a/PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml similarity index 71% rename from PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml rename to PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml index 23df9181..da74cd30 100644 --- a/PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml @@ -1,13 +1,13 @@ - -
- ISO/FDIS 14289-1:2013 - 7.18 Annotations - PDF/UA Identification Schema. + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.3 Tab order - Tabs in page with annotations Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S.
- + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. annots_size == 0 || Tabs == 'S' From 620f97317440dd0474f39e8050cbedfbbf99ad7a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 16 Mar 2020 16:30:49 +0300 Subject: [PATCH 241/557] Added profiles for rules 7.21(Fonts). --- .../verapdf-profile-7-21-3-1-t01.xml | 31 ++++++++++++++ .../verapdf-profile-7-21-3-2-t01.xml | 25 ++++++++++++ .../verapdf-profile-7-21-3-3-t01.xml | 40 +++++++++++++++++++ .../verapdf-profile-7-21-3-3-t02.xml | 23 +++++++++++ .../verapdf-profile-7-21-3-3-t03.xml | 38 ++++++++++++++++++ .../verapdf-profile-7-21-4-1-t01.xml | 23 +++++++++++ .../verapdf-profile-7-21-4-1-t03.xml | 23 +++++++++++ .../verapdf-profile-7-21-4-2-t01.xml | 23 +++++++++++ .../verapdf-profile-7-21-4-2-t02.xml | 23 +++++++++++ .../verapdf-profile-7-21-5-t01.xml | 23 +++++++++++ .../verapdf-profile-7-21-6-t01.xml | 23 +++++++++++ .../verapdf-profile-7-21-6-t02.xml | 27 +++++++++++++ .../verapdf-profile-7-21-6-t03.xml | 21 ++++++++++ .../verapdf-profile-7-21-6-t04.xml | 23 +++++++++++ .../verapdf-profile-7-21-7-t01.xml | 25 ++++++++++++ .../verapdf-profile-7-21-7-t02.xml | 21 ++++++++++ .../verapdf-profile-7-21-8-t01.xml | 23 +++++++++++ 17 files changed, 435 insertions(+) create mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml new file mode 100644 index 00000000..bdbfb3c3 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml @@ -0,0 +1,31 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CIDSystemInfo + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. +
+ + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml new file mode 100644 index 00000000..bf886c04 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CIDToGIDMap + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. +
+ + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml new file mode 100644 index 00000000..d6bf0200 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml @@ -0,0 +1,40 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. +
+ + + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml new file mode 100644 index 00000000..12a0c8bb --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - WMode + 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. +
+ + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml new file mode 100644 index 00000000..0a4aa788 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml @@ -0,0 +1,38 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. +
+ + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + 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" + + A CMap references another non-standard CMap + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml new file mode 100644 index 00000000..eb31414d --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - General + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. +
+ + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml new file mode 100644 index 00000000..444701d7 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - Glyphs + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. +
+ + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml new file mode 100644 index 00000000..3b63b378 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CharSet entry in Type1 fonts + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. +
+ + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml new file mode 100644 index 00000000..f79f0a03 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CIDSet entry in CID Fonts + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. +
+ + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml new file mode 100644 index 00000000..c78e9f24 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.5 Font metrics - Font metrics + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. +
+ + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml new file mode 100644 index 00000000..92e5c867 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps for non-symbolic TrueType fonts + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. +
+ + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml new file mode 100644 index 00000000..c129b022 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - Non-symbolic TrueType fonts + 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. +
+ + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml new file mode 100644 index 00000000..3e012c0e --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - Symbolic TrueType fonts + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary +
+ + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml new file mode 100644 index 00000000..9635fede --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps in the symbolic TrueType font program + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. +
+ + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml new file mode 100644 index 00000000..1f9c0f4f --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Unicode mapping + 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 ISO 19005-2:2011, 6.2.11.7.2. +
+ + + + + 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 ISO 19005-2, 6.2.11.7.2. + toUnicode != null + + The glyph can not be mapped to Unicode + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml new file mode 100644 index 00000000..6c90500c --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Valid Unicode values + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. +
+ + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml new file mode 100644 index 00000000..a3f2c98f --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.8 Use of .notdef glyph - Use of .notdef glyph + A PDF/A-2 compliant document 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. +
+ + + + + A PDF/A-2 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + +
From 9e5033a7e297a0c7f8125086ac5744ce39af6268 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 16 Mar 2020 19:39:14 +0300 Subject: [PATCH 242/557] Added new profiles. --- .../1/7.1 General/verapdf-profile-7-1-t05.xml | 25 ++++++++++++++++ .../1/7.1 General/verapdf-profile-7-1-t08.xml | 23 ++++++++++++++ .../verapdf-profile-7-10-t01.xml | 23 ++++++++++++++ .../verapdf-profile-7-10-t02.xml | 21 +++++++++++++ .../verapdf-profile-7-11-t01.xml | 21 +++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml | 29 ++++++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml | 30 +++++++++++++++++++ .../verapdf-profile-7-20-t01.xml | 21 +++++++++++++ .../verapdf-profile-7-4-4-t02.xml | 26 ++++++++++++++++ .../verapdf-profile-7-4-4-t03.xml | 26 ++++++++++++++++ 10 files changed, 245 insertions(+) create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml create mode 100644 PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml create mode 100644 PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml create mode 100644 PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml create mode 100644 PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml create mode 100644 PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml create mode 100644 PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml new file mode 100644 index 00000000..3803373a --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Standard roles + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as + defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. +
+ + + + + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as + defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + standardType != null + + Non-standard structure type is not mapped to a standard type + + + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml new file mode 100644 index 00000000..136dec9f --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Metadata key in the Catalog + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. +
+ + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + +
diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml new file mode 100644 index 00000000..523af616 --- /dev/null +++ b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.10 Optional content - Name key present + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. +
+ + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + +
diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml new file mode 100644 index 00000000..fae049d6 --- /dev/null +++ b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.10 Optional content - Order key + The AS key shall not appear in any optional content configuration dictionary. +
+ + + + + The AS key shall not appear in any optional content configuration dictionary. + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + +
diff --git a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml new file mode 100644 index 00000000..b92db74e --- /dev/null +++ b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.11 Embedded files - F and UF keys + The file specification dictionary for an embedded file shall contain the F and UF keys +
+ + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + containsEF == false || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml new file mode 100644 index 00000000..0021ebd0 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml @@ -0,0 +1,29 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Unicode character maps + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, + as described in PDF Reference 5.9, unless the font meets any of the following three conditions: + (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; + (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. +
+ + + + + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, + as described in PDF Reference 5.9, unless the font meets any of the following three conditions: + (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; + (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. + toUnicode != null + + The font does not define Unicode character map + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml new file mode 100644 index 00000000..343c4ace --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml @@ -0,0 +1,30 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Natural language specification + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. +
+ + + + + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. + /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) + + Non-standard structure type is not mapped to a standard type + + + + + + + + + +
diff --git a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml new file mode 100644 index 00000000..7426059f --- /dev/null +++ b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.20 XObjects - Reference XObjects + A conforming file shall not contain any reference XObjects +
+ + + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + +
diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml new file mode 100644 index 00000000..d75e512e --- /dev/null +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn + All documents shall be either strongly or weakly structured, but not both. +
+ + + + + All documents shall be either strongly or weakly structured, but not both. + usesHn == false + + Document uses both H and H# tags + + + + + + + + false + true + + +
diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml new file mode 100644 index 00000000..f81cb84e --- /dev/null +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn + All documents shall be either strongly or weakly structured, but not both. +
+ + + + + All documents shall be either strongly or weakly structured, but not both. + usesH == false + + Document uses both H and H# tags + + + + + + + + false + true + + +
From d760afd6963fa78dbec29c9f1cd057a04f4892e8 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 16 Mar 2020 20:55:20 +0300 Subject: [PATCH 243/557] PDF/UA validation. Rules 7.3.1, 7.7.1. Added new profiles. --- .../7.3 Graphics/verapdf-profile-7-3-t01.xml | 25 +++++++++++++++++++ .../verapdf-profile-7-7-t01.xml | 21 ++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml create mode 100644 PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml diff --git a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml new file mode 100644 index 00000000..189283bf --- /dev/null +++ b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.3 Graphics - Figure alternative and replacement text + Figure tags shall include an alternative representation or replacement text that represents the contents + marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 +
+ + + + + Figure tags shall include an alternative representation or replacement text that represents the contents + marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 + (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + + Figure tag alternative or replacement text missing + + + + + + + + +
diff --git a/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml new file mode 100644 index 00000000..9e21ec5e --- /dev/null +++ b/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.7 Mathematical exspressions - Alt in Formula + +
+ + + + + + Alt != null && Alt != '' + + Formula tag is missing an Alt attribute + + + + + + +
From 9fca0a29556146ea1fe3ccdbd91393bd44b473f8 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 18 Mar 2020 10:18:49 +0300 Subject: [PATCH 244/557] PDF/UA validation. Rule 7.4.4.1. Added new profile. --- .../verapdf-profile-7-4-4-t01.xml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml new file mode 100644 index 00000000..763cf3c3 --- /dev/null +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - number of H + Each node in the tag tree shall contain at most one child H tag. +
+ + + + + Each node in the tag tree shall contain at most one child H tag. + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + A node contains more than one H tag + + + + + + +
From 419086a0085fabef921021887d9c8dee7592ae46 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 18 Mar 2020 12:02:39 +0300 Subject: [PATCH 245/557] PDF/UA validation. Rule 7.1.9. Changed profile. --- PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml index 0b6935d3..985e3986 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml @@ -2,14 +2,18 @@
ISO 14289-1:2014 - 7.1 General - Dc title - + The Metadata stream in the document’s catalog dictionary shall contain a dc:title entry, where dc is the + recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which + clearly identifies the document.
- - containsDc_title == true + The Metadata stream in the document’s catalog dictionary shall contain a dc:title entry, where dc is the + recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which + clearly identifies the document. + dc_title != null Metadata stream does not contain dc:title From 2dc580259129ec65d0ea2a99e9fe7bad1cb7d8ac Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 18 Mar 2020 13:04:59 +0300 Subject: [PATCH 246/557] PDF/UA validation. Rule 7.1.8,7.21.7.1. Changed profiles. --- PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml | 4 ++-- .../verapdf-profile-7-21-7-t01.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml index 136dec9f..8f0a8bb1 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml @@ -15,8 +15,8 @@ - - + + diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml index 1f9c0f4f..69efc87c 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml @@ -17,8 +17,8 @@
- - + +
From d41d3c1b103b272af3834e7a5a27cc4a5ffa2005 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 23 Mar 2020 15:40:47 +0300 Subject: [PATCH 247/557] PDF/UA validation. Rule 7.7.1. Changed profile. --- .../verapdf-profile-7-7-t01.xml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml index 9e21ec5e..ed201ff9 100644 --- a/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml +++ b/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml @@ -1,20 +1,24 @@
- ISO 14289-1:2014 - 7.7 Mathematical exspressions - Alt in Formula - + ISO 14289-1:2014 - 7.7 Mathematical exspressions - Alt and ActualText in Formula + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, + 14.8.4.5 and shall have Alt or ActualText attributes
- - Alt != null && Alt != '' + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, + 14.8.4.5 and shall have Alt or ActualText attributes + (Alt != null && Alt != '') || (ActualText != null && ActualText != '') - Formula tag is missing an Alt attribute + Formula tag is missing Alt or ActualText attributes - + + + From 8442ab38418407def7bdf5964e98e7af65065942 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Tue, 24 Mar 2020 14:34:06 +0300 Subject: [PATCH 248/557] Initial version of the PDF/UA-1 validation profile (Matterhorn Machine tests part 1) --- PDF_UA/PDF-UA1.xml | Bin 0 -> 58708 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 PDF_UA/PDF-UA1.xml diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml new file mode 100644 index 0000000000000000000000000000000000000000..8af376c26e6df903574ee1295a97f0686f29fb9f GIT binary patch literal 58708 zcmeI5X>(l1b%yT;esQW&<)1Kt6OoF|T?;8ubWtFw&00zXC0F7^1%lvWkst$*j^reN zJ;{0c#o_7hyUfMRUb+uP}L-m`Y!|NGw?&F`C^n&-{4X43qn*=_clgXU@T zqST`+b|m#pb&-+S4@ZtHYUpQ}oa5AK6IT*2jzHwSC7Z-!!*v?zfsBnk)9_ zmVKhxP3&oYZdi}IX+_NPz&_crmb=!=t28!!h+f-=eNCE8`-W98H|Fx%=*sBPa@TsL zO5`+Li%{hqD*QuD6;ecArL(7bQoyxaUXJ;gWdMLExy@1D)=xy|tA z;e0MO_ibJ0ttWPtJ$YSFX;SUO4WnlC!A^PK{;z0qkk<3mT06aOcJ9K&sPH=NFx1<& z-P%sP1D{Nq&zgJ9*Y@w_<{ew(wdQ)7=?94_e0DL>ziX^~X3V+Vr;<81jGMM?N1hl} zcsBl5_7XEK+sDfNiHYs*gXYgh=N(%Id->(zy8dXtePch{_RWv>_hWmeZ?~dfICo+* ze3^QDnxtaKT03nSLA3fIqZPl4v*7F3)?TvqZu<0<{SPXCl{oN${ZBkkn~OdC6ElLI zU3A|v>LIO?9C25T8SFC%0M8=}kCH4rPoM6j)<`^Z1KxlEv_L)`3)m}omG7B(O&cU= zl2$Ann%FwK=Ji?Pi@iigde3PJn*C(ofN73)jI)z^Vzw6&xAajW=N+e;|9d0#3-xa% z`5T(Y4{7wjrd57qyo5BsrM`dNyci>~uOR9Els%0W;KPCah&yi@=7@F=t(Tp|Ezkt{ zm!{g2Y~(uYu>PomgKM~&{Cq(32K8&yO-5PXPoCktP$ECgR%S0VdC z24UFqN%Y+_ss?c-H?&KeoCF~l7a;%e-C~CbMrg<-#zQ!ZPZux8=rxL>=vWu zn4Ql~7ThD74?fiHg3z#@&BSactfv?U{`S2amZBS@<-n!+MzW1^E2=#oSy9@p5);Sn zjSz6pD2$#1X|XljI%BUw`%LE}Y(z&@dZABgGxqqkeFDW6g^GO^QBZJR^cmjM7ze7A z_8QVN-Pf9!KaPLS4<2-vuZ5S2hc2ubv*z|}`f!@vaNDqZtF8mSeVp2qq8m@P>dgFK*ctwD|tvroR=OQe5x zyxuyDHfd}#fA zU@LxVe`Ga=uj^3(B1>3-JnQz3VuC~Vt$S^>W#s1xcgZHn-jxrG1^kos>ajnMHQqKG z@PW-p)Y!E4nnR6*Xp6`-$m;IHZtq*%Hsm?_%8AxI8MNYkmBei1O~_+-n${WlD)}cq zgL+pNV^_03KNNepN_%=5pSuQ-zlZ--^JmSQr^{0A(=GGG0+58$5K+CHY8(1!;8N3H zfv|OGTh@{?3+{m-i;k&IEUJw~`O@Tm+w9KUwl6!De+?X!z2ZnRF0$&;yT#zav>7VO z>SHd~+nzQzx8}-`MK{;w)>jt_ZCU&K)&m?%Egn`@*k5CO+0B$4dTH%SD>AQYlGlunj$cJQ zRQ4me_I>+9#1n~<24)s~uUKh4yT}YFYlH>(tMn6IvsW9DEsDsdvd5F=Tl=(*;ZqxT zJ;gGKz+y>}kI}rLNzfVl5AU6CiKn%*)I3Y{@P*+7G$$f~-340Em#hr-%j3KUW&y`K z&Nctsyq%5d^AP=1n-w#Y6~$ zP9>k}e1&D3mT9J%*0D`IPg`GCQ2KoHN%OH~Bv@1a>84dH-s|}Mb6YvpFMIZ#crMkD6qfWN-Ky7A9(_?&IUrt*cdPWEwv0T4~&eh$GUxnxrIVsijhi7c%@-IqeW?ti_O0`|7vSH-~81y;rZrY zntyBlD`~)M&Hps#?340aDp9T%&%AAx=RaCL?n2rD`1o9+ZFmRYS^w0A?V5$UTz`F? z9ru{kkRRP$+f%mWED|G0&GfvF&vKU8)l%9u8*-uJ^x4G@`W#P| z{+@YGcMT`Ne)eP)Ho(J9oN-_)$VKU+l=zFcGv(u_xj)b^wBxfD(p#JB{gZ@vK6E0 zKg@o^8_SqroWWbB5nmZ{5_gve>ZcFR z+B(#l&+!kXN8U<3eV8g$mwmnyFERG9+#B@f^W+b)AJVXBa^IoYmD7b~eK}-SfdsQV z-FP=tQ;+5M=}PRq=@LHb5GOk44^_ia1 zSp?b550l;Vz;**nkQGHVf|~IsCV%Wz-+af~KOTkt)cSWBUDXL8W&61g!sAswyI8ew zPRD5>dq@6iP`AR0h-qeNxI^ccgCj&v@|Pla8uTZR}FTe-C7iRmkn18ro%6SL`# z2S6(QWThQ#55cee)bkh~Yu|XV4D{=^ z?w#-b-&x|;-ICWI&Cp3Rq-%_IfPYfQ`Hv@#O+@2s%ad&;+Z}IrHTi5+{T>&ZM=XP^ zuScDQ+p6{w=B=b5H z8S-^}WorOieALBwf6?o>7_~ot!L(dNZ_cF{c*J}zC2i)m$1u(;;%132O)?{8I&S?{E%dU9zV_ zra35Fq5%6q1@F*4PDc`|gJY$>OF|QLia4d~8IQX%gR;I``9@(A+D9|={X0Douj7gL z6D9hi;WRW}&FyjA!FQa|ew`1Bd&-?tyX_VCbV}|PU*qMpqjwXd-`9pBeqa3YSTNrj zRz9-vS9=SlTOM^Cfzw!-4BZWm98RYeb%(w-m-jLv<gQP(#@KExMJt)8DDDA#WcBG$XAV$5LY>QmFYi{1OeL_13 zN7jdEy{O9Z<(Jb9_t!M!nm~+&Z?HhR= zx|>_NPS}iuqt#Rijm9qH*I|oXvFA#PhnDM;jkaDxGvwG0e}i%!2}d?U`)Ir^d*+j* zJ%zoc)yUXdMc%J;CA~>6QKj_us4dM*pSg`L3cH1{h}~UGP7u_7khBe15Rd(nA0-k@56Ga$7ePiUiaGa8g_^XH z-~H&flN|MYv2zT!q_s~NqY3q1h_-N!HQf{MD5nYm7-QC^8^y#m@XS5yWh~!x zw~g_K)>yW^YgPmABc5&KXdPpZS^LLUDJ>oxN9A}v#u-}Ur?wy5#dKinqV3q#wcEvb zW7c)YsEH?iv{CC;G3L-3y%qJyvyGRxj4{WoQ@8jXRVwRNG3L-Z#joCWHc4r>jUKUx}x`-pkWLW{tZag?v;676FiL-YWLuymap z$BkOIim}G5S*?X<_szy0Z)tb6jIpP$vmSH&o_CG>som3jRC`hVl$QHAnro+NKda2t zZO2ir95?uDmRU#Z7&|zo_Gj-}#FKb%yP9rQH?wrVx6-{W&ue?-QN5mZR4soO;4D$K zp%}@@imW+LI1iuX=-Pal9QdvUi)hT zzPA{M-+ASEPh#N_10x^cGwF+*x1(z9S_NiD-H*>PA35e1I9AS}UTr?7JkPV3NLoHO z<-R?i72hm3rxD|pIk53m@@#e4V%p9+w>cWO_w{t)@$pp+Q!!NDSNrgd+?-_Gn)eo; zQWB%0&N+shb4iz|OU!H0gA-Si9as!<_$t~l<2pk;HV)Tr7gk@;zCGSL2H#a(RY&fF zmZ5q2_fW0ZF?hedz-!jz-PG~>pzRQ!mThN?Ci=+HI>sKeuMtxp=a0qnG0xB$+p+X< z@X9;Ht_@L(`29KtU+au^EPWjBw%d){g>k({U*qMl z9Yr5EmZY%VI_5CMReh}$Pn~ZDv&3ZU`2?oSHkW8Wjvk5$uVe6Dm)TdlB06=&@Pp1{ zcwhbe(qiyqRxVEWJV42(%Z&FVA}*XdFshs1qyKb!vzN8nFaL}$1@ZZ&nQrzgU$ zDos`5uP#c(eeaxjB|1!<{i5ISuw_wo;@F(&)G0LXn|fjKac&a?3-ukbaz7E_&+=W= zx$-Gb5!K?nV4R6O`bpXHJcQ0IwBy`mWo_gEyehRkX~3tvZ6Z!sj;%zcf)>f2w+gjB zOW-jAugF)8vb5B+XLS>To^4Y+G8Y=-s_l!O^}X}F(du)b(>QRQ_2l$6GRj%p?t92S zGK3H}A2sWF-CFiV{zF4tOj2FOs*mR`+Eu^xojVAoWA1#Jfjfq)<%u$vN)R>A7=k#C zTY&pErUo*E;{oxFSDeIWI?hE_V2? z%zS_SCcopI0b0ypdy7@_V-PT=Wywj4?$2pFcr+vXG&WLTMGne~TjmKLbz|pu#BkEZg ziMtR=t>GudqN1ehP40WizW1}c+)Ls1eJ+iG*u%0FdZF|mm@8QI*m~!t6m$W1SUa`2 z>yH)kw|tC=J&U%8Q^v857zJ$W(?Qy!@Jt@0-EowcU&r{2CoQrVJonl4+tzVQpFiu_ zY2HD{dF*|&^`6+RLl^CR&+#7U_v{_ee`+8#y9ZP zfsMlH#n3I#RXwamHz;yLwM1}#fBn@g@)>8KOG!lMBaOQGhPRZ;YH@jjGQpetZ#J1& zYnPLCSH*PAGG7JbacdUcG%!Y|=(eR?qv#HZX&NQ3ZF`i^)OAJN5Ru>7itJ*e&n6$g z%lw3+>JF!c{0ql?M_czN=(Y4_@tOYi^hWSQI}Q~3g`3YG9$F$NU2m|W$s21GyNLTc z(5+ZW?R#ZQ4_n;hHdkBg_&t2%wayyrH!|B|b#ZjwxpZ7H^t*@1v1`@jSh4s5fjDii zQ`m%+KOA$xBG)_E!j`4q?kIa;cy6UA_Wm$g*q~qBZmWCD@N)EdmzCY^=lHBjjBT$o ze21V$=^d1Qi{kvE2{&+JpGpQ7W1oZi9w}n(kFyH@I!?~$-zVHdhin?vxvMsxlUvEP zojtzgYV7N<^k?CX_AdADEtGH%%Xz(~q33Xd`-1AU&M~;W;WEbU;?gzlZdmk2u|1DG z+)Z5k>hP^yp5a>^Ccn1?Om;gpa{E80=sQvAr-r}yf+dv#yWzj1B5zwh`umrC9J$sK z4TXbo3mgc9O)dP#qLH>?g_1JWF4XG_6!sf3L#q4^Myw>_1Cqk>{yRn`|D?A)O1p&@ zJh9PV*w2sF!^ZLyza?80N=N5Oul6YnGZ z#^&CRv^#Qp@8067#rCGP0GT|OKU|@)hMypNL12&ZzP5YMOrklvs__vc@=o5hKLd2+SGF7VlhNa5vUNC# z%-dc1ZnDPKZp+ZEq$SI}-%LGm=l#>PO1Puc&C9;on#{s%`poY?-EHw-O%GNXl?7B9 z5AC#DbND>{yNPEnjhyeLOL?FXQcFKBspAmO?KLRF>}9vXnY^(;NK~FrAHtP#Hh)Qb zAM=@pVQa5VnUPw@opg;qUp-XYhOgHjIvyU+E2NxjOZ_EX*riR7;8%uL*q)`VppR4m zi%gUK%d`7%CK`?V0=*VM-%qpQ!`2`2S00(XJ+t1?nZwxc@uuba5n$&*%h&4PC!Wr$ z6`|ZwcEuy@eS7h@?ibXQcZ9(EjEKTX^$^|}Rdw1YZ>Iq-(An5_#5`P6_gSYk5)J9s z(pL|AAjib=Evq#$a)$&~iB~sxT&Zo_$mVF*7nMC~rC1K(EAW}Gy30$*chG$V@{RNP z2zozPy^iCz{oB~RXHvMCtb4`8WcT6)3EMsDadm2hX}KuBHD|QwXd0sABlN@bWapv- z;U44%%U5wvrx}_>?_}^u(b{S}89CPXk1?L_oauV5@4hXs!PJfXZqwCPV;LKAq>|4A z$K}x9kVvtqjH@4U%TUxc=ev3)(Wc2<8J zJ&V@r+2g*$m!ZQ9)7w9q>pWt-2(3%_(UVtsyku|8{lBOx|% zc#i?pPlN>vw&zb`HR#4ItSi}|2lkeLy@V=c*#B%iN_>p(@0otocf%I*jYBVM+j@Lv zZNIZIp4soa%}vwg9@}S4;>@n+kWrs^{jXN+Jt9YbYBz3(?w%oI)->pQvVN|QR^V?p brKW3z{`H@9I(1Rf`Ht@toAnd(qVfL&oiT}r literal 0 HcmV?d00001 From 103004a0a5cd199f10f7088aea3e00613d7d8342 Mon Sep 17 00:00:00 2001 From: Artem Kiriutin <57896478+ArtemKiriutin@users.noreply.github.com> Date: Tue, 24 Mar 2020 16:57:07 +0300 Subject: [PATCH 249/557] Update PDF-UA1.xml Fixed error message for first test rule --- PDF_UA/PDF-UA1.xml | Bin 58708 -> 29367 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index 8af376c26e6df903574ee1295a97f0686f29fb9f..9c5699a05c9389409dae6b04849c2fb598ccdf6d 100644 GIT binary patch literal 29367 zcmeHQU3S|@c7E8mARY$M#bM*sS+Dt^q0-EYhF%y){$b+zs}_3mCc{xHPA+y{dtos2GIV~b-*2c<=)H@l$zkL4xYvEN`=;AK zcMAU<4E@Xt!c+|s-^*gW!JhDzI*Ow-PO@M+ZsEZFt#{!UmnH88LzPbaK`;siLgm8-X7xs9^`--2h2Av9 zuI)Ee=BL?<>G<3ST|14P!hn?(pI!P&lglDQ0RUClfdH&f-m&-{q6Q|aK+AA7BX8Uk`|{O^F%fBdRj?&D1w z{Nk&_L)AIhkr(nUl#l!*iIbU?O2gPsQ;_p9S2~Ob(=leI#@H$V!vo#{z%d&9G`f>< z-Pps(lB7HZ)wh$keU|4S!+FVt43SpIzEd~FgTx>C3E0pteQ>ZtWE7TjP(liJY?eM7 zg3In=xR9v;+K~d|PrYFHXyPTAa;P8*Wi33hANBI)nzca zly?MP272id7?EMtghYd#G$ev)0==^CD>1%L`t_4ge`!QgvCe$i3j77H4)0CEHu zgmo+fm%?5XNA|x1i>Jq&=fRHqXASgRV>;8>!3Lps6sO0Ai&ll)*DZ*vqKvw?7<7(v zA^V`7F4Qm>P-J__wSis`4Iu1&NU7&u^7bj@SMeRg*xVE^g4)ZH>uuGaQlMt(HZT~c zzNia`H7nmnUYK(GsMKS8iTv0w_*#8=t%1eSzD)!3U%pfb55*t5v@u!)%( zO(TuxFuYd&AEp7MEVtJ6$6mITmzMc{=#PR3y#WC1u!(eGWXx-bk@JM3V z8W_FE7DhN1CY$)aO5!+M0{3=qXPBD$n?n^%!*E6DznD)tLYQFB=|-(hE0yX4Lw{nR z7UJjTnBIgccy?Ap_QqxJgX+|ZxIP0$kE$XUxbdu!Xce7-xHX}O?&sFbdh1`8WGwd7 zs~BNksutmSueG}bFs*gBS(~v&^URu!c3_3|E~)pcB5#42SdfEG4LK|=D{Mi>>b|c8 z$;~(|6_em$b$YX~bl@^J{EQa-?|=RCzy0|?;9*wLt7WkTs;7p7M_G_TIvTs+>Jlb7 zo>KGx#$}O9q9^_!9>b9sLi9ojkAnAN021=Y)AJBBIf~JPgM;>ZAiawK=i6}i%3DTL z1me1Xm0PZ}ckH6VeV-bmcUI7i5R@pAPK&P`LTB--C_o&~ z$girRJ$eqS&qzrfY=Z3Y#H50Jyz~-p0OuU~93#^(wcUxQ5AW#Lzxv{fFGP4T=yk5` zO?b%aM;p9Q`>luDY8oMCrsa~%dF=Zc6n*3nF^a=5zS6NG8k!Ip!+>sF`bfsu`psPk z(g+{P{1DF)AqS9H!@veCQ+RoUA7ezQPD}`Mn@>*O(~Gx{6da(Rf~bqolYO+!XY)GO z-hOu7e8RWfzg{a6F#X0&Q4C)C{G6$F9djx&zKBKB@b}*Oks2lOSXR*;#tfQS)Aa|$ zLZSlo>88ot@DBeRDfWa=oZX+)8uI&7{HOVC^VMpW>6yQa^an#pWc+0+I4m2jn=WHh5^}%#p*^h^lh| z5L}30#pk}G4}Y6JYeCA#i7<_eu7yFG!660P=qRG|iaix#K2rp0a|3< z?mewG=nFs;%tWh5-!X!-&}vuUN8yNkCggSmdbD*>%jsXYcF9lY@YMEp_ZA0cx4L0w z15@ftZ#?-%{zsX|ckbL(fBd7`>LO0(g=droM)Q0Zo~j59&%0*ZDtcT04u-^f=#N~!8)_F zl4HbYkr0Pr6NE$cgj}yBXX&fON0L*TP5YE5KaH#qxPga+Em5r~# zWznHxpx*lDR`$UvF!lkgfjGKAm<4Qk<$G`Om$Pq%+vX$REk-$q#>O#8|Kx8)fPWGj7;SI|_o|ZRqwe5e!v^+H?J*6#)pzmh8;M_X;n;&k zjQ@en9il>nb_PpCicE==F7mS4S`cT$Oq00R&H*cK=2#5X7^=?2wDyI2w4A^6VC2vq z0K*sT055}E0B-lwzcedD@1qb1Zk@3t7OZfY`h=o97dv@TO~FRY4CF6cHJR5H4ULya zN2qHG)^N2E{Vi24EO52O%7~@53>Y^?G5;Tvm?qk!E_lmgNyAkfYa?2_$R?P2%$!ml zy~5tIj=^}`#)k2d#DiN)?=|m*u5qa+O@oyES>xyB5lZ$LISUZ>$tScuV+_%QeSx5q zNpBT}a+%q5375QDV^Qki+DzSXpD;m|$wWUn%)jqw9DQO%VgR9W?$It2U=^FLHNVPv`-7H#k zg5vCJ6m=pvixOT}uL)ODt06Cf)X>_j>^%c2jP=TwxmpqUQ2QX1gX|JrnVN`je+h9S z1E;RcqfJDyQ$p-c|IUg^rK=}wAi!)D*rBk-3P?OXD3=77px_%}ahV36NTka%@oqS8 zh(e14&h_1j;Z?NM7RFwFrbWHF@Y%hYJ=7K32P2ZG1-U|{V>yoLLKjC;KfjdX_!|fq z#eZcdI{*Dob-ZFbh+c1 zOfse2wUz}b4b&g~3uMGti~KSf`Z^OOxhyWCKb=gBfj@>_k0=!)KvL^Dk0{1hFhptD zCA`G@$yJb|fRtYj;sn0-gt>RHp`8L|HgvNvX)#GTOT?+X1&-SE7c@CByFij#@aDBl z=TIfbqp%)BL|JNeF|K=8IAFKgjdj6uLspd1`u_t$__nCFI?z&MAj!Xk&KV$SEM5k5 zOe5dt26az;+iPjtLP>z7wcYF^umcdsgodfYDP|smG+#*d%~dUrqwa@;h47cNuZ5<&w)DbPd05E1O|S~fc2qyF?fBbZ?4H_TE=2oN58 zR9usB1Xfh#T@6`B-l8&~p=JYQSa}dZTH%mgad6Q!w*>2(2FQxV{do?0mh{!w`HI0Z zN`N)F=w@C9W5QBsrPUnmW-$qP6sz0Z6?<_Tf#QKbVRZ%%?690zR9h35ats^E5?$o7NPiw(q`ep1eA0KGA$p?9sHy zH!|6o?y5qF=}FYp-}=8T3KMG)ZCQGd7Y(?V;_ zh^DoN!^9u>SeoaI{_Q>}ShFYcyk^8F&(cBK{C2Jxg)u@nvrV2 zK4%2%;rCBJhyvGKGfwI2pX#=8=8Xlj5Tw*h-u5yNNzeL6^EkjZ%^4ZZz}c%OwL&{@ ztXX^B_@s8_rS|!w&lmhy^s^7{jBTx%ocZ*H$AqKU?thU8u1+U(pomYTfLVHfz;%=DT9R-;$xTx!CHh80-jXuA7Iw zcf&mFnPfVVsKi;ki^M~TA#&A{h+z5>$J>}%V#rHAlDOwzy| zhpP*sK3u{8vsnU)M5YH2QAT=T_9==G@YGFQoC|!h$ERG~M!e5i0{(@$o)0(VYp#3x zy@QJ0nToXq&cKN)L=&Lu7`{2u%S4)_u+rQ`m;+;GIFUL7#9j4COLcYf-bpI`EqFnt zxGf2%Kdgu8z=b0;I5f1!-KQ7gqd)Dt={LYc;^(n-nj%}lvef(xxb_H{g)<339++K% z58Uu2YzL|A#wqfO=!SL!D=UfmYRei|JiK5@=n{mc7dvx~*m=NYLo0f2N#@_kxur1a zY(NOlB#IXl!mL*5r7~Epd@h? z7TOuP%%m8xSvZK#gs#ruyKNL;&+JxlleU4-3tX`!H#%TixD$tX$LKa?EMv$g;DrJQ zVMU@$&RL2sw~I2b3ZoU^-P?PxZK+Lot%Nb|EJ%7wR4vlWO>U{ zrN9O}=?_Bv0E(nYFABFvao`%<0OQ7x-xVTpne+EkGSK?A2;`Wh_-2qnv~ZtNE4@Cj z6Q2URm<;_|L7;m$GFm!3u^_;BQ)a;&wKOks3M$7mqaYeM%P2b9Ho6w!hOc>-2d^Tn zkz*y!5Z0N;9h`-UNPbGZA#`vNc;S~pFuVoc!18;P_389H1?63>tWnq?4>!cI4hw&4 zS?A-UUZllZh`-rY%sog+T(yi!YXOc^oj_BiE>et)s>!ZH?pi=!1w)(^4fH+Eyo03# z%Yx1+#HHPs0`Vf~bDJOBm9p$&ExY9>PVUI{R5o2|8rP85vW@U%=1{{exwKknG=`n? zwdyi%3VN9xEIVEyYtIe2aK6cM=6&Q_&9#|1ayXf$(h2;BX$-ThLA(Ck@inlM9 z6$JxjrzGgE^EWkk-F}qbx2B_kp^@-%h#h04WE+%!mc|nZvmjHpN(xn{a?iA>zl(g_ zxt;R)l~i@N}lRBaQ4~s0$VXCE1%LX$t&LYj=oY%OE?<2q88Xt zzw>54;X-7%)!)-@f(-aP7$k8Tk1}^j*4Ey3N6Gb1|E^9^77x^n)zjm{y=~=6;qlMT zU9gw_4GF7X?hq<>Z~_@XS;FM6XPqrK2>7Wnd)J%9drEK2T=UkDn_XmSUzEE#nxh&OCe;TGyLTue9b0#6*cS&;pI=KTesC@17gyJ(L<7>hwp zNP^N1pU&9j9#u?*MW?9C{2}+tQ@6O@jk~*|n&_&u9+~END8dG{OQGHVS7h+qt42?Y z`?h&p>tH1sCxZsnQ+ThL~Cv6~2T*%10h(V2F(6(5v z74!lXltOz6rGQgic9mQuAnuD zrcS~sBzIG&h}LaEKJct_jAI}DML~)bmlX7ul2Dz8?e=~X*T~(+t&yD$&Il}Xq5LMV zCKc@}UPeU~8`I;KAav85s4}$T4_+01sv{>{RVJ=<)MVp$U0}cyuZGh0B&Jn%?r>#} zFe%m3Qk8gx=~Oy;_=}&!YO8%WzZ=Y*L^P0n^;PerC-(>7uU_wD35l4)%_w)uzb*H) zg^No4_b*3Vjo(l4J1T7$yLb;jcUG`zYhUK@%fF0S<7M6Ts>UyAtpP8m;u(X|hpb8) za7%!{K|*MK4C1%*c=76zKfBhIAB*CtCZ34aeug`7uF+PqCiDD?t%7Z#9U|3GS1y^B z(nx)|ufE#$QtsN;(h;}&@Q3zr-$FTZEpNK?qGUJa7h}ZdhxmqsWu9rdVp=+}a-z@7 zuCa!GcI0qcw|D^G{CrM{3jfzI(w8gPt1b`Tc}XC_k%FLg59KoN!v@qHZUk(&pZvqs zht-?&u&v%S%wF^E-pA$#rAp6cE?bgP=*NsA9qj18^B4F;PixVvN|UOX52f)pJ*Rw< QB<8^m4B8QjNbvXn0wyt-6aWAK literal 58708 zcmeI5X>(l1b%yT;esQW&<)1Kt6OoF|T?;8ubWtFw&00zXC0F7^1%lvWkst$*j^reN zJ;{0c#o_7hyUfMRUb+uP}L-m`Y!|NGw?&F`C^n&-{4X43qn*=_clgXU@T zqST`+b|m#pb&-+S4@ZtHYUpQ}oa5AK6IT*2jzHwSC7Z-!!*v?zfsBnk)9_ zmVKhxP3&oYZdi}IX+_NPz&_crmb=!=t28!!h+f-=eNCE8`-W98H|Fx%=*sBPa@TsL zO5`+Li%{hqD*QuD6;ecArL(7bQoyxaUXJ;gWdMLExy@1D)=xy|tA z;e0MO_ibJ0ttWPtJ$YSFX;SUO4WnlC!A^PK{;z0qkk<3mT06aOcJ9K&sPH=NFx1<& z-P%sP1D{Nq&zgJ9*Y@w_<{ew(wdQ)7=?94_e0DL>ziX^~X3V+Vr;<81jGMM?N1hl} zcsBl5_7XEK+sDfNiHYs*gXYgh=N(%Id->(zy8dXtePch{_RWv>_hWmeZ?~dfICo+* ze3^QDnxtaKT03nSLA3fIqZPl4v*7F3)?TvqZu<0<{SPXCl{oN${ZBkkn~OdC6ElLI zU3A|v>LIO?9C25T8SFC%0M8=}kCH4rPoM6j)<`^Z1KxlEv_L)`3)m}omG7B(O&cU= zl2$Ann%FwK=Ji?Pi@iigde3PJn*C(ofN73)jI)z^Vzw6&xAajW=N+e;|9d0#3-xa% z`5T(Y4{7wjrd57qyo5BsrM`dNyci>~uOR9Els%0W;KPCah&yi@=7@F=t(Tp|Ezkt{ zm!{g2Y~(uYu>PomgKM~&{Cq(32K8&yO-5PXPoCktP$ECgR%S0VdC z24UFqN%Y+_ss?c-H?&KeoCF~l7a;%e-C~CbMrg<-#zQ!ZPZux8=rxL>=vWu zn4Ql~7ThD74?fiHg3z#@&BSactfv?U{`S2amZBS@<-n!+MzW1^E2=#oSy9@p5);Sn zjSz6pD2$#1X|XljI%BUw`%LE}Y(z&@dZABgGxqqkeFDW6g^GO^QBZJR^cmjM7ze7A z_8QVN-Pf9!KaPLS4<2-vuZ5S2hc2ubv*z|}`f!@vaNDqZtF8mSeVp2qq8m@P>dgFK*ctwD|tvroR=OQe5x zyxuyDHfd}#fA zU@LxVe`Ga=uj^3(B1>3-JnQz3VuC~Vt$S^>W#s1xcgZHn-jxrG1^kos>ajnMHQqKG z@PW-p)Y!E4nnR6*Xp6`-$m;IHZtq*%Hsm?_%8AxI8MNYkmBei1O~_+-n${WlD)}cq zgL+pNV^_03KNNepN_%=5pSuQ-zlZ--^JmSQr^{0A(=GGG0+58$5K+CHY8(1!;8N3H zfv|OGTh@{?3+{m-i;k&IEUJw~`O@Tm+w9KUwl6!De+?X!z2ZnRF0$&;yT#zav>7VO z>SHd~+nzQzx8}-`MK{;w)>jt_ZCU&K)&m?%Egn`@*k5CO+0B$4dTH%SD>AQYlGlunj$cJQ zRQ4me_I>+9#1n~<24)s~uUKh4yT}YFYlH>(tMn6IvsW9DEsDsdvd5F=Tl=(*;ZqxT zJ;gGKz+y>}kI}rLNzfVl5AU6CiKn%*)I3Y{@P*+7G$$f~-340Em#hr-%j3KUW&y`K z&Nctsyq%5d^AP=1n-w#Y6~$ zP9>k}e1&D3mT9J%*0D`IPg`GCQ2KoHN%OH~Bv@1a>84dH-s|}Mb6YvpFMIZ#crMkD6qfWN-Ky7A9(_?&IUrt*cdPWEwv0T4~&eh$GUxnxrIVsijhi7c%@-IqeW?ti_O0`|7vSH-~81y;rZrY zntyBlD`~)M&Hps#?340aDp9T%&%AAx=RaCL?n2rD`1o9+ZFmRYS^w0A?V5$UTz`F? z9ru{kkRRP$+f%mWED|G0&GfvF&vKU8)l%9u8*-uJ^x4G@`W#P| z{+@YGcMT`Ne)eP)Ho(J9oN-_)$VKU+l=zFcGv(u_xj)b^wBxfD(p#JB{gZ@vK6E0 zKg@o^8_SqroWWbB5nmZ{5_gve>ZcFR z+B(#l&+!kXN8U<3eV8g$mwmnyFERG9+#B@f^W+b)AJVXBa^IoYmD7b~eK}-SfdsQV z-FP=tQ;+5M=}PRq=@LHb5GOk44^_ia1 zSp?b550l;Vz;**nkQGHVf|~IsCV%Wz-+af~KOTkt)cSWBUDXL8W&61g!sAswyI8ew zPRD5>dq@6iP`AR0h-qeNxI^ccgCj&v@|Pla8uTZR}FTe-C7iRmkn18ro%6SL`# z2S6(QWThQ#55cee)bkh~Yu|XV4D{=^ z?w#-b-&x|;-ICWI&Cp3Rq-%_IfPYfQ`Hv@#O+@2s%ad&;+Z}IrHTi5+{T>&ZM=XP^ zuScDQ+p6{w=B=b5H z8S-^}WorOieALBwf6?o>7_~ot!L(dNZ_cF{c*J}zC2i)m$1u(;;%132O)?{8I&S?{E%dU9zV_ zra35Fq5%6q1@F*4PDc`|gJY$>OF|QLia4d~8IQX%gR;I``9@(A+D9|={X0Douj7gL z6D9hi;WRW}&FyjA!FQa|ew`1Bd&-?tyX_VCbV}|PU*qMpqjwXd-`9pBeqa3YSTNrj zRz9-vS9=SlTOM^Cfzw!-4BZWm98RYeb%(w-m-jLv<gQP(#@KExMJt)8DDDA#WcBG$XAV$5LY>QmFYi{1OeL_13 zN7jdEy{O9Z<(Jb9_t!M!nm~+&Z?HhR= zx|>_NPS}iuqt#Rijm9qH*I|oXvFA#PhnDM;jkaDxGvwG0e}i%!2}d?U`)Ir^d*+j* zJ%zoc)yUXdMc%J;CA~>6QKj_us4dM*pSg`L3cH1{h}~UGP7u_7khBe15Rd(nA0-k@56Ga$7ePiUiaGa8g_^XH z-~H&flN|MYv2zT!q_s~NqY3q1h_-N!HQf{MD5nYm7-QC^8^y#m@XS5yWh~!x zw~g_K)>yW^YgPmABc5&KXdPpZS^LLUDJ>oxN9A}v#u-}Ur?wy5#dKinqV3q#wcEvb zW7c)YsEH?iv{CC;G3L-3y%qJyvyGRxj4{WoQ@8jXRVwRNG3L-Z#joCWHc4r>jUKUx}x`-pkWLW{tZag?v;676FiL-YWLuymap z$BkOIim}G5S*?X<_szy0Z)tb6jIpP$vmSH&o_CG>som3jRC`hVl$QHAnro+NKda2t zZO2ir95?uDmRU#Z7&|zo_Gj-}#FKb%yP9rQH?wrVx6-{W&ue?-QN5mZR4soO;4D$K zp%}@@imW+LI1iuX=-Pal9QdvUi)hT zzPA{M-+ASEPh#N_10x^cGwF+*x1(z9S_NiD-H*>PA35e1I9AS}UTr?7JkPV3NLoHO z<-R?i72hm3rxD|pIk53m@@#e4V%p9+w>cWO_w{t)@$pp+Q!!NDSNrgd+?-_Gn)eo; zQWB%0&N+shb4iz|OU!H0gA-Si9as!<_$t~l<2pk;HV)Tr7gk@;zCGSL2H#a(RY&fF zmZ5q2_fW0ZF?hedz-!jz-PG~>pzRQ!mThN?Ci=+HI>sKeuMtxp=a0qnG0xB$+p+X< z@X9;Ht_@L(`29KtU+au^EPWjBw%d){g>k({U*qMl z9Yr5EmZY%VI_5CMReh}$Pn~ZDv&3ZU`2?oSHkW8Wjvk5$uVe6Dm)TdlB06=&@Pp1{ zcwhbe(qiyqRxVEWJV42(%Z&FVA}*XdFshs1qyKb!vzN8nFaL}$1@ZZ&nQrzgU$ zDos`5uP#c(eeaxjB|1!<{i5ISuw_wo;@F(&)G0LXn|fjKac&a?3-ukbaz7E_&+=W= zx$-Gb5!K?nV4R6O`bpXHJcQ0IwBy`mWo_gEyehRkX~3tvZ6Z!sj;%zcf)>f2w+gjB zOW-jAugF)8vb5B+XLS>To^4Y+G8Y=-s_l!O^}X}F(du)b(>QRQ_2l$6GRj%p?t92S zGK3H}A2sWF-CFiV{zF4tOj2FOs*mR`+Eu^xojVAoWA1#Jfjfq)<%u$vN)R>A7=k#C zTY&pErUo*E;{oxFSDeIWI?hE_V2? z%zS_SCcopI0b0ypdy7@_V-PT=Wywj4?$2pFcr+vXG&WLTMGne~TjmKLbz|pu#BkEZg ziMtR=t>GudqN1ehP40WizW1}c+)Ls1eJ+iG*u%0FdZF|mm@8QI*m~!t6m$W1SUa`2 z>yH)kw|tC=J&U%8Q^v857zJ$W(?Qy!@Jt@0-EowcU&r{2CoQrVJonl4+tzVQpFiu_ zY2HD{dF*|&^`6+RLl^CR&+#7U_v{_ee`+8#y9ZP zfsMlH#n3I#RXwamHz;yLwM1}#fBn@g@)>8KOG!lMBaOQGhPRZ;YH@jjGQpetZ#J1& zYnPLCSH*PAGG7JbacdUcG%!Y|=(eR?qv#HZX&NQ3ZF`i^)OAJN5Ru>7itJ*e&n6$g z%lw3+>JF!c{0ql?M_czN=(Y4_@tOYi^hWSQI}Q~3g`3YG9$F$NU2m|W$s21GyNLTc z(5+ZW?R#ZQ4_n;hHdkBg_&t2%wayyrH!|B|b#ZjwxpZ7H^t*@1v1`@jSh4s5fjDii zQ`m%+KOA$xBG)_E!j`4q?kIa;cy6UA_Wm$g*q~qBZmWCD@N)EdmzCY^=lHBjjBT$o ze21V$=^d1Qi{kvE2{&+JpGpQ7W1oZi9w}n(kFyH@I!?~$-zVHdhin?vxvMsxlUvEP zojtzgYV7N<^k?CX_AdADEtGH%%Xz(~q33Xd`-1AU&M~;W;WEbU;?gzlZdmk2u|1DG z+)Z5k>hP^yp5a>^Ccn1?Om;gpa{E80=sQvAr-r}yf+dv#yWzj1B5zwh`umrC9J$sK z4TXbo3mgc9O)dP#qLH>?g_1JWF4XG_6!sf3L#q4^Myw>_1Cqk>{yRn`|D?A)O1p&@ zJh9PV*w2sF!^ZLyza?80N=N5Oul6YnGZ z#^&CRv^#Qp@8067#rCGP0GT|OKU|@)hMypNL12&ZzP5YMOrklvs__vc@=o5hKLd2+SGF7VlhNa5vUNC# z%-dc1ZnDPKZp+ZEq$SI}-%LGm=l#>PO1Puc&C9;on#{s%`poY?-EHw-O%GNXl?7B9 z5AC#DbND>{yNPEnjhyeLOL?FXQcFKBspAmO?KLRF>}9vXnY^(;NK~FrAHtP#Hh)Qb zAM=@pVQa5VnUPw@opg;qUp-XYhOgHjIvyU+E2NxjOZ_EX*riR7;8%uL*q)`VppR4m zi%gUK%d`7%CK`?V0=*VM-%qpQ!`2`2S00(XJ+t1?nZwxc@uuba5n$&*%h&4PC!Wr$ z6`|ZwcEuy@eS7h@?ibXQcZ9(EjEKTX^$^|}Rdw1YZ>Iq-(An5_#5`P6_gSYk5)J9s z(pL|AAjib=Evq#$a)$&~iB~sxT&Zo_$mVF*7nMC~rC1K(EAW}Gy30$*chG$V@{RNP z2zozPy^iCz{oB~RXHvMCtb4`8WcT6)3EMsDadm2hX}KuBHD|QwXd0sABlN@bWapv- z;U44%%U5wvrx}_>?_}^u(b{S}89CPXk1?L_oauV5@4hXs!PJfXZqwCPV;LKAq>|4A z$K}x9kVvtqjH@4U%TUxc=ev3)(Wc2<8J zJ&V@r+2g*$m!ZQ9)7w9q>pWt-2(3%_(UVtsyku|8{lBOx|% zc#i?pPlN>vw&zb`HR#4ItSi}|2lkeLy@V=c*#B%iN_>p(@0otocf%I*jYBVM+j@Lv zZNIZIp4soa%}vwg9@}S4;>@n+kWrs^{jXN+Jt9YbYBz3(?w%oI)->pQvVN|QR^V?p brKW3z{`H@9I(1Rf`Ht@toAnd(qVfL&oiT}r From 9d239d72fe8f9915f8e71187f2f92eaddd7ea4f0 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Tue, 7 Apr 2020 14:25:27 +0300 Subject: [PATCH 250/557] Revert "PDF-UA1.xml fixed error message" --- .../verapdf-profile-5-t01.xml | 21 - .../verapdf-profile-5-t02.xml | 24 - .../1/7.1 General/verapdf-profile-7-1-t04.xml | 23 - .../1/7.1 General/verapdf-profile-7-1-t05.xml | 25 - .../1/7.1 General/verapdf-profile-7-1-t08.xml | 23 - .../1/7.1 General/verapdf-profile-7-1-t09.xml | 25 - .../1/7.1 General/verapdf-profile-7-1-t10.xml | 20 - .../verapdf-profile-7-10-t01.xml | 23 - .../verapdf-profile-7-10-t02.xml | 21 - .../verapdf-profile-7-11-t01.xml | 21 - .../verapdf-profile-7-18-3-t01.xml | 21 - PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml | 29 -- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml | 30 -- .../verapdf-profile-7-20-t01.xml | 21 - .../verapdf-profile-7-21-3-1-t01.xml | 31 -- .../verapdf-profile-7-21-3-2-t01.xml | 25 - .../verapdf-profile-7-21-3-3-t01.xml | 40 -- .../verapdf-profile-7-21-3-3-t02.xml | 23 - .../verapdf-profile-7-21-3-3-t03.xml | 38 -- .../verapdf-profile-7-21-4-1-t01.xml | 23 - .../verapdf-profile-7-21-4-1-t03.xml | 23 - .../verapdf-profile-7-21-4-2-t01.xml | 23 - .../verapdf-profile-7-21-4-2-t02.xml | 23 - .../verapdf-profile-7-21-5-t01.xml | 23 - .../verapdf-profile-7-21-6-t01.xml | 23 - .../verapdf-profile-7-21-6-t02.xml | 27 - .../verapdf-profile-7-21-6-t03.xml | 21 - .../verapdf-profile-7-21-6-t04.xml | 23 - .../verapdf-profile-7-21-7-t01.xml | 25 - .../verapdf-profile-7-21-7-t02.xml | 21 - .../verapdf-profile-7-21-8-t01.xml | 23 - .../7.3 Graphics/verapdf-profile-7-3-t01.xml | 25 - .../verapdf-profile-7-4-4-t01.xml | 21 - .../verapdf-profile-7-4-4-t02.xml | 26 - .../verapdf-profile-7-4-4-t03.xml | 26 - .../verapdf-profile-7-7-t01.xml | 25 - PDF_UA/PDF-UA1.xml | 468 ------------------ 37 files changed, 1353 deletions(-) delete mode 100644 PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml delete mode 100644 PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml delete mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml delete mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml delete mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml delete mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml delete mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml delete mode 100644 PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml delete mode 100644 PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml delete mode 100644 PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml delete mode 100644 PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml delete mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml delete mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml delete mode 100644 PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml delete mode 100644 PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml delete mode 100644 PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml delete mode 100644 PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml delete mode 100644 PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml delete mode 100644 PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml delete mode 100644 PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml delete mode 100644 PDF_UA/PDF-UA1.xml diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml deleted file mode 100644 index 79ac6acb..00000000 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 14289-1:2014 - 5 Version identification - PDF/UA Identification Schema - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. -
- - - - - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. - UAIdentification_size == 1 - - The document metadata stream doesn't contains PDF/UA Identification Schema. - - - - - - -
diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml deleted file mode 100644 index ab6cf06d..00000000 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml +++ /dev/null @@ -1,24 +0,0 @@ - - -
- ISO 14289-1:2014 - 5 Version identification - Part number - The value of pdfuaid:part shall be the part number of the International Standard to which the file - conforms. -
- - - - - The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. - part == 1 - - The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA conforming file. - - part - - - - - - -
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml deleted file mode 100644 index 6db2b5b1..00000000 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.1 General - Suspects - The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. -
- - - - - The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. - Suspects == false - - Suspects entry of the MarkInfo dictionary is not present in the document catalog or is set to true - - - - - - - - -
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml deleted file mode 100644 index 3803373a..00000000 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml +++ /dev/null @@ -1,25 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.1 General - Standard roles - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. -
- - - - - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. - standardType != null - - Non-standard structure type is not mapped to a standard type - - - - - - - - -
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml deleted file mode 100644 index 8f0a8bb1..00000000 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.1 General - Metadata key in the Catalog - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. -
- - - - - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. - metadata_size == 1 - - The document catalog dictionary doesn't contain metadata key. - - - - - - - - -
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml deleted file mode 100644 index 985e3986..00000000 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml +++ /dev/null @@ -1,25 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.1 General - Dc title - The Metadata stream in the document’s catalog dictionary shall contain a dc:title entry, where dc is the - recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which - clearly identifies the document. -
- - - - - The Metadata stream in the document’s catalog dictionary shall contain a dc:title entry, where dc is the - recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which - clearly identifies the document. - dc_title != null - - Metadata stream does not contain dc:title - - - - - - -
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml deleted file mode 100644 index cc29ab1c..00000000 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml +++ /dev/null @@ -1,20 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.1 General - DisplayDocTitle - The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. -
- - - - - The document catalog dictionary shall include a MarkInfo dictionary containing a DisplayDocTitle key, whose value shall be true. - DisplayDocTitle == true - - DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true - - - - - -
diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml deleted file mode 100644 index 523af616..00000000 --- a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.10 Optional content - Name key present - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. -
- - - - - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. - Name != null && Name.length() > 0 - - Missing or empty Name entry of the optional content configuration dictionary - - - - - - -
diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml deleted file mode 100644 index fae049d6..00000000 --- a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.10 Optional content - Order key - The AS key shall not appear in any optional content configuration dictionary. -
- - - - - The AS key shall not appear in any optional content configuration dictionary. - AS == null - - AS key is present in the optional content configuration dictionary - - - - - - -
diff --git a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml deleted file mode 100644 index b92db74e..00000000 --- a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.11 Embedded files - F and UF keys - The file specification dictionary for an embedded file shall contain the F and UF keys -
- - - - - The file specification dictionary for an embedded file shall contain the F and UF keys - containsEF == false || (F != null && UF != null) - - The file specification dictionary for an embedded file does not contain either F or EF key - - - - - - -
diff --git a/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml deleted file mode 100644 index da74cd30..00000000 --- a/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.18 Annotations - 7.18.3 Tab order - Tabs in page with annotations - Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. -
- - - - - Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. - annots_size == 0 || Tabs == 'S' - - A page containing an annotation does not contain a Tabs key or has a Tabs key with a value other than S. - - - - - - -
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml deleted file mode 100644 index 0021ebd0..00000000 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml +++ /dev/null @@ -1,29 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.2 Text - Unicode character maps - The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, - as described in PDF Reference 5.9, unless the font meets any of the following three conditions: - (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; - (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. -
- - - - - The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, - as described in PDF Reference 5.9, unless the font meets any of the following three conditions: - (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; - (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. - toUnicode != null - - The font does not define Unicode character map - - - - - - -
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml deleted file mode 100644 index 343c4ace..00000000 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml +++ /dev/null @@ -1,30 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.2 Text - Natural language specification - 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-1:2008, 14.9.2. - A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag - as defined in RFC 3066, Tags for the Identification of Languages. -
- - - - - 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-1:2008, 14.9.2. - A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag - as defined in RFC 3066, Tags for the Identification of Languages. - /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - - Non-standard structure type is not mapped to a standard type - - - - - - - - - -
diff --git a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml deleted file mode 100644 index 7426059f..00000000 --- a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.20 XObjects - Reference XObjects - A conforming file shall not contain any reference XObjects -
- - - - - A conforming file shall not contain any reference XObjects - containsRef == false - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml deleted file mode 100644 index bdbfb3c3..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml +++ /dev/null @@ -1,31 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CIDSystemInfo - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. -
- - - - - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml deleted file mode 100644 index bf886c04..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml +++ /dev/null @@ -1,25 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CIDToGIDMap - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. -
- - - - - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml deleted file mode 100644 index d6bf0200..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml +++ /dev/null @@ -1,40 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. -
- - - - - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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" || - embeddedFile_size == 1 - - A non-standard CMap is not embedded - - - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml deleted file mode 100644 index 12a0c8bb..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - WMode - 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. -
- - - - - 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. - WMode == dictWMode - - WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml deleted file mode 100644 index 0a4aa788..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml +++ /dev/null @@ -1,38 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. -
- - - - - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. - 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" - - A CMap references another non-standard CMap - - - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml deleted file mode 100644 index eb31414d..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - General - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. -
- - - - - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 - - The font program is not embedded - - - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml deleted file mode 100644 index 444701d7..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - Glyphs - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. -
- - - - - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. - renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml deleted file mode 100644 index 3b63b378..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CharSet entry in Type1 fonts - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. -
- - - - - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true - - A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml deleted file mode 100644 index f79f0a03..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CIDSet entry in CID Fonts - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. -
- - - - - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - - A CID Font subset does not define CIDSet entry in its Descriptor dictionary - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml deleted file mode 100644 index c78e9f24..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.5 Font metrics - Font metrics - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. -
- - - - - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true - - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml deleted file mode 100644 index 92e5c867..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps for non-symbolic TrueType fonts - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. -
- - - - - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true - - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml deleted file mode 100644 index c129b022..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml +++ /dev/null @@ -1,27 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - Non-symbolic TrueType fonts - 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. -
- - - - - 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml deleted file mode 100644 index 3e012c0e..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - Symbolic TrueType fonts - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary -
- - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml deleted file mode 100644 index 9635fede..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps in the symbolic TrueType font program - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. -
- - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. - isSymbolic == false || nrCmaps == 1 || cmap30Present == true - - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml deleted file mode 100644 index 69efc87c..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml +++ /dev/null @@ -1,25 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Unicode mapping - 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 ISO 19005-2:2011, 6.2.11.7.2. -
- - - - - 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 ISO 19005-2, 6.2.11.7.2. - toUnicode != null - - The glyph can not be mapped to Unicode - - - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml deleted file mode 100644 index 6c90500c..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Valid Unicode values - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. -
- - - - - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - - The glyph has an invalid Unicode value - - - - - - -
diff --git a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml deleted file mode 100644 index a3f2c98f..00000000 --- a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml +++ /dev/null @@ -1,23 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.21 Fonts - 7.21.8 Use of .notdef glyph - Use of .notdef glyph - A PDF/A-2 compliant document 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. -
- - - - - A PDF/A-2 compliant document 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. - name != ".notdef" - - The document contains a reference to the .notdef glyph - - - - - - -
diff --git a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml deleted file mode 100644 index 189283bf..00000000 --- a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml +++ /dev/null @@ -1,25 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.3 Graphics - Figure alternative and replacement text - Figure tags shall include an alternative representation or replacement text that represents the contents - marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 -
- - - - - Figure tags shall include an alternative representation or replacement text that represents the contents - marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') - - Figure tag alternative or replacement text missing - - - - - - - - -
diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml deleted file mode 100644 index 763cf3c3..00000000 --- a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - number of H - Each node in the tag tree shall contain at most one child H tag. -
- - - - - Each node in the tag tree shall contain at most one child H tag. - kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 - - A node contains more than one H tag - - - - - - -
diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml deleted file mode 100644 index d75e512e..00000000 --- a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml +++ /dev/null @@ -1,26 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn - All documents shall be either strongly or weakly structured, but not both. -
- - - - - All documents shall be either strongly or weakly structured, but not both. - usesHn == false - - Document uses both H and H# tags - - - - - - - - false - true - - -
diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml deleted file mode 100644 index f81cb84e..00000000 --- a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml +++ /dev/null @@ -1,26 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn - All documents shall be either strongly or weakly structured, but not both. -
- - - - - All documents shall be either strongly or weakly structured, but not both. - usesH == false - - Document uses both H and H# tags - - - - - - - - false - true - - -
diff --git a/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml deleted file mode 100644 index ed201ff9..00000000 --- a/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml +++ /dev/null @@ -1,25 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.7 Mathematical exspressions - Alt and ActualText in Formula - All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, - 14.8.4.5 and shall have Alt or ActualText attributes -
- - - - - All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, - 14.8.4.5 and shall have Alt or ActualText attributes - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') - - Formula tag is missing Alt or ActualText attributes - - - - - - - - -
diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml deleted file mode 100644 index 9c5699a0..00000000 --- a/PDF_UA/PDF-UA1.xml +++ /dev/null @@ -1,468 +0,0 @@ - - -
- PDF/UA-1 valudation profile - Validation rules against ISO 14289-1:2014/description> -
- - - - - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. - UAIdentification_size == 1 - - The document metadata stream doesn't contain PDF/UA Identification Schema. - - - - - - - The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. - part == 1 - - The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA conforming file. - - part - - - - - - - The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. - Suspects == false - - Suspects entry of the MarkInfo dictionary is not present in the document catalog or is set to true - - - - - - - - - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. - standardType != null - - Non-standard structure type is not mapped to a standard type - - - - - - - - - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. - metadata_size == 1 - - The document catalog dictionary doesn't contain metadata key. - - - - - - - - - The Metadata stream in the documentтАЩs catalog dictionary shall contain a dc:title entry, where dc is the - recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which - clearly identifies the document. - dc_title != null - - Metadata stream does not contain dc:title - - - - - - - The document catalog dictionary shall include a MarkInfo dictionary containing a DisplayDocTitle key, whose value shall be true. - DisplayDocTitle == true - - DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true - - - - - - - The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, - as described in PDF Reference 5.9, unless the font meets any of the following three conditions: - (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; - (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. - toUnicode != null - - The font does not define Unicode character map - - - - - - - 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-1:2008, 14.9.2. - A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag - as defined in RFC 3066, Tags for the Identification of Languages. - /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - - Non-standard structure type is not mapped to a standard type - - - - - - - - - - Figure tags shall include an alternative representation or replacement text that represents the contents - marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') - - Figure tag alternative or replacement text missing - - - - - - - - - Each node in the tag tree shall contain at most one child H tag. - kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 - - A node contains more than one H tag - - - - - - - All documents shall be either strongly or weakly structured, but not both. - usesHn == false - - Document uses both H and H# tags - - - - - - - All documents shall be either strongly or weakly structured, but not both. - usesH == false - - Document uses both H and H# tags - - - - - - - All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, - 14.8.4.5 and shall have Alt or ActualText attributes - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') - - Formula tag is missing Alt or ActualText attributes - - - - - - - - - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. - Name != null && Name.length() > 0 - - Missing or empty Name entry of the optional content configuration dictionary - - - - - - - The AS key shall not appear in any optional content configuration dictionary. - AS == null - - AS key is present in the optional content configuration dictionary - - - - - - - The file specification dictionary for an embedded file shall contain the F and UF keys - containsEF == false || (F != null && UF != null) - - The file specification dictionary for an embedded file does not contain either F or EF key - - - - - - - Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. - annots_size == 0 || Tabs == 'S' - - A page containing an annotation does not contain a Tabs key or has a Tabs key with a value other than S. - - - - - - - A conforming file shall not contain any reference XObjects - containsRef == false - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - - - - - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - - - - - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - - - - - - - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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" || - embeddedFile_size == 1 - - A non-standard CMap is not embedded - - - - - - - - - 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. - WMode == dictWMode - - WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - - - - - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. - 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" - - A CMap references another non-standard CMap - - - - - - - - - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 - - The font program is not embedded - - - - - - - - - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. - renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - - - - - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true - - A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program - - - - - - - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - - A CID Font subset does not define CIDSet entry in its Descriptor dictionary - - - - - - - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true - - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - - - - - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true - - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - - - - - - - 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - - - - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 тАУ Platform ID=3, Encoding ID=0) encoding. - isSymbolic == false || nrCmaps == 1 || cmap30Present == true - - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - - - - - 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 ISO 19005-2, 6.2.11.7.2. - toUnicode != null - - The glyph can not be mapped to Unicode - - - - - - - - - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - - The glyph has an invalid Unicode value - - - - - - - A PDF/A-2 compliant document 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. - name != ".notdef" - - The document contains a reference to the .notdef glyph - - - - - - - - false - true - - - false - true - - -
From 1aa5701d38be59727af286d16551d6c34a6c1d54 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Thu, 23 Apr 2020 18:23:10 +0300 Subject: [PATCH 251/557] Fixed the check for the presence of the appearance stream --- .../6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml index 54ff6626..e55dd940 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml @@ -14,7 +14,7 @@ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 88c641ed..5a07b31f 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -911,7 +911,7 @@ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 5bef7cb0..842d66d5 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -897,7 +897,7 @@ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 28af8482..9e3b4314 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1092,7 +1092,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index f6042da2..6b4eb452 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1054,7 +1054,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 405e9607..8d45cc96 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1077,7 +1077,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 0a3fcf87..f017da1c 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1092,7 +1092,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 4ed79ef4..3f27c9dd 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1054,7 +1054,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 5a2dd64c..edfddc9b 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1077,7 +1077,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type From f49762c42598cc6b60d90d9f56cfc20782a5b341 Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Tue, 28 Jul 2020 14:38:43 +0300 Subject: [PATCH 252/557] Fix rules 6.2.4.2.2, 6.2.11.6.1 (#204) --- .../verapdf-profile-6-2-11-6-t01.xml | 2 +- .../verapdf-profile-6-2-4-2-t02.xml | 2 +- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml index d321a66f..e35fb187 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml @@ -11,7 +11,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml index b5f778a1..7865e708 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml @@ -10,7 +10,7 @@ - OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both. overprintFlag == false || OPM == 0 diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 9e3b4314..cc882b1d 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -389,7 +389,7 @@ - OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both. overprintFlag == false || OPM == 0 @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 6b4eb452..30e9b4c1 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -389,7 +389,7 @@ - OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both. overprintFlag == false || OPM == 0 @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 8d45cc96..e5ede716 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -389,7 +389,7 @@ - OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both. overprintFlag == false || OPM == 0 @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index f017da1c..d67c55b6 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -389,7 +389,7 @@ - OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both. overprintFlag == false || OPM == 0 @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 3f27c9dd..0411861a 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -389,7 +389,7 @@ - OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both. overprintFlag == false || OPM == 0 @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index edfddc9b..a7726858 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -389,7 +389,7 @@ - OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both. overprintFlag == false || OPM == 0 @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables From f4113f9d61cb279b53148a5fb7bf0f4fbcf57458 Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Fri, 21 Aug 2020 11:53:19 +0300 Subject: [PATCH 253/557] Fix descriptions of rules 7.2.11.2.5, 6.2.11.6.2, 6.3.2.5 (#207) --- .../verapdf-profile-6-3-2-t05.xml | 2 +- .../verapdf-profile-6-2-11-7-t03.xml | 4 ++-- .../verapdf-profile-6-7-3-t02.xml | 2 +- .../verapdf-profile-6-2-11-2-t05.xml | 2 +- .../verapdf-profile-6-2-11-6-t02.xml | 9 ++++++--- .../verapdf-profile-6-4-3-t01.xml | 6 +++--- .../verapdf-profile-6-4-3-t02.xml | 6 +++--- .../verapdf-profile-6-2-11-7-t01.xml | 4 ++-- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 15 +++++++++------ PDF_A/PDFA-2B.xml | 15 +++++++++------ PDF_A/PDFA-2U.xml | 15 +++++++++------ PDF_A/PDFA-3A.xml | 17 ++++++++++------- PDF_A/PDFA-3B.xml | 15 +++++++++------ PDF_A/PDFA-3U.xml | 15 +++++++++------ 16 files changed, 76 insertions(+), 55 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml index f9d777ff..68a05c66 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t05.xml @@ -10,7 +10,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry diff --git a/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml index 12dbfd65..b58cb367 100644 --- a/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml +++ b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml @@ -21,8 +21,8 @@ - - + + diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml index add7df94..6983b9d0 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.8.3 Artefacts - Standard roles + ISO 19005-2:2011 - 6.7.3 Artefacts - Standard roles All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root.
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml index 0e5bfbca..c872c01d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml @@ -12,7 +12,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml index 4425717b..6327e18b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml @@ -10,9 +10,12 @@ - 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. + 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml index 04b90626..3b656ba9 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml @@ -17,9 +17,9 @@ - - - + + + diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml index f43d0525..7f0234eb 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml @@ -21,9 +21,9 @@ - - - + + + diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml index d014dd8e..5edfaf2f 100644 --- a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml +++ b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml @@ -17,8 +17,8 @@
- - + + diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 5a07b31f..e2f694f1 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -586,7 +586,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 842d66d5..88d0ec22 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -586,7 +586,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index cc882b1d..32115997 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -748,7 +748,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -954,9 +954,12 @@ - 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. + 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) @@ -1274,7 +1277,7 @@ - + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" @@ -1589,7 +1592,7 @@ null - gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect
diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 30e9b4c1..bc681419 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -748,7 +748,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -954,9 +954,12 @@ - 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. + 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) @@ -1236,7 +1239,7 @@ - + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" @@ -1497,7 +1500,7 @@ null - gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect
diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index e5ede716..21c99473 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -748,7 +748,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -954,9 +954,12 @@ - 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. + 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) @@ -1259,7 +1262,7 @@ - + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" @@ -1520,7 +1523,7 @@ null - gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index d67c55b6..30b93ee3 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -748,7 +748,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -954,10 +954,13 @@ - 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic + TrueType fonts shall not 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or @@ -1274,7 +1277,7 @@ - + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" @@ -1611,7 +1614,7 @@ null - gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 0411861a..0aeaeaff 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -748,7 +748,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -954,9 +954,12 @@ - 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. + 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic + TrueType fonts shall not 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) @@ -1236,7 +1239,7 @@ - + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" @@ -1519,7 +1522,7 @@ null - gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index a7726858..66714d33 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -748,7 +748,7 @@ All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -954,9 +954,12 @@ - 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. + 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic + TrueType fonts shall not 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) @@ -1259,7 +1262,7 @@ - + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" @@ -1542,7 +1545,7 @@ null - gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect + gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect From dec4bf6bfe2924d13fe75d43c89975e87fc9aa7d Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Fri, 21 Aug 2020 18:20:38 +0300 Subject: [PATCH 254/557] Fix rules 6.9.3, 6.8.1 (#209) --- .../verapdf-profile-6-9-t03.xml | 16 +++++++------- .../verapdf-profile-6-9-t04.xml | 21 ------------------ .../verapdf-profile-6-1-13-t01.xml | 2 +- .../verapdf-profile-6-1-13-t02.xml | 2 +- .../verapdf-profile-6-1-13-t03.xml | 2 +- .../verapdf-profile-6-1-13-t04.xml | 2 +- .../verapdf-profile-6-1-13-t05.xml | 2 +- .../verapdf-profile-6-1-13-t07.xml | 2 +- .../verapdf-profile-6-1-13-t08.xml | 2 +- .../verapdf-profile-6-1-13-t09.xml | 2 +- .../verapdf-profile-6-1-13-t10.xml | 2 +- .../verapdf-profile-6-1-13-t11.xml | 2 +- .../verapdf-profile-6-1-2-t01.xml | 2 +- .../verapdf-profile-6-1-2-t02.xml | 2 +- .../verapdf-profile-6-1-3-t01.xml | 2 +- .../verapdf-profile-6-1-3-t02.xml | 2 +- .../verapdf-profile-6-1-3-t03.xml | 2 +- .../verapdf-profile-6-1-4-t02.xml | 2 +- .../verapdf-profile-6-1-6-t01.xml | 2 +- .../verapdf-profile-6-1-6-t02.xml | 2 +- .../verapdf-profile-6-1-7-t01.xml | 2 +- .../verapdf-profile-6-1-7-t02.xml | 2 +- .../verapdf-profile-6-1-7-t03.xml | 2 +- .../verapdf-profile-6-1-8-t01.xml | 2 +- .../verapdf-profile-6-1-9-t01.xml | 2 +- .../verapdf-profile-6-2-11-2-t01.xml | 2 +- .../verapdf-profile-6-2-11-2-t02.xml | 2 +- .../verapdf-profile-6-2-11-2-t03.xml | 2 +- .../verapdf-profile-6-2-11-2-t04.xml | 2 +- .../verapdf-profile-6-2-11-2-t05.xml | 2 +- .../verapdf-profile-6-2-11-2-t06.xml | 2 +- .../verapdf-profile-6-2-11-2-t07.xml | 2 +- .../verapdf-profile-6-2-11-3-t01.xml | 2 +- .../verapdf-profile-6-2-11-3-t02.xml | 2 +- .../verapdf-profile-6-2-11-3-t03.xml | 2 +- .../verapdf-profile-6-2-11-3-t04.xml | 2 +- .../verapdf-profile-6-2-11-3-t05.xml | 2 +- .../verapdf-profile-6-2-11-4-t01.xml | 2 +- .../verapdf-profile-6-2-11-4-t02.xml | 2 +- .../verapdf-profile-6-2-11-4-t03.xml | 2 +- .../verapdf-profile-6-2-11-4-t04.xml | 2 +- .../verapdf-profile-6-2-11-5-t01.xml | 2 +- .../verapdf-profile-6-2-11-8-t01.xml | 2 +- .../verapdf-profile-6-2-2-t01.xml | 2 +- .../verapdf-profile-6-2-3-t01.xml | 2 +- .../verapdf-profile-6-2-3-t02.xml | 2 +- .../verapdf-profile-6-2-3-t03.xml | 2 +- .../verapdf-profile-6-2-5-t01.xml | 2 +- .../verapdf-profile-6-2-5-t02.xml | 2 +- .../verapdf-profile-6-2-5-t03.xml | 2 +- .../verapdf-profile-6-2-5-t04.xml | 2 +- .../verapdf-profile-6-2-5-t05.xml | 2 +- .../verapdf-profile-6-2-5-t06.xml | 2 +- .../verapdf-profile-6-2-6-t01.xml | 2 +- .../verapdf-profile-6-2-8-t01.xml | 2 +- .../verapdf-profile-6-2-8-t02.xml | 2 +- .../verapdf-profile-6-2-8-t03.xml | 2 +- .../verapdf-profile-6-2-9-t01.xml | 2 +- .../verapdf-profile-6-2-9-t02.xml | 2 +- .../verapdf-profile-6-2-9-t03.xml | 2 +- .../verapdf-profile-6-3-1-t01.xml | 2 +- .../verapdf-profile-6-3-2-t01.xml | 2 +- .../verapdf-profile-6-3-2-t02.xml | 2 +- .../verapdf-profile-6-3-3-t01.xml | 2 +- .../verapdf-profile-6-3-3-t02.xml | 2 +- .../verapdf-profile-6-4-1-t01.xml | 2 +- .../verapdf-profile-6-4-1-t02.xml | 2 +- .../verapdf-profile-6-4-1-t03.xml | 2 +- .../verapdf-profile-6-4-2-t01.xml | 2 +- .../verapdf-profile-6-4-2-t02.xml | 2 +- .../verapdf-profile-6-5-1-t01.xml | 2 +- .../verapdf-profile-6-5-1-t02.xml | 2 +- .../verapdf-profile-6-5-2-t01.xml | 2 +- .../verapdf-profile-6-5-2-t02.xml | 2 +- .../verapdf-profile-6-8-t02.xml | 2 +- ...-8-t01.xml => verapdf-profile-6-8-t05.xml} | 4 ++-- .../verapdf-profile-6-6-4-t03.xml | 2 +- PDF_A/PDFA-1A.xml | 12 +--------- PDF_A/PDFA-1B.xml | 12 +--------- PDF_A/PDFA-2A.xml | 22 +++++++++---------- PDF_A/PDFA-2B.xml | 22 +++++++++---------- PDF_A/PDFA-2U.xml | 22 +++++++++---------- 82 files changed, 119 insertions(+), 160 deletions(-) delete mode 100644 PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml rename PDF_A/2b/6.8 Embedded files/{verapdf-profile-6-8-t01.xml => verapdf-profile-6-8-t05.xml} (98%) diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml index 96312d3d..1248c218 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml @@ -1,17 +1,17 @@ - -
- ISO 19005-1:2005 - 6.9 Interactive Fields - Form fields - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + +
+ ISO 19005-1:2005 - 6.9 Interactive Forms - Form field appearance + Every form field shall have an appearance dictionary associated with the field's data.
- + - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - containsAA == false + Every form field shall have an appearance dictionary associated with the field's data. + Subtype != "Widget" || AP != null - A Form field dictionary contains the AA entry + Form field does not have an appearance dictionary associated with the field's data. diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml deleted file mode 100644 index 10cb069b..00000000 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t04.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 19005-1:2005 - 6.9 Interactive Forms - Form field appearance - Every form field shall have an appearance dictionary associated with the field's data. -
- - - - - Every form field shall have an appearance dictionary associated with the field's data. - Subtype != "Widget" || AP != null - - Form field does not have an appearance dictionary associated with the field's data. - - - - - - -
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml index e62c0bfc..ac976181 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.12 Implementation limits - Integer A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml index 51fab93c..3b3c281c 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.12 Implementation limits - Real (max) A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml index 2dc844e0..c9fa9284 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.12 Implementation limits - String A conforming file shall not contain any string longer than 32767 bytes. diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml index c6b4f230..45f3555c 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.12 Implementation limits - Name A conforming file shall not contain any name longer than 127 bytes. diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml index bf889c2b..83b560a4 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.12 Implementation limits - Real (min) A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml index c61c84bc..2e4771f0 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.12 Implementation limits - Indirect obejcts A conforming file shall not contain more than 8388607 indirect objects diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml index dcc1b1e4..d6ae7ad8 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.12 Implementation limits - Graphics state nesting A conforming file shall not nest q/Q pairs by more than 28 nesting levels. diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml index 60d7e8ca..2a0a9411 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.12 Implementation limits - DeviceN components A conforming file shall not contain a DeviceN colour space with more than 32 colourants. diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml index 9a2c69c8..ceb5007f 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.12 Implementation limits - CID A conforming file shall not contain a CID value greater than 65535. diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml index 0dfb0342..d110523d 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.12 Implementation limits - page boundaries The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml index 7a32f3d9..7cf0377e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.2 File header - PDF header The file header shall begin at byte zero and shall consist of “%PDF-1.n” followed by a single EOL marker, diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml index b6492018..e95221dd 100644 --- a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.2 File header - Binary comment The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index 1d36c40f..edd52923 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.3 File trailer - ID keyword The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml index fc98af00..6ea2a172 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.3 File trailer - Encrypt The keyword Encrypt shall not be used in the trailer dictionary diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml index ef962def..4bcfe4a8 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.3 File trailer - EOF No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. diff --git a/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml index d899154f..ebf21a02 100644 --- a/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.4 Cross reference table - Spacings after xref The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker diff --git a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml index 40e40a6a..bb3ae3fa 100644 --- a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.6 String objects - Even number of characters The number of hexadecimal digits in a hexadecimal string shall always be even diff --git a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml index d27f4773..43466895 100644 --- a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.6 String objects - Characters range A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml index d07b25f2..e4ab28b0 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - Correct Length The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml index 2e0b084d..edffdc22 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - Keywords spacing The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml index 9aaa877e..6c693389 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - File specification A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys diff --git a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml index e9e4695e..1b827a12 100644 --- a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.8 Name objects Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with diff --git a/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml index baad403e..075617f6 100644 --- a/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.1.9 Indirect objects - Spacings The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml index 032f7402..e578701b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Type entry All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml index b4ad19f4..a7066c3d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Subtype entry All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml index 7ced51a9..7c17b06d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - BaseFont entry All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml index 97dbbd95..783ae94e 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - FirstChar entry All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml index c872c01d..3cd4742d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - LastChat entry All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml index 4d5edbc0..c5cd7bb4 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - Widths entry All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml index e3a11e72..d0623984 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - embedded fond Subtype All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml index 324244d3..f2953d19 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDSystemInfo For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml index 456693f8..eb9b2f52 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-1:2005 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDToGIDMap ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml index 02c7bba0..14ed85d7 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CMaps All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml index 19994fc9..01d2d05f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - WMode For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml index df073c74..9d5e0df0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CMaps A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml index 82c2ae42..0cdf5ec3 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - General The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml index 1075c2dd..c3707a34 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - Glyphs Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml index a97eac51..2c85ede7 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CharSet entry in Type1 fonts If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml index a8dd57b8..55bdd048 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CIDSet entry in CID Fonts If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml index 9f42aef0..ed22b0b7 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.5 Font metrics For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml index 790f6373..ea59ab0d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.8 Use of .notdef glyph A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml index 0ad37d99..839ed823 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.2 Content streams Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml index 2404b11b..b2ad2cbc 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.3 Output intent - Valid ICC output profile The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml index 13c4d126..f2dc141e 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.3 Output intent - Matching multiple output profiles If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index 9d6401b8..f18d6a82 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.3 Output intent - DestOutputProfileRef entry In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml index 4eff7529..27db9a4a 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR key An ExtGState dictionary shall not contain the TR key diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml index 4da97b19..cb828e5d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR2 key An ExtGState dictionary shall not contain the TR2 key with a value other than Default diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml index a5f5725b..c50d5db4 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - HTP key An ExtGState dictionary shall not contain the HTP key diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml index 1f934ae2..bfe7a4b6 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone type All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml index 1f8ce48d..6c6f2945 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone name Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml index cb7cf851..6e7a1cc1 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - TransferFunction in halftones The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. diff --git a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml index 10f100e3..98458115 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.6 Rendering intents Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml index d4d677d7..d2c21695 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.8 Images - Alternates An Image dictionary shall not contain the Alternates key diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml index cceac047..a72d0537 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.8 Images - OPI An Image dictionary shall not contain the OPI key. diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml index 09ca6bf5..f46c2eaf 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.8 Images - Interpolate If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml index f0d50909..e565086b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.9 Form XObjects - 6.2.9.1 Form XObjects A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml index e98f2c51..456b751f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.9 XObjects - 6.2.9.2 Reference XObjects A conforming file shall not contain any reference XObjects diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml index 5df84c42..fec1911a 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.9 XObjects - 6.2.9.3 PostScript XObjects A conforming file shall not contain any PostScript XObjects diff --git a/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml index 4949006a..34fcf4ab 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.3.1 Annotation types Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml index a284d9d8..3c2a1985 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - F key Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml index 5dccc3c0..a66d492f 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - Generic flag values If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml index ebf5a09c..3d8b2cc9 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml index 55ee99e1..9a0fcc43 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index a4baa767..a1a994cc 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.4 Interactive Fields - 6.4.1 General - Widget annotation actions A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml index 1d2f79ad..81c1a267 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.4 Interactive forms - 6.4.1 General - Form field actions A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml index 5aa1efd7..3a2fe6b7 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.1 General - NeedAppearances flag The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml index 995aec4d..6b1de497 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.2 XFA forms - XFA key The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml index f30f5110..30861d88 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.2 XFA forms - NeedsRendering flag A document's Catalog shall not contain the NeedsRendering key. diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml index 8d09b968..d0fe1aab 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.5 Actions - 6.5.1 General - Action types The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml index ac97da96..145f262c 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.5 Actions - 6.5.1 General - Named actions Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml index 422c6825..fd3ac358 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.5.2 Trigger events - Document The document's Catalog shall not include an AA entry for an additional-actions dictionary. diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml index 036a3553..76acfca3 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.5.2 Trigger events - Page The Page dictionary shall not include an AA entry for an additional-actions dictionary. diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml index 7d3ab628..9aab88a4 100644 --- a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml +++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.8 Embedded files - F and UF keys The file specification dictionary for an embedded file shall contain the F and UF keys diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml similarity index 98% rename from PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t01.xml rename to PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml index 4fa282bd..d8fa96c5 100644 --- a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t01.xml +++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.8 Embedded files - EF key A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file @@ -8,7 +8,7 @@ - + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is compliant with either ISO 19005-1 or this part of ISO 19005. isValidPDFA12 == true diff --git a/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 94d08899..1776dd9c 100644 --- a/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Conformance level. A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index e2f694f1..4f1331f9 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1258,18 +1258,8 @@ - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - containsAA == false - - A Form field dictionary contains the AA entry - - - - - + Every form field shall have an appearance dictionary associated with the field's data. Subtype != "Widget" || AP != null diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 88d0ec22..4778011e 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1207,18 +1207,8 @@ - - - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - containsAA == false - - A Form field dictionary contains the AA entry - - - - - + Every form field shall have an appearance dictionary associated with the field's data. Subtype != "Widget" || AP != null diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 32115997..81abcd70 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1490,17 +1490,6 @@ - - - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is - compliant with either ISO 19005-1 or this part of ISO 19005. - isValidPDFA12 == true - - An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 - - - - The file specification dictionary for an embedded file shall contain the F and UF keys @@ -1511,6 +1500,17 @@ + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is + compliant with either ISO 19005-1 or this part of ISO 19005. + isValidPDFA12 == true + + An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index bc681419..86327157 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1398,17 +1398,6 @@ - - - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is - compliant with either ISO 19005-1 or this part of ISO 19005. - isValidPDFA12 == true - - An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 - - - - The file specification dictionary for an embedded file shall contain the F and UF keys @@ -1419,6 +1408,17 @@ + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is + compliant with either ISO 19005-1 or this part of ISO 19005. + isValidPDFA12 == true + + An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 21c99473..db5c3915 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1421,17 +1421,6 @@ - - - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is - compliant with either ISO 19005-1 or this part of ISO 19005. - isValidPDFA12 == true - - An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 - - - - The file specification dictionary for an embedded file shall contain the F and UF keys @@ -1442,6 +1431,17 @@ + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is + compliant with either ISO 19005-1 or this part of ISO 19005. + isValidPDFA12 == true + + An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the From f9c9931a3706d35e15c5cb48976c382b6a0eb6b7 Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Thu, 27 Aug 2020 17:56:14 +0300 Subject: [PATCH 255/557] Fix rules 6.4.1.1, 6.4.1.2, 6.4.3.1, 6.4.3.2. (#211) --- .../verapdf-profile-6-1-10-t01.xml | 2 +- .../verapdf-profile-6-1-13-t01.xml | 2 +- .../verapdf-profile-6-1-13-t02.xml | 2 +- .../verapdf-profile-6-1-13-t03.xml | 2 +- .../verapdf-profile-6-1-13-t04.xml | 2 +- .../verapdf-profile-6-1-13-t05.xml | 2 +- .../verapdf-profile-6-1-13-t07.xml | 2 +- .../verapdf-profile-6-1-13-t08.xml | 2 +- .../verapdf-profile-6-1-13-t09.xml | 2 +- .../verapdf-profile-6-1-13-t10.xml | 2 +- .../verapdf-profile-6-1-13-t11.xml | 2 +- .../6.1.2 File header/verapdf-profile-6-1-2-t01.xml | 2 +- .../6.1.2 File header/verapdf-profile-6-1-2-t02.xml | 2 +- .../6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml | 2 +- .../6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml | 2 +- .../6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml | 2 +- .../verapdf-profile-6-1-4-t02.xml | 2 +- .../6.1.6 String objects/verapdf-profile-6-1-6-t01.xml | 6 +++--- .../6.1.6 String objects/verapdf-profile-6-1-6-t02.xml | 2 +- .../6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml | 2 +- .../6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml | 2 +- .../6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml | 2 +- .../6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml | 2 +- .../verapdf-profile-6-1-9-t01.xml | 2 +- .../6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml | 2 +- .../6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml | 2 +- .../verapdf-profile-6-2-11-2-t01.xml | 2 +- .../verapdf-profile-6-2-11-2-t02.xml | 2 +- .../verapdf-profile-6-2-11-2-t03.xml | 2 +- .../verapdf-profile-6-2-11-2-t04.xml | 2 +- .../verapdf-profile-6-2-11-2-t05.xml | 2 +- .../verapdf-profile-6-2-11-2-t06.xml | 2 +- .../verapdf-profile-6-2-11-3-t01.xml | 2 +- .../verapdf-profile-6-2-11-3-t02.xml | 2 +- .../verapdf-profile-6-2-11-3-t03.xml | 2 +- .../verapdf-profile-6-2-11-3-t04.xml | 2 +- .../verapdf-profile-6-2-11-3-t05.xml | 2 +- .../verapdf-profile-6-2-11-5-t01.xml | 2 +- .../verapdf-profile-6-2-11-6-t01.xml | 2 +- .../verapdf-profile-6-2-11-6-t02.xml | 2 +- .../verapdf-profile-6-2-11-6-t03.xml | 2 +- .../verapdf-profile-6-2-11-6-t04.xml | 2 +- .../verapdf-profile-6-2-11-8-t01.xml | 2 +- .../verapdf-profile-6-2-2-t01.xml | 2 +- .../6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml | 2 +- .../6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml | 2 +- .../verapdf-profile-6-2-4-4-t02.xml | 2 +- .../verapdf-profile-6-2-6-t01.xml | 2 +- .../6.2.8.1 General/verapdf-profile-6-2-8-t01.xml | 2 +- .../6.2.8.1 General/verapdf-profile-6-2-8-t02.xml | 2 +- .../6.2.8.1 General/verapdf-profile-6-2-8-t03.xml | 2 +- .../verapdf-profile-6-2-9-t01.xml | 2 +- .../verapdf-profile-6-2-9-t02.xml | 2 +- .../verapdf-profile-6-2-9-t03.xml | 2 +- .../verapdf-profile-6-3-1-t01.xml | 2 +- .../verapdf-profile-6-3-2-t01.xml | 2 +- .../verapdf-profile-6-3-2-t02.xml | 2 +- .../verapdf-profile-6-3-3-t01.xml | 2 +- .../6.4.1 General/verapdf-profile-6-4-1-t01.xml | 6 +++--- .../6.4.1 General/verapdf-profile-6-4-1-t02.xml | 6 +++--- .../6.4.1 General/verapdf-profile-6-4-1-t03.xml | 2 +- .../6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml | 2 +- .../6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml | 2 +- .../6.5.1 General/verapdf-profile-6-5-1-t01.xml | 2 +- .../6.5.1 General/verapdf-profile-6-5-1-t02.xml | 2 +- .../6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml | 2 +- .../6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml | 2 +- .../2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml | 2 +- .../2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml | 2 +- .../verapdf-profile-6-6-4-t03.xml | 2 +- .../3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml | 2 +- .../verapdf-profile-6-6-4-t03.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 6 +++--- PDF_A/PDFA-2B.xml | 6 +++--- PDF_A/PDFA-2U.xml | 6 +++--- PDF_A/PDFA-3A.xml | 10 +++++----- PDF_A/PDFA-3B.xml | 10 +++++----- PDF_A/PDFA-3U.xml | 10 +++++----- 79 files changed, 103 insertions(+), 103 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml index 5c0d6791..1765cccf 100644 --- a/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml @@ -8,7 +8,7 @@ - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value. diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml index ac976181..830fe29d 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml @@ -7,7 +7,7 @@ - + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml index 3b3c281c..9c258dac 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml @@ -7,7 +7,7 @@ - + A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 (realValue >= -3.403e+38) && (realValue <= 3.403e+38) diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml index c9fa9284..73658bf0 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml @@ -7,7 +7,7 @@ - + A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32768 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml index 45f3555c..222223c4 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml @@ -7,7 +7,7 @@ - + A conforming file shall not contain any name longer than 127 bytes. internalRepresentation.length() <= 127 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml index 83b560a4..44b8bda0 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml @@ -7,7 +7,7 @@ - + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml index 2e4771f0..95b0f87e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml @@ -7,7 +7,7 @@ - + A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml index d6ae7ad8..88228823 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml @@ -7,7 +7,7 @@ - + A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml index 2a0a9411..c790828d 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml @@ -7,7 +7,7 @@ - + A conforming file shall not contain a DeviceN colour space with more than 32 colourants. nrComponents <= 32 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml index ceb5007f..21ec7e63 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml @@ -7,7 +7,7 @@ - + A conforming file shall not contain a CID value greater than 65535. maximalCID <= 65535 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml index d110523d..cc218f21 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml @@ -8,7 +8,7 @@ - + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml index 7cf0377e..95f01f87 100644 --- a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -8,7 +8,7 @@ - + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml index e95221dd..8a368786 100644 --- a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml @@ -8,7 +8,7 @@ - + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index edd52923..d39dec5a 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -7,7 +7,7 @@ - + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 lastID != null && lastID.length() > 0 diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml index 6ea2a172..c161e192 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml @@ -7,7 +7,7 @@ - + The keyword Encrypt shall not be used in the trailer dictionary isEncrypted != true diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml index 4bcfe4a8..ccb3445e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -7,7 +7,7 @@ - + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. postEOFDataSize == 0 diff --git a/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml index ebf21a02..80a34d45 100644 --- a/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml @@ -7,7 +7,7 @@ - + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA diff --git a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml index bb3ae3fa..f1ab3920 100644 --- a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml @@ -2,16 +2,16 @@
ISO 19005-2:2011 - 6.1.6 String objects - Even number of characters - The number of hexadecimal digits in a hexadecimal string shall always be even + Hexadecimal strings shall contain an even number of non-white-space characters
- + Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - The number of hexadecimal digits in a hexadecimal string shall always be even + A hexadecimal string contains odd number of non-white-space characters. diff --git a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml index 43466895..3be5fd99 100644 --- a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml @@ -7,7 +7,7 @@ - + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) (isHex != true) || containsOnlyHex diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml index e4ab28b0..beaf1870 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml @@ -8,7 +8,7 @@ - + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. isLengthCorrect diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml index edffdc22..0b2364bb 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml @@ -8,7 +8,7 @@ - + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml index 6c693389..3c9b647f 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml @@ -7,7 +7,7 @@ - + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys F == null && FFilter == null && FDecodeParms == null diff --git a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml index 1b827a12..0443f0f8 100644 --- a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml @@ -8,7 +8,7 @@ - + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true diff --git a/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml index 075617f6..f6eecb2b 100644 --- a/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml @@ -9,7 +9,7 @@ - + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker. diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml index 81b50da7..61581753 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml @@ -7,7 +7,7 @@ - + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml index f14e5747..61034351 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml @@ -9,7 +9,7 @@ - + If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml index e578701b..a55514f7 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml @@ -9,7 +9,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml index a7066c3d..c7917c1d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml @@ -10,7 +10,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml index 7c17b06d..5d97a57f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml @@ -9,7 +9,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml index 783ae94e..8926e625 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml @@ -9,7 +9,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml index 3cd4742d..796e6ce6 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml @@ -9,7 +9,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml index c5cd7bb4..d82bd386 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml @@ -9,7 +9,7 @@ - + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml index f2953d19..2d106e64 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml @@ -12,7 +12,7 @@ - + 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 is Identity-H or Identity-V, any values of Registry, Ordering, diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml index eb9b2f52..07c72f2e 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml @@ -8,7 +8,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml index 14ed85d7..a692f5f6 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml @@ -8,7 +8,7 @@ - + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml index 01d2d05f..66fa3591 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml @@ -8,7 +8,7 @@ - + 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. WMode == dictWMode diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml index 9d5e0df0..3efcc7a4 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml @@ -7,7 +7,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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" || diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml index ed22b0b7..e291ab57 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml @@ -8,7 +8,7 @@ - + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml index e35fb187..59cef01f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml @@ -8,7 +8,7 @@ - + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml index 6327e18b..8f7aa8b6 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml @@ -9,7 +9,7 @@ - + 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 diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml index 7287babf..e8ffe8c4 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t03.xml @@ -7,7 +7,7 @@ - + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary isSymbolic == false || Encoding == null diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml index 742acb4c..6d4b3ea2 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml @@ -8,7 +8,7 @@ - + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml index ea59ab0d..b613a58a 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml @@ -8,7 +8,7 @@ - + A PDF/A-2 compliant document 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. name != ".notdef" diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml index 839ed823..0b67b499 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml @@ -7,7 +7,7 @@ - + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. false diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml index b2ad2cbc..cdc9db73 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml @@ -8,7 +8,7 @@ - + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml index f2dc141e..80ba38b9 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml @@ -9,7 +9,7 @@ - + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml index 821dcb90..c0e3dab2 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml @@ -9,7 +9,7 @@ - + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression diff --git a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml index 98458115..46128298 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml @@ -8,7 +8,7 @@ - + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml index d2c21695..a08e2139 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml @@ -7,7 +7,7 @@ - + An Image dictionary shall not contain the Alternates key containsAlternates == false diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml index a72d0537..ee497335 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml @@ -7,7 +7,7 @@ - + An Image dictionary shall not contain the OPI key containsOPI == false diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml index f46c2eaf..ecfcce18 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml @@ -8,7 +8,7 @@ - + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false. Interpolate == false diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml index e565086b..1890b64b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml @@ -7,7 +7,7 @@ - + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml index 456b751f..caa62e66 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml @@ -7,7 +7,7 @@ - + A conforming file shall not contain any reference XObjects containsRef == false diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml index fec1911a..f8a91cfb 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml @@ -7,7 +7,7 @@ - + A conforming file shall not contain any PostScript XObjects Subtype != "PS" diff --git a/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml index 34fcf4ab..2fe1cbaf 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -7,7 +7,7 @@ - + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml index 3c2a1985..7192c541 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml @@ -7,7 +7,7 @@ - + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml index a66d492f..3bed2565 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml @@ -7,7 +7,7 @@ - + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml index 3d8b2cc9..11f19393 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml @@ -10,7 +10,7 @@ - + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index a1a994cc..4c8fc617 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.4 Interactive Fields - 6.4.1 General - Widget annotation actions - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys.
- - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + + A Widget annotation dictionary shall not contains the A or AA keys. Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml index 81c1a267..ff7fae46 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.4 Interactive forms - 6.4.1 General - Form field actions - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Field dictionary shall not contains the A or AA keys.
- - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + + A Field dictionary shall not contains the A or AA keys. containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml index 3a2fe6b7..ede4cf7b 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml @@ -7,7 +7,7 @@ - + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. NeedAppearances == null || NeedAppearances == false diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml index 6b1de497..820c3e3b 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml @@ -8,7 +8,7 @@ - + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. containsXFA == false diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml index 30861d88..2355550d 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml @@ -7,7 +7,7 @@ - + A document's Catalog shall not contain the NeedsRendering key. NeedsRendering == false diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml index d0fe1aab..890d0a5d 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml @@ -8,7 +8,7 @@ - + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml index 145f262c..3b390219 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml @@ -7,7 +7,7 @@ - + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml index fd3ac358..ac7a170d 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml @@ -7,7 +7,7 @@ - + The document's Catalog shall not include an AA entry for an additional-actions dictionary. containsAA == false diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml index 76acfca3..2ed9d508 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml @@ -7,7 +7,7 @@ - + The Page dictionary shall not include an AA entry for an additional-actions dictionary. containsAA == false diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml index 9aab88a4..d2c63e71 100644 --- a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml +++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml @@ -7,7 +7,7 @@ - + The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml index d8fa96c5..7a88641b 100644 --- a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml +++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml @@ -8,7 +8,7 @@ - + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is compliant with either ISO 19005-1 or this part of ISO 19005. isValidPDFA12 == true diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 059da05e..76e28647 100644 --- a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -8,7 +8,7 @@ - + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "B" || conformance == "U" || conformance == "A" diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml index 46636752..6258b1c1 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml @@ -1,6 +1,6 @@ -
+
ISO 19005-3:2012 - 6.8 Embedded files - Subtype The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used. diff --git a/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index b9b33d13..faec74d9 100644 --- a/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -8,7 +8,7 @@ - + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "U" || conformance == "A" diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 4778011e..5d48e8d9 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -99,7 +99,7 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - Hexadecimal string contains odd number of non-white-space characters + A hexadecimal string contains odd number of non-white-space characters diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 81abcd70..775e87b5 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -77,7 +77,7 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - The number of hexadecimal digits in a hexadecimal string shall always be even + A hexadecimal string contains odd number of non-white-space characters @@ -1104,7 +1104,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys. Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1114,7 +1114,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Field dictionary shall not contains the A or AA keys. containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 86327157..b1a016a7 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -77,7 +77,7 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - The number of hexadecimal digits in a hexadecimal string shall always be even + A hexadecimal string contains odd number of non-white-space characters @@ -1066,7 +1066,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys. Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1076,7 +1076,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Field dictionary shall not contains the A or AA keys. containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index db5c3915..5857776b 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -77,7 +77,7 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - The number of hexadecimal digits in a hexadecimal string shall always be even + A hexadecimal string contains odd number of non-white-space characters @@ -1089,7 +1089,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys. Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1099,7 +1099,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Field dictionary shall not contains the A or AA keys. containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 30b93ee3..869ce7c1 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -77,7 +77,7 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - The number of hexadecimal digits in a hexadecimal string shall always be even + A hexadecimal string contains odd number of non-white-space characters @@ -1104,7 +1104,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys. Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1114,7 +1114,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Field dictionary shall not contains the A or AA keys. containsAA == false A Form field dictionary contains the AA entry @@ -1163,7 +1163,7 @@ - + @@ -1179,7 +1179,7 @@ - + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 0aeaeaff..f281621d 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -77,7 +77,7 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - The number of hexadecimal digits in a hexadecimal string shall always be even + A hexadecimal string contains odd number of non-white-space characters @@ -1066,7 +1066,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys. Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1076,7 +1076,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Field dictionary shall not contains the A or AA keys. containsAA == false A Form field dictionary contains the AA entry @@ -1125,7 +1125,7 @@ - + @@ -1141,7 +1141,7 @@ - + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 66714d33..1e2691e4 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -77,7 +77,7 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - The number of hexadecimal digits in a hexadecimal string shall always be even + A hexadecimal string contains odd number of non-white-space characters @@ -1089,7 +1089,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys. Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1099,7 +1099,7 @@ - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. + A Field dictionary shall not contains the A or AA keys. containsAA == false A Form field dictionary contains the AA entry @@ -1148,7 +1148,7 @@ - + @@ -1164,7 +1164,7 @@ - + From 3335207575911d6b245220051a57b857b4b4b088 Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Tue, 1 Sep 2020 16:29:15 +0300 Subject: [PATCH 256/557] Fix rules 6.2.2.1, 6.2.11.2.7, 6.3.3.1 (#212) --- .../6.1.6 String objects/verapdf-profile-6-1-6-t01.xml | 2 +- .../6.1.6 String objects/verapdf-profile-6-1-6-t02.xml | 2 +- .../6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml | 2 +- .../6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml | 2 +- .../6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml | 2 +- .../6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml | 2 +- .../6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml | 2 +- .../6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml | 2 +- .../6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml | 4 ++-- .../verapdf-profile-6-2-11-3-t02.xml | 2 +- .../verapdf-profile-6-2-5-t06.xml | 4 ++-- .../6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml | 5 +---- .../verapdf-profile-6-3-3-t01.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- 21 files changed, 29 insertions(+), 32 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml index ef2a8397..82947b8d 100644 --- a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.1.2 String objects - Even number of characters + ISO 19005-1:2005 - 6.1.6 String objects - Even number of characters Hexadecimal strings shall contain an even number of non-white-space characters
diff --git a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml index e7d8c4de..b869b819 100644 --- a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.1.2 String objects - Characters range + ISO 19005-1:2005 - 6.1.6 String objects - Characters range All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f
diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml index 1cb3b4c1..2b165436 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t01.xml @@ -17,7 +17,7 @@ - +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml index 7fb0bcd4..36d1c8e3 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml @@ -2,7 +2,7 @@
ISO 19005-1:2005 - 6.2.4 Images - Alternates - + An Image dictionary shall not contain the Alternates key
diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml index e866ca89..fd721fc0 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml @@ -2,7 +2,7 @@
ISO 19005-1:2005 - 6.2.4 Images - OPI - + An XObject dictionary (Image or Form) shall not contain the OPI key
diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml index 51467ac2..98176517 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t03.xml @@ -2,7 +2,7 @@
ISO 19005-1:2005 - 6.2.4 Images - Interpolate - + If an Image dictionary contains the Interpolate key, its value shall be false
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml index 63aa95e9..c89e08de 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.3.2 Font types - embedded fond Subtype + ISO 19005-1:2005 - 6.3.2 Font types - embedded font Subtype All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml index 6983b9d0..10108b51 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml @@ -3,7 +3,7 @@
ISO 19005-2:2011 - 6.7.3 Artefacts - Standard roles All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. + defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root.
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml index d0623984..f6633648 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - embedded fond Subtype + ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.2 Font types - embedded font Subtype All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented @@ -12,7 +12,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml index 07c72f2e..e003685b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDToGIDMap + ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDToGIDMap ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117.
diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml index 6e7a1cc1..b4a2b6cd 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -17,8 +17,8 @@ - - + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml index 46128298..7edeaacf 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml @@ -15,10 +15,7 @@ A rendering intent with non-standard value is used - - ISO19005-2:2011 - 6.2.6 - + diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml index 11f19393..25648df4 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml @@ -15,7 +15,7 @@ shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link.
- (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 4f1331f9..65406616 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -346,7 +346,7 @@ - + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 5d48e8d9..141f3377 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -346,7 +346,7 @@ - + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 775e87b5..747a2097 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -777,7 +777,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" @@ -1082,7 +1082,7 @@ shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link. - (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index b1a016a7..9b50ae7c 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -777,7 +777,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" @@ -1044,7 +1044,7 @@ shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link. - (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 5857776b..441fa346 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -777,7 +777,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" @@ -1067,7 +1067,7 @@ shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link. - (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 869ce7c1..4d3126e8 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -777,7 +777,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" @@ -1082,7 +1082,7 @@ shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link. - (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index f281621d..d7e9158d 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -777,7 +777,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" @@ -1044,7 +1044,7 @@ shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link. - (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 1e2691e4..bbab4ed2 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -777,7 +777,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" @@ -1067,7 +1067,7 @@ shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link. - (width == 0 && height ==0) || Subtype == "Popup" || Subtype == "Link" || AP != null + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary From f1f7ae8041d7bc228e9348846538bf1980ce78f4 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 13 Jun 2017 12:43:31 +0300 Subject: [PATCH 257/557] Fixed misprint in the folder name --- .../6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml | 0 .../6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml | 0 .../6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml | 0 .../6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml | 0 .../6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml | 0 .../6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename PDF_A/1a/{6.8 Logical Strucure => 6.8 Logical Structure}/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml (100%) rename PDF_A/1a/{6.8 Logical Strucure => 6.8 Logical Structure}/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml (100%) rename PDF_A/1a/{6.8 Logical Strucure => 6.8 Logical Structure}/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml (100%) rename PDF_A/2a/{6.7 Logical Strucure => 6.7 Logical Structure}/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml (100%) rename PDF_A/2a/{6.7 Logical Strucure => 6.7 Logical Structure}/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml (100%) rename PDF_A/2a/{6.7 Logical Strucure => 6.7 Logical Structure}/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml (100%) diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml similarity index 100% rename from PDF_A/1a/6.8 Logical Strucure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml rename to PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml similarity index 100% rename from PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml rename to PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml diff --git a/PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml similarity index 100% rename from PDF_A/1a/6.8 Logical Strucure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml rename to PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml similarity index 100% rename from PDF_A/2a/6.7 Logical Strucure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml rename to PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml similarity index 100% rename from PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml rename to PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml diff --git a/PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml similarity index 100% rename from PDF_A/2a/6.7 Logical Strucure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml rename to PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml From 49f1d9ee469fc2b822572798c10a8f30783cd90a Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 13 Jun 2017 15:38:09 +0300 Subject: [PATCH 258/557] Updated the description of the rule according to the TWG resolution --- .../verapdf-profile-6-2-4-2-t02.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml index 31091b01..b5f778a1 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml @@ -2,15 +2,17 @@
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased CMYK and OPM - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both.
- Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting From 17b6bcebdcb07bcb535cba1d960142b4eb3ab148 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 27 Jun 2017 14:13:35 +0300 Subject: [PATCH 259/557] Updated descriptions for several rules --- .../verapdf-profile-6-2-11-7-t01.xml | 12 +++++++++--- PDF_A/PDFA-2A.xml | 15 ++++++++++----- PDF_A/PDFA-2B.xml | 7 ++++--- PDF_A/PDFA-2U.xml | 15 ++++++++++----- PDF_A/PDFA-3A.xml | 17 +++++++++++------ PDF_A/PDFA-3B.xml | 7 ++++--- PDF_A/PDFA-3U.xml | 15 ++++++++++----- 7 files changed, 58 insertions(+), 30 deletions(-) diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml index 91add2c3..6be6e9ce 100644 --- a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml +++ b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml @@ -2,19 +2,25 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2:2011, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE.
- The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE. toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 The font does not define Unicode character map or some glyphs have invalid Unicode value - + + + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index df0365b1..f14576d4 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting @@ -974,13 +975,17 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE. toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 The font does not define Unicode character map or some glyphs have invalid Unicode value - + + + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 7182ea35..fb9430f0 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index e8b6bd4b..80551cca 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting @@ -974,13 +975,17 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE. toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 The font does not define Unicode character map or some glyphs have invalid Unicode value - + + + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 4548f77d..772a1c94 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting @@ -974,13 +975,17 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE. toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 The font does not define Unicode character map or some glyphs have invalid Unicode value - + + + @@ -1483,7 +1488,7 @@ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-3 file. + dictionaries within the PDF/A-2 file. hasDuplicateName == false Optional content configuration dictionary has duplicated name diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 4710b667..b5102a49 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index c0236b9a..9c979827 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -389,8 +389,9 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used and - when overprinting for stroke or fill or both is set to true. + OOverprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting @@ -974,13 +975,17 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), + but not equal to either U+FEFF or U+FFFE. toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 The font does not define Unicode character map or some glyphs have invalid Unicode value - + + + From 83182a2989e6ac135cddab4b67149277a8fe05b2 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 27 Jun 2017 19:05:01 +0300 Subject: [PATCH 260/557] Updated Unicode map rules - split Level U conformance into two different rules - added new Level A rule on the use of Unicode PUA and Actual Text --- .../verapdf-profile-6-2-11-7-t03.xml | 29 ++++++++++++++++ .../verapdf-profile-6-2-11-7-t01.xml | 14 ++++---- .../verapdf-profile-6-2-11-7-t02.xml | 21 ++++++++++++ PDF_A/PDFA-2A.xml | 34 ++++++++++++++++--- PDF_A/PDFA-2U.xml | 19 ++++++++--- PDF_A/PDFA-3A.xml | 34 ++++++++++++++++--- PDF_A/PDFA-3U.xml | 19 ++++++++--- 7 files changed, 142 insertions(+), 28 deletions(-) create mode 100644 PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml create mode 100644 PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml diff --git a/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml new file mode 100644 index 00000000..12dbfd65 --- /dev/null +++ b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - Unicode PUA + For any character, regardless of its rendering mode, that is mapped to a code + or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in + ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a + character is a part. +
+ + + + + For any character, regardless of its rendering mode, that is mapped to a code + or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in + ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a + character is a part. + unicodePUA == false || actualTextPresent == true + + The character has Unicode value from Private Use Area, and no replacement text present + + + + + + + + +
diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml index 6be6e9ce..d014dd8e 100644 --- a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml +++ b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml @@ -1,21 +1,19 @@
- ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps + ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - Unicode mapping 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 ISO 19005-2:2011, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. + or other mechanisms as defined in ISO 19005-2:2011, 6.2.11.7.2.
- + 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. - toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2. + toUnicode != null - The font does not define Unicode character map or some glyphs have invalid Unicode value + The glyph can not be mapped to Unicode diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml new file mode 100644 index 00000000..e9da03af --- /dev/null +++ b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - Valid Unicode values + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. +
+ + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The glyph has an invalid Unicode value + + + + + + +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index f14576d4..c3d5bf32 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -976,17 +976,41 @@ 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. - toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2. + toUnicode != null - The font does not define Unicode character map or some glyphs have invalid Unicode value + The glyph can not be mapped to Unicode + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The glyph has an invalid Unicode value + + + + + + + For any character, regardless of its rendering mode, that is mapped to a code + or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in + ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a + character is a part. + unicodePUA == false || actualTextPresent == true + + The character has Unicode value from Private Use Area, and no replacement text present + + + + + + A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 80551cca..d2c4396e 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -976,17 +976,26 @@ 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. - toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2. + toUnicode != null - The font does not define Unicode character map or some glyphs have invalid Unicode value + The glyph can not be mapped to Unicode + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The glyph has an invalid Unicode value + + + + A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 772a1c94..6144dde2 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -976,17 +976,41 @@ 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. - toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2. + toUnicode != null - The font does not define Unicode character map or some glyphs have invalid Unicode value + The glyph can not be mapped to Unicode + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The glyph has an invalid Unicode value + + + + + + + For any character, regardless of its rendering mode, that is mapped to a code + or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in + ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a + character is a part. + unicodePUA == false || actualTextPresent == true + + The character has Unicode value from Private Use Area, and no replacement text present + + + + + + A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 9c979827..d6a4cadb 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -976,17 +976,26 @@ 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 ISO 19005-2, 6.2.11.7.2. The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), - but not equal to either U+FEFF or U+FFFE. - toUnicode != null && toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2. + toUnicode != null - The font does not define Unicode character map or some glyphs have invalid Unicode value + The glyph can not be mapped to Unicode + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + + The glyph has an invalid Unicode value + + + + A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing From 07dc4b01aec77764a80a994a3bb1663e16b24f8a Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 27 Jun 2017 20:37:34 +0300 Subject: [PATCH 261/557] Fixced null check in the new Unicode invalid value rule --- .../verapdf-profile-6-2-11-7-t02.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml index e9da03af..5e654495 100644 --- a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml +++ b/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml @@ -9,7 +9,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index c3d5bf32..7434247e 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -989,7 +989,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index d2c4396e..85ae3ba2 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -989,7 +989,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 6144dde2..19ac89a7 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -989,7 +989,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index d6a4cadb..89250e77 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -989,7 +989,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value From 3a8aed65e15f6cabf829f1cb6081d6a50655cbf3 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 29 Jun 2017 11:00:19 +0300 Subject: [PATCH 262/557] Fixed 1 byte off in the implementation limits for strings --- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml index 29934f71..2dc844e0 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml @@ -9,7 +9,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 7434247e..a9ea7a31 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index fb9430f0..21d64b32 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 85ae3ba2..71d7ddbc 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 19ac89a7..9dc26f79 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index b5102a49..610f0b77 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 89250e77..91843f31 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -234,7 +234,7 @@ A conforming file shall not contain any string longer than 32767 bytes. - value.length() < 32767 + value.length() < 32768 Maximum length of a String (32767) exceeded From d35e50a96b0028325427eb3d696047b7dfbd7d7f Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Thu, 29 Jun 2017 11:47:40 +0300 Subject: [PATCH 263/557] Fixed the rule to check the implementation limits for CIDs It now checks not only CIDs of the glyphs used on the page, but also CIDs present in the CMap. --- .../verapdf-profile-6-1-13-t10.xml | 4 ++-- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml index 77455b68..9a2c69c8 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml @@ -6,10 +6,10 @@
- + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index a9ea7a31..d9dc1669 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 21d64b32..65030bac 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 71d7ddbc..136a7919 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 9dc26f79..cf33e790 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 610f0b77..df7b515b 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 91843f31..3ce0a110 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -291,10 +291,10 @@ - + A conforming file shall not contain a CID value greater than 65535. - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65535) is exceeded From 9e05db540f1b983391032d714c993ad826e7406d Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 5 Jul 2017 12:23:50 +0300 Subject: [PATCH 264/557] Replance link Page.groupCS by a boolean property Page.containsGroupCS --- .../6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml index d05edfd5..f14e5747 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml @@ -13,7 +13,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index d9dc1669..f35dd668 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 65030bac..44dd854e 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 136a7919..02fafbc3 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index cf33e790..81de8411 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index df7b515b..7b676ec0 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 3ce0a110..4c32057f 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -652,7 +652,7 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space. - gOutputCS != null || groupCS_size != 0 || containsTransparency == false + gOutputCS != null || containsGroupCS == true || containsTransparency == false The page contains transparent objects with no blending colour space defined. From 5e9e61aa6f58922eab48e10c3f664c415d481f2f Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 5 Jul 2017 13:02:04 +0300 Subject: [PATCH 265/557] Minor date fix --- PDF_A/PDFA-2B.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 44dd854e..206d51e4 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
From 54f153a4ed06fca15eeafc7e1382a5f5bc3768bb Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 14 Jul 2017 19:36:51 +0300 Subject: [PATCH 266/557] Added validation of the MIME type for embedded files --- PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml index 2fe1ce4c..46636752 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml @@ -11,9 +11,9 @@ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used. - Subtype != null + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - An embedded file dictionary does not contain the MIME type information (Subtype entry) + The MIME type information (Subtype entry) of an embedded file is missing or invalid diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 81de8411..ba306bf9 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1459,9 +1459,9 @@ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used. - Subtype != null + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - An embedded file dictionary does not contain the MIME type information (Subtype entry) + The MIME type information (Subtype entry) of an embedded file is missing or invalid diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 7b676ec0..d06a8687 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1383,9 +1383,9 @@ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used. - Subtype != null + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - An embedded file dictionary does not contain the MIME type information (Subtype entry) + The MIME type information (Subtype entry) of an embedded file is missing or invalid diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 4c32057f..71ec2d51 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1406,9 +1406,9 @@ The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used. - Subtype != null + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - An embedded file dictionary does not contain the MIME type information (Subtype entry) + The MIME type information (Subtype entry) of an embedded file is missing or invalid From 2e14e9ec6d464d8101cc376bb65461977568e739 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 14 Jul 2017 20:29:36 +0300 Subject: [PATCH 267/557] Added a new rule to validate TransferFunction in halftone dictionaries --- .../verapdf-profile-6-2-5-t01.xml | 4 ++-- .../verapdf-profile-6-2-5-t02.xml | 4 ++-- .../verapdf-profile-6-2-5-t03.xml | 4 ++-- .../verapdf-profile-6-2-5-t04.xml | 4 ++-- .../verapdf-profile-6-2-5-t05.xml | 4 ++-- .../verapdf-profile-6-2-5-t06.xml | 23 +++++++++++++++++++ PDF_A/PDFA-2A.xml | 14 ++++++++++- PDF_A/PDFA-2B.xml | 14 ++++++++++- PDF_A/PDFA-2U.xml | 14 ++++++++++- PDF_A/PDFA-3A.xml | 16 +++++++++++-- PDF_A/PDFA-3B.xml | 14 ++++++++++- PDF_A/PDFA-3U.xml | 16 +++++++++++-- 12 files changed, 113 insertions(+), 18 deletions(-) create mode 100644 PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml index 978c2c3f..4eff7529 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR key An ExtGState dictionary shall not contain the TR key @@ -7,7 +7,7 @@ - + An ExtGState dictionary shall not contain the TR key TR == null diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml index 75363502..4da97b19 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - TR2 key An ExtGState dictionary shall not contain the TR2 key with a value other than Default @@ -7,7 +7,7 @@ - + An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml index a29efd0b..3d646b1d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - HTP key An ExtGState dictionary shall not contain the HTP key @@ -7,7 +7,7 @@ - + An ExtGState dictionary shall not contain the HTP key HTP_size == 0 diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml index a01a2dcc..1f934ae2 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone type All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. @@ -7,7 +7,7 @@ - + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml index 874b0dfa..1f8ce48d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone name Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. @@ -7,7 +7,7 @@ - + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. HalftoneName == null diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml new file mode 100644 index 00000000..7a490fe1 --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.2.5 Extended graphics state - TransferFunction in halftones + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. +
+ + + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + + + +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index f35dd668..cbd0b9bf 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 206d51e4..a1f17895 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 02fafbc3..81994829 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ba306bf9..c5bb5dc5 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ - -
+ +
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d06a8687..cf978246 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 71ec2d51..4f94d65c 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ - -
+ +
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -509,6 +509,18 @@ + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, From 07ed4dc511548f2d762cc1564478857dc2469d23 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 18 Jul 2017 13:31:34 +0300 Subject: [PATCH 268/557] Fixed the desciption of the rule 6.3.5-1 in PDF/A-1 --- .../6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml | 8 +++----- PDF_A/PDFA-1A.xml | 5 ++--- PDF_A/PDFA-1B.xml | 5 ++--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml index f231f2d7..7467a1bb 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml @@ -1,16 +1,14 @@
- ISO 19005-1:2005 - 6.3.4 Embedded font programs - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3. + ISO 19005-1:2005 - 6.3.5 Font subsets + Embedded font programs shall define all font glyphs referenced for rendering with conforming file.
- The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3. + Embedded font programs shall define all font glyphs referenced for rendering with conforming file. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 1acdaf5a..6b10e9f1 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -693,8 +693,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3. + Embedded font programs shall define all font glyphs referenced for rendering with conforming file. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index cfb13e16..fa905092 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -693,8 +693,7 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3. + Embedded font programs shall define all font glyphs referenced for rendering with conforming file. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program From 71d7b7e8abe5c5557045ca3b2fcc451c249d1f11 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 19 Jul 2017 13:32:01 +0300 Subject: [PATCH 269/557] Fixed flavour names --- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index c5bb5dc5..65c8c676 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,5 +1,5 @@ - +
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 4f94d65c..c6438bbb 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,5 +1,5 @@ - +
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U From f04b682c2e9960d2947c4bc9bd21874a4cf7c5d5 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 19 Jul 2017 15:32:35 +0300 Subject: [PATCH 270/557] Fixed rule 6.2.5-6 (TransferFunction in Halftones) --- .../verapdf-profile-6-2-5-t06.xml | 4 +++- PDF_A/PDFA-2A.xml | 6 ++++-- PDF_A/PDFA-2B.xml | 6 ++++-- PDF_A/PDFA-2U.xml | 6 ++++-- PDF_A/PDFA-3A.xml | 6 ++++-- PDF_A/PDFA-3B.xml | 6 ++++-- PDF_A/PDFA-3U.xml | 6 ++++-- 7 files changed, 27 insertions(+), 13 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml index 7a490fe1..cb7cf851 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -9,7 +9,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index cbd0b9bf..3fe649cb 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index a1f17895..7850ecf3 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 81994829..379983a9 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 65c8c676..1091be1c 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index cf978246..d33b5c0e 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index c6438bbb..692b2117 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -512,7 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - ['Cyan', 'Magenta', 'Yellow', 'Black', 'Red', 'Green', 'Blue'].indexOf(colorantName) >=0 ? TransferFunction == null : TransferFunction != null + colorantName == null || colorantName == 'Default' || + ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || + colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary From dd1c75617fa94ae2154996f9c19a443449db84d6 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 25 Jul 2017 15:40:14 +0300 Subject: [PATCH 271/557] Added deferred property for the rule to check if the embedded file is associated with any document content This flag 'deferred' indicates that the rule will be put on hold till all other non-deferred rules are checked. We can only say if the file is associated with any object in the document when we ended document parsting --- PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml index 4804632c..d50b6a3e 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml @@ -7,7 +7,7 @@
- + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated. diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 1091be1c..0370a488 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1501,7 +1501,7 @@
- + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d33b5c0e..e529ee53 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1425,7 +1425,7 @@ - + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 692b2117..99c91205 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1448,7 +1448,7 @@ - + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated. From b0eb5d85fc09a78d3dc032e69f594ae41413a554 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 25 Jul 2017 22:46:32 +0300 Subject: [PATCH 272/557] Added new rule to check Lang format --- .../verapdf-profile-6-7-3-t02.xml | 2 +- .../verapdf-profile-6-7-4-t01.xml | 30 +++++++++++++++++++ .../verapdf-profile-6-6-4-t03.xml | 25 ++++++++++++++++ PDF_A/PDFA-2A.xml | 18 ++++++++++- PDF_A/PDFA-3A.xml | 18 ++++++++++- 5 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml create mode 100644 PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml index 10675b94..add7df94 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.8.3 Artifacts - Standard roles + ISO 19005-2:2011 - 6.8.3 Artefacts - Standard roles All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root.
diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml new file mode 100644 index 00000000..d46b6288 --- /dev/null +++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-2:2011 - 6.7.4 Natural language specification + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. +
+ + + + + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. + value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + + Non-standard structure type is not mapped to a standard type + + + + + + + + + +
diff --git a/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml new file mode 100644 index 00000000..94d08899 --- /dev/null +++ b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Conformance level. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. +
+ + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-3A conforming file. + + conformance + + + + + + +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 3fe649cb..8f640cb8 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -1469,6 +1469,22 @@ + + + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. + value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + + Non-standard structure type is not mapped to a standard type + + + + + + + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 0370a488..344ecbde 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -1469,6 +1469,22 @@ + + + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. + value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + + Non-standard structure type is not mapped to a standard type + + + + + + + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. From 580a08529aa028edbc093229ee36ac4b28b4ccd9 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 1 Aug 2017 08:33:44 +0300 Subject: [PATCH 273/557] Updated profiles accroding to the model changes These changes make strickter the checks on presense of certain keys in the dictionaries --- .../verapdf-profile-6-1-11-t01.xml | 2 +- .../verapdf-profile-6-1-11-t02.xml | 2 +- .../verapdf-profile-6-2-4-t02.xml | 2 +- .../verapdf-profile-6-2-5-t01.xml | 2 +- .../verapdf-profile-6-2-6-t01.xml | 2 +- .../verapdf-profile-6-6-2-t01.xml | 2 +- .../verapdf-profile-6-6-2-t02.xml | 2 +- .../verapdf-profile-6-6-2-t03.xml | 2 +- .../verapdf-profile-6-9-t02.xml | 2 +- .../verapdf-profile-6-9-t03.xml | 2 +- .../verapdf-profile-6-2-8-t02.xml | 2 +- .../verapdf-profile-6-2-9-t01.xml | 2 +- .../verapdf-profile-6-2-9-t02.xml | 2 +- .../verapdf-profile-6-4-1-t01.xml | 2 +- .../verapdf-profile-6-4-1-t02.xml | 2 +- .../verapdf-profile-6-5-2-t01.xml | 2 +- .../verapdf-profile-6-5-2-t02.xml | 2 +- .../verapdf-profile-6-8-t02.xml | 2 +- PDF_A/PDFA-1A.xml | 22 +++++++++---------- PDF_A/PDFA-1B.xml | 22 +++++++++---------- PDF_A/PDFA-2A.xml | 18 +++++++-------- PDF_A/PDFA-2B.xml | 18 +++++++-------- PDF_A/PDFA-2U.xml | 18 +++++++-------- PDF_A/PDFA-3A.xml | 18 +++++++-------- PDF_A/PDFA-3B.xml | 18 +++++++-------- PDF_A/PDFA-3U.xml | 18 +++++++-------- 26 files changed, 94 insertions(+), 94 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml index 3e4fc954..670b9106 100644 --- a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t01.xml @@ -9,7 +9,7 @@ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 + containsEF == false A file specification dictionary contains the EF key diff --git a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml index 98cf6e8f..a1429c8f 100644 --- a/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.11 Embedded files/verapdf-profile-6-1-11-t02.xml @@ -9,7 +9,7 @@ A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 + containsEmbeddedFiles == false The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml index 7df73363..e866ca89 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml @@ -9,7 +9,7 @@ An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( diff --git a/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml index 754b7dcf..53178898 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.5 Form XObjects/verapdf-profile-6-2-5-t01.xml @@ -9,7 +9,7 @@ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false The form XObject dictionary contains a PS key or Subtype2 key with value PS diff --git a/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml index f843774d..dae51e63 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.6 Reference XObjects/verapdf-profile-6-2-6-t01.xml @@ -9,7 +9,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml index 01c3cd72..1fb6ee7b 100644 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 + Subtype != "Widget" || containsAA == false A Widget annotation contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml index 6fe43bc7..cf9dc95e 100644 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t02.xml @@ -9,7 +9,7 @@ A Field dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false A Field dictionary contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml index 12ba29b1..f1327977 100644 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t03.xml @@ -9,7 +9,7 @@ The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml index b9a89f25..92364464 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml index af71b353..96312d3d 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml index be4bb819..cceac047 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml @@ -9,7 +9,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml index 054f8dd2..f0d50909 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml @@ -9,7 +9,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml index 258b1691..e98f2c51 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.2 Reference XObjects/verapdf-profile-6-2-9-t02.xml @@ -9,7 +9,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index 6ac90c39..60dfa819 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml index 50ddf87b..1d2f79ad 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml index 76efd892..422c6825 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml @@ -9,7 +9,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml index 14e41ca3..036a3553 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml @@ -9,7 +9,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml index 93f0ff67..7d3ab628 100644 --- a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml +++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml @@ -9,7 +9,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 6b10e9f1..425a1e4e 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -183,7 +183,7 @@ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 + containsEF == false A file specification dictionary contains the EF key @@ -195,7 +195,7 @@ A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 + containsEmbeddedFiles == false The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) @@ -430,7 +430,7 @@ An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -450,7 +450,7 @@ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false The form XObject dictionary contains a PS key or Subtype2 key with value PS @@ -460,7 +460,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -958,7 +958,7 @@ A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 + Subtype != "Widget" || containsAA == false A Widget annotation contains an additional-actions dictionary (AA entry) @@ -968,7 +968,7 @@ A Field dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false A Field dictionary contains an additional-actions dictionary (AA entry) @@ -978,7 +978,7 @@ The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1251,7 +1251,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1261,7 +1261,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index fa905092..89cae118 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -183,7 +183,7 @@ A file specification dictionary, as defined in PDF 3.10.2, shall not contain the EF key - EF_size == 0 + containsEF == false A file specification dictionary contains the EF key @@ -195,7 +195,7 @@ A file's name dictionary, as defined in PDF Reference 3.6.3, shall not contain the EmbeddedFiles key - EmbeddedFiles_size == 0 + containsEmbeddedFiles == false The document contains embedded files (EmbeddedFiles key is present in the file's name dictionary) @@ -430,7 +430,7 @@ An XObject dictionary (Image or Form) shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -450,7 +450,7 @@ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false The form XObject dictionary contains a PS key or Subtype2 key with value PS @@ -460,7 +460,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -944,7 +944,7 @@ A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || AA_size == 0 + Subtype != "Widget" || containsAA == false A Widget annotation contains an additional-actions dictionary (AA entry) @@ -954,7 +954,7 @@ A Field dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false A Field dictionary contains an additional-actions dictionary (AA entry) @@ -964,7 +964,7 @@ The document catalog dictionary shall not include an AA entry for an additional-actions dictionary - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1200,7 +1200,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1210,7 +1210,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 8f640cb8..6b105f01 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1112,7 +1112,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1122,7 +1122,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1218,7 +1218,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1228,7 +1228,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1499,7 +1499,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 7850ecf3..654f50f1 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1074,7 +1074,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1084,7 +1084,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1180,7 +1180,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1190,7 +1190,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1407,7 +1407,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 379983a9..610a78b1 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1097,7 +1097,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1107,7 +1107,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1203,7 +1203,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1213,7 +1213,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1430,7 +1430,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 344ecbde..a7b522f5 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1112,7 +1112,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1122,7 +1122,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1218,7 +1218,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1228,7 +1228,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1499,7 +1499,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index e529ee53..d94237fa 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1074,7 +1074,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1084,7 +1084,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1180,7 +1180,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1190,7 +1190,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1407,7 +1407,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 99c91205..7e293cb5 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -547,7 +547,7 @@ An Image dictionary shall not contain the OPI key - OPI_size == 0 + containsOPI == false OPI key is present in the XObject dictionary( @@ -620,7 +620,7 @@ A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && PS_size == 0 && OPI_size == 0 + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -630,7 +630,7 @@ A conforming file shall not contain any reference XObjects - Ref_size == 0 + containsRef == false The document contains a reference XObject (Ref key in the form XObject dictionary) @@ -1097,7 +1097,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && AA_size == 0) + Subtype != "Widget" || (A_size == 0 && containsAA == false) A Widget annotation contains either A or AA entry @@ -1107,7 +1107,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - AA_size == 0 + containsAA == false A Form field dictionary contains the AA entry @@ -1203,7 +1203,7 @@ The document's Catalog shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1213,7 +1213,7 @@ The Page dictionary shall not include an AA entry for an additional-actions dictionary. - AA_size == 0 + containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1430,7 +1430,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys - EF_size == 0 || (F != null && UF != null) + containsEF == false || (F != null && UF != null) The file specification dictionary for an embedded file does not contain either F or EF key From ea5febf2df87404bce89f10b979143954c9bb8ce Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 1 Aug 2017 17:54:48 +0300 Subject: [PATCH 274/557] Final fix for stricter checks on presence of certtain keys in dictionaries --- .../6.2.4 Images/verapdf-profile-6-2-4-t01.xml | 2 +- .../6.6.1 General/verapdf-profile-6-6-1-t03.xml | 2 +- .../verapdf-profile-6-9-t02.xml | 2 +- .../verapdf-profile-6-2-11-6-t01.xml | 2 +- .../verapdf-profile-6-2-3-t03.xml | 2 +- .../verapdf-profile-6-2-5-t03.xml | 2 +- .../6.2.8.1 General/verapdf-profile-6-2-8-t01.xml | 2 +- .../6.4.1 General/verapdf-profile-6-4-1-t01.xml | 2 +- .../6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml | 2 +- PDF_A/PDFA-1A.xml | 8 ++++---- PDF_A/PDFA-1B.xml | 8 ++++---- PDF_A/PDFA-2A.xml | 14 +++++++------- PDF_A/PDFA-2B.xml | 14 +++++++------- PDF_A/PDFA-2U.xml | 14 +++++++------- PDF_A/PDFA-3A.xml | 14 +++++++------- PDF_A/PDFA-3B.xml | 14 +++++++------- PDF_A/PDFA-3U.xml | 14 +++++++------- 17 files changed, 59 insertions(+), 59 deletions(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml index 65c33d4d..7fb0bcd4 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml @@ -9,7 +9,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml index 044201fc..f695ac5d 100644 --- a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml @@ -9,7 +9,7 @@ Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 + Subtype != "Widget" || containsA == false Interactive form field contains an action object ('A' key) diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml index 92364464..bb140aae 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml index b0c2e671..d321a66f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml @@ -11,7 +11,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index 8bda2ece..82483235 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -9,7 +9,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml index 3d646b1d..a5f5725b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml @@ -9,7 +9,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml index 34314102..d4d677d7 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml @@ -9,7 +9,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index 60dfa819..a4baa767 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -9,7 +9,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml index 9b718015..995aec4d 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml @@ -11,7 +11,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 425a1e4e..bc0c6347 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -420,7 +420,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -948,7 +948,7 @@ Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 + Subtype != "Widget" || containsA == false Interactive form field contains an action object ('A' key) @@ -1251,7 +1251,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 89cae118..7f53a106 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -420,7 +420,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -934,7 +934,7 @@ Interactive form fields shall not perform actions of any type - Subtype != "Widget" || A_size == 0 + Subtype != "Widget" || containsA == false Interactive form field contains an action object ('A' key) @@ -1200,7 +1200,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 6b105f01..d0e37baa 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1112,7 +1112,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1143,7 +1143,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 654f50f1..1d3d8a4f 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1074,7 +1074,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1105,7 +1105,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 610a78b1..1f40487c 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1097,7 +1097,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1128,7 +1128,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index a7b522f5..12651b83 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1112,7 +1112,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1143,7 +1143,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d94237fa..850d9e03 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1074,7 +1074,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1105,7 +1105,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 7e293cb5..98b832fa 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - DestOutputProfileRef_size == 0 + containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -482,7 +482,7 @@ An ExtGState dictionary shall not contain the HTP key - HTP_size == 0 + containsHTP == false An ExtGState dictionary contains the HTP key @@ -537,7 +537,7 @@ An Image dictionary shall not contain the Alternates key - Alternates_size == 0 + containsAlternates == false Alternates key is present in the Image dictionary( @@ -945,7 +945,7 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps >= 1 || renderingMode == 3 + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables @@ -1097,7 +1097,7 @@ A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys. - Subtype != "Widget" || (A_size == 0 && containsAA == false) + Subtype != "Widget" || (containsA == false && containsAA == false) A Widget annotation contains either A or AA entry @@ -1128,7 +1128,7 @@ The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key. - XFA_size == 0 + containsXFA == false The interactive form dictionary contains the XFA key From a5d730bf5531bea889945e63bb4fc61eae9f71c9 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 7 Aug 2017 12:11:50 +0300 Subject: [PATCH 275/557] Fixed names of the GBK2K-H and GBK2K-V predefined CMaps --- .../verapdf-profile-6-2-11-3-t03.xml | 2 +- .../verapdf-profile-6-2-11-3-t05.xml | 2 +- PDF_A/PDFA-2A.xml | 6 +++--- PDF_A/PDFA-2B.xml | 6 +++--- PDF_A/PDFA-2U.xml | 6 +++--- PDF_A/PDFA-3A.xml | 6 +++--- PDF_A/PDFA-3B.xml | 6 +++--- PDF_A/PDFA-3U.xml | 6 +++--- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml index e53146c0..02c7bba0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml @@ -13,7 +13,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml index d93256cf..df073c74 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml @@ -11,7 +11,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index d0e37baa..5218be99 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 1d3d8a4f..30db2b99 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 1f40487c..33a79ef7 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 12651b83..ded1a846 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 850d9e03..d5ca6ae7 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 98b832fa..a6ea03c9 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -825,7 +825,7 @@ in ISO 32000-1:2008, 9.7.5. 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-EUC-H" || CMapName == "GBK2K-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" || @@ -863,7 +863,7 @@ A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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-EUC-H" || CMapName == "GBK2K-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" || From 09ecdf548dc5c5e2f2962e35b0b5764ce1d750e3 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Mon, 7 Aug 2017 14:17:13 +0300 Subject: [PATCH 276/557] Restricted rule 6.2.3-3 to PDF/X OutputIntents --- .../6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml | 2 +- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index 82483235..9ef6be88 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -9,7 +9,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 5218be99..d38fa860 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 30db2b99..58e5e080 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 33a79ef7..f612793b 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ded1a846..605827a6 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d5ca6ae7..354a1a15 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index a6ea03c9..f1edd940 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -365,7 +365,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. - containsDestOutputProfileRef == false + S != 'GTS_PDFX' || containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef From be56cc98a0485277792a4c4f48694c5f6bfa9417 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 8 Aug 2017 17:40:17 +0300 Subject: [PATCH 277/557] restricted the PDF/A-2 checks on CharSet/CIDSet to font subsets --- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml | 4 ++-- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml | 4 ++-- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml | 6 +++--- .../6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml | 6 +++--- PDF_A/PDFA-2A.xml | 6 +++--- PDF_A/PDFA-2B.xml | 6 +++--- PDF_A/PDFA-2U.xml | 6 +++--- PDF_A/PDFA-3A.xml | 6 +++--- PDF_A/PDFA-3B.xml | 6 +++--- PDF_A/PDFA-3U.xml | 6 +++--- 10 files changed, 28 insertions(+), 28 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml index 3f38abb0..82c2ae42 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - General The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. @@ -7,7 +7,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml index 2599613c..1075c2dd 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - Glyphs Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely @@ -8,7 +8,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml index 7cfd9f3d..a97eac51 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CharSet entry in Type1 fonts If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs @@ -8,10 +8,10 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml index ce48bbf8..a8dd57b8 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CIDSet entry in CID Fonts If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, @@ -8,10 +8,10 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index d38fa860..e3199205 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 58e5e080..547f8635 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index f612793b..df023ab3 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 605827a6..54275e80 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 354a1a15..66e01f11 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index f1edd940..4bbe5211 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -912,7 +912,7 @@ If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CharSet == null || charSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -923,7 +923,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary From 25e5ed51052d595b819b9b66d627f62b15ef95f0 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 25 Aug 2017 11:03:01 +0300 Subject: [PATCH 278/557] Removed rule 6.3.2-3 fromPDF/A-2(3) validation profiles This is only a 'should' clause in ISO 19005-2(3) --- .../verapdf-profile-6-3-2-t03.xml | 21 ---------------- .../verapdf-profile-6-6-4-t03.xml | 2 +- .../verapdf-profile-6-6-4-t03.xml | 25 +++++++++++++++++++ .../verapdf-profile-6-6-4-t03.xml | 25 +++++++++++++++++++ PDF_A/PDFA-2A.xml | 12 +-------- PDF_A/PDFA-2B.xml | 14 ++--------- PDF_A/PDFA-2U.xml | 12 +-------- PDF_A/PDFA-3A.xml | 12 +-------- PDF_A/PDFA-3B.xml | 12 +-------- PDF_A/PDFA-3U.xml | 12 +-------- 10 files changed, 58 insertions(+), 89 deletions(-) delete mode 100644 PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml create mode 100644 PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml create mode 100644 PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml deleted file mode 100644 index 280efa87..00000000 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t03.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - Flags of Text annotations - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. -
- - - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - - - -
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 81f524b9..b36d68c7 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -13,7 +13,7 @@ pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "B" || conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file. conformance diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml new file mode 100644 index 00000000..059da05e --- /dev/null +++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. +
+ + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "B" || conformance == "U" || conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-3B conforming file. + + conformance + + + + + + +
diff --git a/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml new file mode 100644 index 00000000..b9b33d13 --- /dev/null +++ b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. +
+ + + + + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + conformance == "U" || conformance == "A" + + The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-3U conforming file. + + conformance + + + + + + +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index e3199205..90ae823f 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -1073,16 +1073,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 547f8635..3032eb24 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
@@ -1035,16 +1035,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, @@ -1372,7 +1362,7 @@ pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. conformance == "B" || conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file. conformance diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index df023ab3..cd15b1ed 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
@@ -1058,16 +1058,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 54275e80..e087eb42 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -1073,16 +1073,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 66e01f11..d5035fa5 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
@@ -1035,16 +1035,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 4bbe5211..2531fbb4 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
@@ -1058,16 +1058,6 @@ - - - Text annotations should set the NoZoom and NoRotate flag bits of the F key to 1. - Subtype != "Text" || (F != null && (F & 8) == 8 && (F & 16) == 16) - - Text annotation has one of the flags NoZoom or NoRotate set to 0 - - - - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, From 6912a90a4e48726a28064ea198b624b1b8ebdf23 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 6 Sep 2017 16:13:19 +0300 Subject: [PATCH 279/557] Fixed validation of maximal CID value in PDF/A-1 --- .../verapdf-profile-6-1-12-t10.xml | 5 +++-- PDF_A/PDFA-1A.xml | 6 +++--- PDF_A/PDFA-1B.xml | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml index 46bebd1a..3731dca9 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml @@ -6,10 +6,10 @@
- + Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65,535) is exceeded @@ -21,3 +21,4 @@
+ diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index bc0c6347..bfe454e0 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -314,10 +314,10 @@ - + Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65,535) is exceeded diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 7f53a106..5ec1e145 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
@@ -314,10 +314,10 @@ - + Maximum value of a CID (character identifier) is 65,535 - CID <= 65535 + maximalCID <= 65535 Maximum value of a CID (65,535) is exceeded From 601aeb04ec8202027ba5ed07e145565010fdec91 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Thu, 16 Nov 2017 14:57:29 +0300 Subject: [PATCH 280/557] Checked the rule to check for SMask entry in XObjects. Now we check it if the value of this entry has an arbitrary type --- PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml index a4d041a8..551a8b58 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml @@ -9,7 +9,7 @@ An XObject dictionary shall not contain the SMask key - SMask_size == 0 + containsSMask == false An XObject contains an SMask key diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index bfe454e0..599c70e8 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -805,7 +805,7 @@ An XObject dictionary shall not contain the SMask key - SMask_size == 0 + containsSMask == false An XObject contains an SMask key diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 5ec1e145..0ddbad94 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -791,7 +791,7 @@ An XObject dictionary shall not contain the SMask key - SMask_size == 0 + containsSMask == false An XObject contains an SMask key From 3b0c4e5d87a7ca0f71629a574dd23896cb5ed353 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Fri, 27 Jul 2018 13:36:19 +0300 Subject: [PATCH 281/557] Fixed misprint in the ICC profile color space marker: "LAB " -> "Lab " --- .../6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml | 2 +- .../6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml | 2 +- .../verapdf-profile-6-2-4-2-t01.xml | 2 +- PDF_A/PDFA-1A.xml | 4 ++-- PDF_A/PDFA-1B.xml | 4 ++-- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml index 39e6c892..38af2034 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml @@ -10,7 +10,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml index fe84ea45..e6022c20 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml @@ -13,7 +13,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml index f848f5d9..82d1a5e5 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml @@ -10,7 +10,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 599c70e8..5ce65568 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -364,7 +364,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements @@ -408,7 +408,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 0ddbad94..ecb8ae20 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -364,7 +364,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 3.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements @@ -408,7 +408,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "LAB ")) || (N == 4 && colorSpace == "CMYK")) + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 90ae823f..429b7140 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 3032eb24..f443147e 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index cd15b1ed..8d0f15f1 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index e087eb42..ee042e90 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d5035fa5..02452bef 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 2531fbb4..4145fb7f 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -378,7 +378,7 @@ The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "LAB ") && version < 5.0 + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements From 534b3f49d5123873c775bfc9bcaa1bc119d97b73 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Wed, 9 Jan 2019 16:59:58 +0300 Subject: [PATCH 282/557] Fixed specification references --- .../6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index 9ef6be88..9d6401b8 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -1,5 +1,5 @@ - +
ISO 19005-2:2011 - 6.2.3 Output intent - DestOutputProfileRef entry In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. @@ -7,7 +7,7 @@ - + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. S != 'GTS_PDFX' || containsDestOutputProfileRef == false @@ -15,7 +15,7 @@ - + From ca60a0d3e25e5be9d027a0c7a9d13f5eaa9c2de3 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Tue, 11 Feb 2020 16:21:23 +0300 Subject: [PATCH 283/557] Fix #906 --- .../verapdf-profile-6-6-2-1-t05.xml | 23 +++++++++++++++++++ PDF_A/PDFA-2A.xml | 12 ++++++++++ PDF_A/PDFA-2B.xml | 12 ++++++++++ PDF_A/PDFA-2U.xml | 12 ++++++++++ PDF_A/PDFA-3A.xml | 14 ++++++++++- PDF_A/PDFA-3B.xml | 14 ++++++++++- PDF_A/PDFA-3U.xml | 14 ++++++++++- 7 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml new file mode 100644 index 00000000..53b51d44 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.1 General - Conforms to XMP Specification. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. +
+ + + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + + + +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 429b7140..9436d192 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1273,6 +1273,18 @@ + + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index f443147e..a0b39d53 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1235,6 +1235,18 @@ + + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 8d0f15f1..dca3205d 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1258,6 +1258,18 @@ + + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ee042e90..9a2ae44e 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1274,7 +1274,19 @@ - + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 02452bef..fda5a611 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1236,7 +1236,19 @@ - + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 4145fb7f..44dcc2fc 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1259,7 +1259,19 @@ - + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. From c86ac1c23b7730c6027085c3efd2ea729fe8a116 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Tue, 11 Feb 2020 17:35:59 +0300 Subject: [PATCH 284/557] Added check that the annotation appearance dictionary is not empty --- .../6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml | 2 +- .../6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml index b52f88b5..54ff6626 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml @@ -14,7 +14,7 @@ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml index c1e504d9..55ee99e1 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -14,7 +14,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 5ce65568..88c641ed 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -911,7 +911,7 @@ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index ecb8ae20..5bef7cb0 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -897,7 +897,7 @@ If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary; otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 9436d192..51b83606 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1092,7 +1092,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index a0b39d53..f6042da2 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1054,7 +1054,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index dca3205d..405e9607 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1077,7 +1077,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 9a2ae44e..58fde3c9 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1092,7 +1092,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index fda5a611..4ed79ef4 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1054,7 +1054,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 44dcc2fc..5a2dd64c 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1077,7 +1077,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict") ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type From 8a4bb2f728cab3007d0d2b7d2689b6e09e38dbb7 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Thu, 12 Mar 2020 15:08:27 +0300 Subject: [PATCH 285/557] Fixed Unicode value for Lang entry --- .../verapdf-profile-6-7-4-t01.xml | 6 +++--- PDF_A/PDFA-2A.xml | 6 +++--- PDF_A/PDFA-3A.xml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml index d46b6288..da30c423 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml @@ -11,13 +11,13 @@ - If the Lang entry is present in the document’s Catalog dictionary or in a structure element dictionary or + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) - Non-standard structure type is not mapped to a standard type + The Lang value is invalid diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 51b83606..efbf5658 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1473,13 +1473,13 @@ - If the Lang entry is present in the document’s Catalog dictionary or in a structure element dictionary or + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) - Non-standard structure type is not mapped to a standard type + The Lang value is invalid diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 58fde3c9..1fcfb7ff 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1473,13 +1473,13 @@ - If the Lang entry is present in the document’s Catalog dictionary or in a structure element dictionary or + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - value == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) - Non-standard structure type is not mapped to a standard type + The Lang value is invalid From 3cd1a369886d7cc33f3ca71a5156a05d611ad684 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Thu, 12 Mar 2020 16:01:54 +0300 Subject: [PATCH 286/557] Final fix of the CosLang validation rule --- .../verapdf-profile-6-7-4-t01.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml index da30c423..63567f71 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml @@ -15,7 +15,7 @@ property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) The Lang value is invalid diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index efbf5658..28af8482 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1477,7 +1477,7 @@ property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) The Lang value is invalid diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 1fcfb7ff..0a3fcf87 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1477,7 +1477,7 @@ property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(value) + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) The Lang value is invalid From 6740d98c542da5bb58ecf4a7c8d551352095e58e Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 4 Mar 2020 16:05:56 +0300 Subject: [PATCH 287/557] PDF/UA validation. Rules 5.1, 5.2, 7.1.4, 7.1.9, 7.1.10. Added new profiles. --- .../verapdf-profile-5-t01.xml | 21 ++++++++++++++++ .../verapdf-profile-5-t02.xml | 24 +++++++++++++++++++ .../1/7.1 General/verapdf-profile-7-1-t04.xml | 23 ++++++++++++++++++ .../1/7.1 General/verapdf-profile-7-1-t09.xml | 21 ++++++++++++++++ .../1/7.1 General/verapdf-profile-7-1-t10.xml | 20 ++++++++++++++++ 5 files changed, 109 insertions(+) create mode 100644 PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml create mode 100644 PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml new file mode 100644 index 00000000..d211bbdc --- /dev/null +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO/FDIS 14289-1:2013 - 5 Version identification - PDF/UA Identification Schema. + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. +
+ + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + UAIdentification_size == 1 + + The document metadata stream doesn't contains PDF/UA Identification Schema. + + + + + + +
diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml new file mode 100644 index 00000000..e584a5a8 --- /dev/null +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml @@ -0,0 +1,24 @@ + + +
+ ISO/FDIS 14289-1:2013 - 5 Version identification - Part number. + The value of pdfuaid:part shall be the part number of the International Standard to which the file + conforms. +
+ + + + + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. + part == 1 + + The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA conforming file. + + part + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml new file mode 100644 index 00000000..ffd4be5c --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml @@ -0,0 +1,23 @@ + + +
+ ISO/FDIS 14289-1:2013 - 7.1 General - 7.1.4 Suspects + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. +
+ + + + + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. + Suspects == false + + /Suspects entry of the MarkInfo dictionary is not present in the document catalog or is set to true + + + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml new file mode 100644 index 00000000..fe0fdca3 --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml @@ -0,0 +1,21 @@ + + +
+ ISO/FDIS 14289-1:2013 - 5 Version identification - PDF/UA Identification Schema. + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. +
+ + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + containsDc_title == true + + The document metadata stream doesn't contains PDF/UA Identification Schema. + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml new file mode 100644 index 00000000..9a6260b5 --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml @@ -0,0 +1,20 @@ + + +
+ ISO/FDIS 14289-1:2013 - 7.1 General - 7.1.10 DisplayDocTitle + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. +
+ + + + + The document catalog dictionary shall include a MarkInfo dictionary containing a DisplayDocTitle key, whose value shall be true. + DisplayDocTitle == true + + /DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true + + + + + +
From c8862d44bdd79e40c93a267bd6c5e501951a8ff1 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 6 Mar 2020 16:06:50 +0300 Subject: [PATCH 288/557] PDF/UA validation. Rule 7.18.1. Added new profile. --- .../verapdf-profile-7-18-t01.xml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml diff --git a/PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml b/PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml new file mode 100644 index 00000000..23df9181 --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO/FDIS 14289-1:2013 - 7.18 Annotations - PDF/UA Identification Schema. + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. +
+ + + + + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. + annots_size == 0 || Tabs == 'S' + + A page containing an annotation does not contain a Tabs key or has a Tabs key with a value other than S. + + + + + + +
From 4bceeace6eb84cf3df162a96548cbd75b7ed4582 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 16 Mar 2020 16:13:14 +0300 Subject: [PATCH 289/557] Fixed profiles. --- .../verapdf-profile-5-t01.xml | 8 ++++---- .../verapdf-profile-5-t02.xml | 8 ++++---- PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml | 10 +++++----- PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml | 14 +++++++------- PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml | 10 +++++----- .../verapdf-profile-7-18-3-t01.xml} | 8 ++++---- 6 files changed, 29 insertions(+), 29 deletions(-) rename PDF_UA/1/7.18 Annotations/{verapdf-profile-7-18-t01.xml => 7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml} (71%) diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml index d211bbdc..79ac6acb 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml @@ -1,13 +1,13 @@ - -
- ISO/FDIS 14289-1:2013 - 5 Version identification - PDF/UA Identification Schema. + +
+ ISO 14289-1:2014 - 5 Version identification - PDF/UA Identification Schema The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema.
- + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. UAIdentification_size == 1 diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml index e584a5a8..ab6cf06d 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml @@ -1,14 +1,14 @@ - -
- ISO/FDIS 14289-1:2013 - 5 Version identification - Part number. + +
+ ISO 14289-1:2014 - 5 Version identification - Part number The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms.
- + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. part == 1 diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml index ffd4be5c..6db2b5b1 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml @@ -1,17 +1,17 @@ - -
- ISO/FDIS 14289-1:2013 - 7.1 General - 7.1.4 Suspects + +
+ ISO 14289-1:2014 - 7.1 General - Suspects The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false.
- + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. Suspects == false - /Suspects entry of the MarkInfo dictionary is not present in the document catalog or is set to true + Suspects entry of the MarkInfo dictionary is not present in the document catalog or is set to true diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml index fe0fdca3..0b6935d3 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml @@ -1,17 +1,17 @@ - -
- ISO/FDIS 14289-1:2013 - 5 Version identification - PDF/UA Identification Schema. - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + +
+ ISO 14289-1:2014 - 7.1 General - Dc title +
- - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + + containsDc_title == true - The document metadata stream doesn't contains PDF/UA Identification Schema. + Metadata stream does not contain dc:title diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml index 9a6260b5..cc29ab1c 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml @@ -1,17 +1,17 @@ - -
- ISO/FDIS 14289-1:2013 - 7.1 General - 7.1.10 DisplayDocTitle + +
+ ISO 14289-1:2014 - 7.1 General - DisplayDocTitle The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true.
- + The document catalog dictionary shall include a MarkInfo dictionary containing a DisplayDocTitle key, whose value shall be true. DisplayDocTitle == true - /DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true + DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true diff --git a/PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml similarity index 71% rename from PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml rename to PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml index 23df9181..da74cd30 100644 --- a/PDF_UA/1/7.18 Annotations/verapdf-profile-7-18-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml @@ -1,13 +1,13 @@ - -
- ISO/FDIS 14289-1:2013 - 7.18 Annotations - PDF/UA Identification Schema. + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.3 Tab order - Tabs in page with annotations Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S.
- + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. annots_size == 0 || Tabs == 'S' From aa43aa56cef0b7a77ba8b7e63110e1b5b6e42f2c Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 16 Mar 2020 16:30:49 +0300 Subject: [PATCH 290/557] Added profiles for rules 7.21(Fonts). --- .../verapdf-profile-7-21-3-1-t01.xml | 31 ++++++++++++++ .../verapdf-profile-7-21-3-2-t01.xml | 25 ++++++++++++ .../verapdf-profile-7-21-3-3-t01.xml | 40 +++++++++++++++++++ .../verapdf-profile-7-21-3-3-t02.xml | 23 +++++++++++ .../verapdf-profile-7-21-3-3-t03.xml | 38 ++++++++++++++++++ .../verapdf-profile-7-21-4-1-t01.xml | 23 +++++++++++ .../verapdf-profile-7-21-4-1-t03.xml | 23 +++++++++++ .../verapdf-profile-7-21-4-2-t01.xml | 23 +++++++++++ .../verapdf-profile-7-21-4-2-t02.xml | 23 +++++++++++ .../verapdf-profile-7-21-5-t01.xml | 23 +++++++++++ .../verapdf-profile-7-21-6-t01.xml | 23 +++++++++++ .../verapdf-profile-7-21-6-t02.xml | 27 +++++++++++++ .../verapdf-profile-7-21-6-t03.xml | 21 ++++++++++ .../verapdf-profile-7-21-6-t04.xml | 23 +++++++++++ .../verapdf-profile-7-21-7-t01.xml | 25 ++++++++++++ .../verapdf-profile-7-21-7-t02.xml | 21 ++++++++++ .../verapdf-profile-7-21-8-t01.xml | 23 +++++++++++ 17 files changed, 435 insertions(+) create mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml create mode 100644 PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml new file mode 100644 index 00000000..bdbfb3c3 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml @@ -0,0 +1,31 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CIDSystemInfo + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. +
+ + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml new file mode 100644 index 00000000..bf886c04 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CIDToGIDMap + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. +
+ + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml new file mode 100644 index 00000000..d6bf0200 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml @@ -0,0 +1,40 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. +
+ + + + + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml new file mode 100644 index 00000000..12a0c8bb --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - WMode + 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. +
+ + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml new file mode 100644 index 00000000..0a4aa788 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml @@ -0,0 +1,38 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. +
+ + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + 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" + + A CMap references another non-standard CMap + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml new file mode 100644 index 00000000..eb31414d --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - General + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. +
+ + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml new file mode 100644 index 00000000..444701d7 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - Glyphs + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. +
+ + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml new file mode 100644 index 00000000..3b63b378 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CharSet entry in Type1 fonts + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. +
+ + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml new file mode 100644 index 00000000..f79f0a03 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CIDSet entry in CID Fonts + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. +
+ + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml new file mode 100644 index 00000000..c78e9f24 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.5 Font metrics - Font metrics + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. +
+ + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml new file mode 100644 index 00000000..92e5c867 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps for non-symbolic TrueType fonts + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. +
+ + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml new file mode 100644 index 00000000..c129b022 --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - Non-symbolic TrueType fonts + 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. +
+ + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml new file mode 100644 index 00000000..3e012c0e --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - Symbolic TrueType fonts + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary +
+ + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml new file mode 100644 index 00000000..9635fede --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps in the symbolic TrueType font program + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. +
+ + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml new file mode 100644 index 00000000..1f9c0f4f --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Unicode mapping + 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 ISO 19005-2:2011, 6.2.11.7.2. +
+ + + + + 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 ISO 19005-2, 6.2.11.7.2. + toUnicode != null + + The glyph can not be mapped to Unicode + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml new file mode 100644 index 00000000..6c90500c --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Valid Unicode values + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. +
+ + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml new file mode 100644 index 00000000..a3f2c98f --- /dev/null +++ b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.21 Fonts - 7.21.8 Use of .notdef glyph - Use of .notdef glyph + A PDF/A-2 compliant document 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. +
+ + + + + A PDF/A-2 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + +
From a7a1ab910a3e9e7c432f84dad7ba8ba283dbfced Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 16 Mar 2020 19:39:14 +0300 Subject: [PATCH 291/557] Added new profiles. --- .../1/7.1 General/verapdf-profile-7-1-t05.xml | 25 ++++++++++++++++ .../1/7.1 General/verapdf-profile-7-1-t08.xml | 23 ++++++++++++++ .../verapdf-profile-7-10-t01.xml | 23 ++++++++++++++ .../verapdf-profile-7-10-t02.xml | 21 +++++++++++++ .../verapdf-profile-7-11-t01.xml | 21 +++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml | 29 ++++++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml | 30 +++++++++++++++++++ .../verapdf-profile-7-20-t01.xml | 21 +++++++++++++ .../verapdf-profile-7-4-4-t02.xml | 26 ++++++++++++++++ .../verapdf-profile-7-4-4-t03.xml | 26 ++++++++++++++++ 10 files changed, 245 insertions(+) create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml create mode 100644 PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml create mode 100644 PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml create mode 100644 PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml create mode 100644 PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml create mode 100644 PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml create mode 100644 PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml new file mode 100644 index 00000000..3803373a --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Standard roles + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as + defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. +
+ + + + + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as + defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + standardType != null + + Non-standard structure type is not mapped to a standard type + + + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml new file mode 100644 index 00000000..136dec9f --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Metadata key in the Catalog + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. +
+ + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + +
diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml new file mode 100644 index 00000000..523af616 --- /dev/null +++ b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.10 Optional content - Name key present + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. +
+ + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + +
diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml new file mode 100644 index 00000000..fae049d6 --- /dev/null +++ b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.10 Optional content - Order key + The AS key shall not appear in any optional content configuration dictionary. +
+ + + + + The AS key shall not appear in any optional content configuration dictionary. + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + +
diff --git a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml new file mode 100644 index 00000000..b92db74e --- /dev/null +++ b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.11 Embedded files - F and UF keys + The file specification dictionary for an embedded file shall contain the F and UF keys +
+ + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + containsEF == false || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml new file mode 100644 index 00000000..0021ebd0 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml @@ -0,0 +1,29 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Unicode character maps + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, + as described in PDF Reference 5.9, unless the font meets any of the following three conditions: + (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; + (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. +
+ + + + + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, + as described in PDF Reference 5.9, unless the font meets any of the following three conditions: + (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; + (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. + toUnicode != null + + The font does not define Unicode character map + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml new file mode 100644 index 00000000..343c4ace --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml @@ -0,0 +1,30 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Natural language specification + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. +
+ + + + + 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-1:2008, 14.9.2. + A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag + as defined in RFC 3066, Tags for the Identification of Languages. + /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) + + Non-standard structure type is not mapped to a standard type + + + + + + + + + +
diff --git a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml new file mode 100644 index 00000000..7426059f --- /dev/null +++ b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.20 XObjects - Reference XObjects + A conforming file shall not contain any reference XObjects +
+ + + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + +
diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml new file mode 100644 index 00000000..d75e512e --- /dev/null +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn + All documents shall be either strongly or weakly structured, but not both. +
+ + + + + All documents shall be either strongly or weakly structured, but not both. + usesHn == false + + Document uses both H and H# tags + + + + + + + + false + true + + +
diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml new file mode 100644 index 00000000..f81cb84e --- /dev/null +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn + All documents shall be either strongly or weakly structured, but not both. +
+ + + + + All documents shall be either strongly or weakly structured, but not both. + usesH == false + + Document uses both H and H# tags + + + + + + + + false + true + + +
From 97d8a511d9dab0b75f443c76dfb977ffae747f6f Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 16 Mar 2020 20:55:20 +0300 Subject: [PATCH 292/557] PDF/UA validation. Rules 7.3.1, 7.7.1. Added new profiles. --- .../7.3 Graphics/verapdf-profile-7-3-t01.xml | 25 +++++++++++++++++++ .../verapdf-profile-7-7-t01.xml | 21 ++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml create mode 100644 PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml diff --git a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml new file mode 100644 index 00000000..189283bf --- /dev/null +++ b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.3 Graphics - Figure alternative and replacement text + Figure tags shall include an alternative representation or replacement text that represents the contents + marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 +
+ + + + + Figure tags shall include an alternative representation or replacement text that represents the contents + marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 + (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + + Figure tag alternative or replacement text missing + + + + + + + + +
diff --git a/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml new file mode 100644 index 00000000..9e21ec5e --- /dev/null +++ b/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.7 Mathematical exspressions - Alt in Formula + +
+ + + + + + Alt != null && Alt != '' + + Formula tag is missing an Alt attribute + + + + + + +
From b1a7f925d067110e92520a9ab414d7e5fe3cac29 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 18 Mar 2020 10:18:49 +0300 Subject: [PATCH 293/557] PDF/UA validation. Rule 7.4.4.1. Added new profile. --- .../verapdf-profile-7-4-4-t01.xml | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml new file mode 100644 index 00000000..763cf3c3 --- /dev/null +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - number of H + Each node in the tag tree shall contain at most one child H tag. +
+ + + + + Each node in the tag tree shall contain at most one child H tag. + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + A node contains more than one H tag + + + + + + +
From c76cd837b69b2ef6205a31a19a7b2bbfb55a7308 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 18 Mar 2020 12:02:39 +0300 Subject: [PATCH 294/557] PDF/UA validation. Rule 7.1.9. Changed profile. --- PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml index 0b6935d3..985e3986 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml @@ -2,14 +2,18 @@
ISO 14289-1:2014 - 7.1 General - Dc title - + The Metadata stream in the document’s catalog dictionary shall contain a dc:title entry, where dc is the + recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which + clearly identifies the document.
- - containsDc_title == true + The Metadata stream in the document’s catalog dictionary shall contain a dc:title entry, where dc is the + recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which + clearly identifies the document. + dc_title != null Metadata stream does not contain dc:title From 750a7d47de1173fe32730a63a872c4cca1c16568 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 18 Mar 2020 13:04:59 +0300 Subject: [PATCH 295/557] PDF/UA validation. Rule 7.1.8,7.21.7.1. Changed profiles. --- PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml | 4 ++-- .../verapdf-profile-7-21-7-t01.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml index 136dec9f..8f0a8bb1 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml @@ -15,8 +15,8 @@ - - + + diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml index 1f9c0f4f..69efc87c 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml @@ -17,8 +17,8 @@
- - + +
From 80df129a7745a9e8ac7b6b238bafe62fdb312ffc Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 23 Mar 2020 15:40:47 +0300 Subject: [PATCH 296/557] PDF/UA validation. Rule 7.7.1. Changed profile. --- .../verapdf-profile-7-7-t01.xml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml index 9e21ec5e..ed201ff9 100644 --- a/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml +++ b/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml @@ -1,20 +1,24 @@
- ISO 14289-1:2014 - 7.7 Mathematical exspressions - Alt in Formula - + ISO 14289-1:2014 - 7.7 Mathematical exspressions - Alt and ActualText in Formula + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, + 14.8.4.5 and shall have Alt or ActualText attributes
- - Alt != null && Alt != '' + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, + 14.8.4.5 and shall have Alt or ActualText attributes + (Alt != null && Alt != '') || (ActualText != null && ActualText != '') - Formula tag is missing an Alt attribute + Formula tag is missing Alt or ActualText attributes - + + + From 2a859358b134a404ff6f925132194d6a168555dd Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Tue, 24 Mar 2020 14:34:06 +0300 Subject: [PATCH 297/557] Initial version of the PDF/UA-1 validation profile (Matterhorn Machine tests part 1) --- PDF_UA/PDF-UA1.xml | Bin 0 -> 58708 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 PDF_UA/PDF-UA1.xml diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml new file mode 100644 index 0000000000000000000000000000000000000000..8af376c26e6df903574ee1295a97f0686f29fb9f GIT binary patch literal 58708 zcmeI5X>(l1b%yT;esQW&<)1Kt6OoF|T?;8ubWtFw&00zXC0F7^1%lvWkst$*j^reN zJ;{0c#o_7hyUfMRUb+uP}L-m`Y!|NGw?&F`C^n&-{4X43qn*=_clgXU@T zqST`+b|m#pb&-+S4@ZtHYUpQ}oa5AK6IT*2jzHwSC7Z-!!*v?zfsBnk)9_ zmVKhxP3&oYZdi}IX+_NPz&_crmb=!=t28!!h+f-=eNCE8`-W98H|Fx%=*sBPa@TsL zO5`+Li%{hqD*QuD6;ecArL(7bQoyxaUXJ;gWdMLExy@1D)=xy|tA z;e0MO_ibJ0ttWPtJ$YSFX;SUO4WnlC!A^PK{;z0qkk<3mT06aOcJ9K&sPH=NFx1<& z-P%sP1D{Nq&zgJ9*Y@w_<{ew(wdQ)7=?94_e0DL>ziX^~X3V+Vr;<81jGMM?N1hl} zcsBl5_7XEK+sDfNiHYs*gXYgh=N(%Id->(zy8dXtePch{_RWv>_hWmeZ?~dfICo+* ze3^QDnxtaKT03nSLA3fIqZPl4v*7F3)?TvqZu<0<{SPXCl{oN${ZBkkn~OdC6ElLI zU3A|v>LIO?9C25T8SFC%0M8=}kCH4rPoM6j)<`^Z1KxlEv_L)`3)m}omG7B(O&cU= zl2$Ann%FwK=Ji?Pi@iigde3PJn*C(ofN73)jI)z^Vzw6&xAajW=N+e;|9d0#3-xa% z`5T(Y4{7wjrd57qyo5BsrM`dNyci>~uOR9Els%0W;KPCah&yi@=7@F=t(Tp|Ezkt{ zm!{g2Y~(uYu>PomgKM~&{Cq(32K8&yO-5PXPoCktP$ECgR%S0VdC z24UFqN%Y+_ss?c-H?&KeoCF~l7a;%e-C~CbMrg<-#zQ!ZPZux8=rxL>=vWu zn4Ql~7ThD74?fiHg3z#@&BSactfv?U{`S2amZBS@<-n!+MzW1^E2=#oSy9@p5);Sn zjSz6pD2$#1X|XljI%BUw`%LE}Y(z&@dZABgGxqqkeFDW6g^GO^QBZJR^cmjM7ze7A z_8QVN-Pf9!KaPLS4<2-vuZ5S2hc2ubv*z|}`f!@vaNDqZtF8mSeVp2qq8m@P>dgFK*ctwD|tvroR=OQe5x zyxuyDHfd}#fA zU@LxVe`Ga=uj^3(B1>3-JnQz3VuC~Vt$S^>W#s1xcgZHn-jxrG1^kos>ajnMHQqKG z@PW-p)Y!E4nnR6*Xp6`-$m;IHZtq*%Hsm?_%8AxI8MNYkmBei1O~_+-n${WlD)}cq zgL+pNV^_03KNNepN_%=5pSuQ-zlZ--^JmSQr^{0A(=GGG0+58$5K+CHY8(1!;8N3H zfv|OGTh@{?3+{m-i;k&IEUJw~`O@Tm+w9KUwl6!De+?X!z2ZnRF0$&;yT#zav>7VO z>SHd~+nzQzx8}-`MK{;w)>jt_ZCU&K)&m?%Egn`@*k5CO+0B$4dTH%SD>AQYlGlunj$cJQ zRQ4me_I>+9#1n~<24)s~uUKh4yT}YFYlH>(tMn6IvsW9DEsDsdvd5F=Tl=(*;ZqxT zJ;gGKz+y>}kI}rLNzfVl5AU6CiKn%*)I3Y{@P*+7G$$f~-340Em#hr-%j3KUW&y`K z&Nctsyq%5d^AP=1n-w#Y6~$ zP9>k}e1&D3mT9J%*0D`IPg`GCQ2KoHN%OH~Bv@1a>84dH-s|}Mb6YvpFMIZ#crMkD6qfWN-Ky7A9(_?&IUrt*cdPWEwv0T4~&eh$GUxnxrIVsijhi7c%@-IqeW?ti_O0`|7vSH-~81y;rZrY zntyBlD`~)M&Hps#?340aDp9T%&%AAx=RaCL?n2rD`1o9+ZFmRYS^w0A?V5$UTz`F? z9ru{kkRRP$+f%mWED|G0&GfvF&vKU8)l%9u8*-uJ^x4G@`W#P| z{+@YGcMT`Ne)eP)Ho(J9oN-_)$VKU+l=zFcGv(u_xj)b^wBxfD(p#JB{gZ@vK6E0 zKg@o^8_SqroWWbB5nmZ{5_gve>ZcFR z+B(#l&+!kXN8U<3eV8g$mwmnyFERG9+#B@f^W+b)AJVXBa^IoYmD7b~eK}-SfdsQV z-FP=tQ;+5M=}PRq=@LHb5GOk44^_ia1 zSp?b550l;Vz;**nkQGHVf|~IsCV%Wz-+af~KOTkt)cSWBUDXL8W&61g!sAswyI8ew zPRD5>dq@6iP`AR0h-qeNxI^ccgCj&v@|Pla8uTZR}FTe-C7iRmkn18ro%6SL`# z2S6(QWThQ#55cee)bkh~Yu|XV4D{=^ z?w#-b-&x|;-ICWI&Cp3Rq-%_IfPYfQ`Hv@#O+@2s%ad&;+Z}IrHTi5+{T>&ZM=XP^ zuScDQ+p6{w=B=b5H z8S-^}WorOieALBwf6?o>7_~ot!L(dNZ_cF{c*J}zC2i)m$1u(;;%132O)?{8I&S?{E%dU9zV_ zra35Fq5%6q1@F*4PDc`|gJY$>OF|QLia4d~8IQX%gR;I``9@(A+D9|={X0Douj7gL z6D9hi;WRW}&FyjA!FQa|ew`1Bd&-?tyX_VCbV}|PU*qMpqjwXd-`9pBeqa3YSTNrj zRz9-vS9=SlTOM^Cfzw!-4BZWm98RYeb%(w-m-jLv<gQP(#@KExMJt)8DDDA#WcBG$XAV$5LY>QmFYi{1OeL_13 zN7jdEy{O9Z<(Jb9_t!M!nm~+&Z?HhR= zx|>_NPS}iuqt#Rijm9qH*I|oXvFA#PhnDM;jkaDxGvwG0e}i%!2}d?U`)Ir^d*+j* zJ%zoc)yUXdMc%J;CA~>6QKj_us4dM*pSg`L3cH1{h}~UGP7u_7khBe15Rd(nA0-k@56Ga$7ePiUiaGa8g_^XH z-~H&flN|MYv2zT!q_s~NqY3q1h_-N!HQf{MD5nYm7-QC^8^y#m@XS5yWh~!x zw~g_K)>yW^YgPmABc5&KXdPpZS^LLUDJ>oxN9A}v#u-}Ur?wy5#dKinqV3q#wcEvb zW7c)YsEH?iv{CC;G3L-3y%qJyvyGRxj4{WoQ@8jXRVwRNG3L-Z#joCWHc4r>jUKUx}x`-pkWLW{tZag?v;676FiL-YWLuymap z$BkOIim}G5S*?X<_szy0Z)tb6jIpP$vmSH&o_CG>som3jRC`hVl$QHAnro+NKda2t zZO2ir95?uDmRU#Z7&|zo_Gj-}#FKb%yP9rQH?wrVx6-{W&ue?-QN5mZR4soO;4D$K zp%}@@imW+LI1iuX=-Pal9QdvUi)hT zzPA{M-+ASEPh#N_10x^cGwF+*x1(z9S_NiD-H*>PA35e1I9AS}UTr?7JkPV3NLoHO z<-R?i72hm3rxD|pIk53m@@#e4V%p9+w>cWO_w{t)@$pp+Q!!NDSNrgd+?-_Gn)eo; zQWB%0&N+shb4iz|OU!H0gA-Si9as!<_$t~l<2pk;HV)Tr7gk@;zCGSL2H#a(RY&fF zmZ5q2_fW0ZF?hedz-!jz-PG~>pzRQ!mThN?Ci=+HI>sKeuMtxp=a0qnG0xB$+p+X< z@X9;Ht_@L(`29KtU+au^EPWjBw%d){g>k({U*qMl z9Yr5EmZY%VI_5CMReh}$Pn~ZDv&3ZU`2?oSHkW8Wjvk5$uVe6Dm)TdlB06=&@Pp1{ zcwhbe(qiyqRxVEWJV42(%Z&FVA}*XdFshs1qyKb!vzN8nFaL}$1@ZZ&nQrzgU$ zDos`5uP#c(eeaxjB|1!<{i5ISuw_wo;@F(&)G0LXn|fjKac&a?3-ukbaz7E_&+=W= zx$-Gb5!K?nV4R6O`bpXHJcQ0IwBy`mWo_gEyehRkX~3tvZ6Z!sj;%zcf)>f2w+gjB zOW-jAugF)8vb5B+XLS>To^4Y+G8Y=-s_l!O^}X}F(du)b(>QRQ_2l$6GRj%p?t92S zGK3H}A2sWF-CFiV{zF4tOj2FOs*mR`+Eu^xojVAoWA1#Jfjfq)<%u$vN)R>A7=k#C zTY&pErUo*E;{oxFSDeIWI?hE_V2? z%zS_SCcopI0b0ypdy7@_V-PT=Wywj4?$2pFcr+vXG&WLTMGne~TjmKLbz|pu#BkEZg ziMtR=t>GudqN1ehP40WizW1}c+)Ls1eJ+iG*u%0FdZF|mm@8QI*m~!t6m$W1SUa`2 z>yH)kw|tC=J&U%8Q^v857zJ$W(?Qy!@Jt@0-EowcU&r{2CoQrVJonl4+tzVQpFiu_ zY2HD{dF*|&^`6+RLl^CR&+#7U_v{_ee`+8#y9ZP zfsMlH#n3I#RXwamHz;yLwM1}#fBn@g@)>8KOG!lMBaOQGhPRZ;YH@jjGQpetZ#J1& zYnPLCSH*PAGG7JbacdUcG%!Y|=(eR?qv#HZX&NQ3ZF`i^)OAJN5Ru>7itJ*e&n6$g z%lw3+>JF!c{0ql?M_czN=(Y4_@tOYi^hWSQI}Q~3g`3YG9$F$NU2m|W$s21GyNLTc z(5+ZW?R#ZQ4_n;hHdkBg_&t2%wayyrH!|B|b#ZjwxpZ7H^t*@1v1`@jSh4s5fjDii zQ`m%+KOA$xBG)_E!j`4q?kIa;cy6UA_Wm$g*q~qBZmWCD@N)EdmzCY^=lHBjjBT$o ze21V$=^d1Qi{kvE2{&+JpGpQ7W1oZi9w}n(kFyH@I!?~$-zVHdhin?vxvMsxlUvEP zojtzgYV7N<^k?CX_AdADEtGH%%Xz(~q33Xd`-1AU&M~;W;WEbU;?gzlZdmk2u|1DG z+)Z5k>hP^yp5a>^Ccn1?Om;gpa{E80=sQvAr-r}yf+dv#yWzj1B5zwh`umrC9J$sK z4TXbo3mgc9O)dP#qLH>?g_1JWF4XG_6!sf3L#q4^Myw>_1Cqk>{yRn`|D?A)O1p&@ zJh9PV*w2sF!^ZLyza?80N=N5Oul6YnGZ z#^&CRv^#Qp@8067#rCGP0GT|OKU|@)hMypNL12&ZzP5YMOrklvs__vc@=o5hKLd2+SGF7VlhNa5vUNC# z%-dc1ZnDPKZp+ZEq$SI}-%LGm=l#>PO1Puc&C9;on#{s%`poY?-EHw-O%GNXl?7B9 z5AC#DbND>{yNPEnjhyeLOL?FXQcFKBspAmO?KLRF>}9vXnY^(;NK~FrAHtP#Hh)Qb zAM=@pVQa5VnUPw@opg;qUp-XYhOgHjIvyU+E2NxjOZ_EX*riR7;8%uL*q)`VppR4m zi%gUK%d`7%CK`?V0=*VM-%qpQ!`2`2S00(XJ+t1?nZwxc@uuba5n$&*%h&4PC!Wr$ z6`|ZwcEuy@eS7h@?ibXQcZ9(EjEKTX^$^|}Rdw1YZ>Iq-(An5_#5`P6_gSYk5)J9s z(pL|AAjib=Evq#$a)$&~iB~sxT&Zo_$mVF*7nMC~rC1K(EAW}Gy30$*chG$V@{RNP z2zozPy^iCz{oB~RXHvMCtb4`8WcT6)3EMsDadm2hX}KuBHD|QwXd0sABlN@bWapv- z;U44%%U5wvrx}_>?_}^u(b{S}89CPXk1?L_oauV5@4hXs!PJfXZqwCPV;LKAq>|4A z$K}x9kVvtqjH@4U%TUxc=ev3)(Wc2<8J zJ&V@r+2g*$m!ZQ9)7w9q>pWt-2(3%_(UVtsyku|8{lBOx|% zc#i?pPlN>vw&zb`HR#4ItSi}|2lkeLy@V=c*#B%iN_>p(@0otocf%I*jYBVM+j@Lv zZNIZIp4soa%}vwg9@}S4;>@n+kWrs^{jXN+Jt9YbYBz3(?w%oI)->pQvVN|QR^V?p brKW3z{`H@9I(1Rf`Ht@toAnd(qVfL&oiT}r literal 0 HcmV?d00001 From de934cc05e70cfb9772e73fcb04067752ce95d24 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Wed, 1 Apr 2020 12:43:34 +0300 Subject: [PATCH 298/557] Fixed malformed XML --- PDF_UA/PDF-UA1.xml | Bin 58708 -> 29369 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index 8af376c26e6df903574ee1295a97f0686f29fb9f..1ceb40d9969b4ffe64444bba356c7a9394dec991 100644 GIT binary patch literal 29369 zcmeHQU3S|@c7E8mARY$M#bM*sS+Dt^q0-EYhF%y){$b+zs}_3mCc{xHPA+y{dtos2GIV~b-*2c<=)H@l$zkL4xYvEN`=;AK zcMAU<4E@Xt!c+|s-^*gW!JhDzI*Ow-PO@M+Zs2Vpynox*^XC7)gTO4G|iLjeJ55J#gp8GF&dSE2vT4^=!;o)Q?O zmtGjEbKlO!AF62z5UDKh>*>&sGB;D@zt8-LxKrui(jR-RIs$TT{O^F%fBdRj?&D1w z{Nk&_L)AIhkr(nkl#l!*iIbU?O2gPsQ;_p9S2~Ob(=leI#@H$#!vo-fz%d&9G`f>< z-Ppq@wKOTuLG|tIZKvf)$ar3IA!DQ!y6@D@@gVU>ega1HOCKEU5E_N`9F(AfEt@6K zhVZhx7%yZipmwCd`cp3$KALz*rW`B?19=h&1o{#gS(*O<<9cCbO{9mVOfVWU+c_jL>MswkxHEe4%q zT?juYs0%d=1{B&}a&4d&L<5L>A7bjcm%M!n0akp+a5gu^i=gfL2Tt6~Bi^RIs0Dw`P0knQfaTY|vJ{1}P zlXx@rGqPEhO#S7ccw@;m12q#~Z`wesyw1Ty&umqd0163kre_ngvssCcet9C$J?Ps>a@A0-ebnfmn=u51W{& z(KOO{4#R8Z|6v+H%5rO6f9z#jd1;yNhyEyt&>IjyBgN1aMoRm^HcXb*gVw!m3y&m* zv4PQxY+;0RVX}$ut0a!IC2()&c7~~`zd2OVGz?dS{)_pfBZLX|oNiRxv{R`*F!Uz| zY9W4ZkLgXQf@fznWN%#dKB!Kuh-;cnM^%vv+<4YXw2IC^+(=qM_j7A!z4fn4G8TL4 zRje>CRg3Vv*VF;!F$o@4r#A~r2QFj8&uGE_{?|YM+n@gfK4ulYS{7TNdTKa$lm!{2qp=IFE@6`6 zDMb&2bXnw*=!rjw$M7VE5WP^squ{+5fE4J*)AJBBIf~JP#i4O~AiawK=iBi2%3DTL z1me1Xm0PZ}ckH6VeV-bmcUI7i5S1vBPK&P`LTB--C_p67 z$girRJ$eqS&qzrfZG!CZ#H50Jyz~-p0OuU~93#^(wcUxQ5AW#Lzxv{fFGP4T>UFN| zO?b%aM;p9Q`>luDY8oMGrsa~%dF=Zc6n*3nF^a=5zS6-W8k!Ip!+>sF`bfsu`psPk z(g+{P{1DI*AqS9H!@!0tQ+RoUA7g~5PD~JUn@>*O(~Gx{6da(Rf~bqwlYO+!XY)GO z-hOu7e8RWfzg{a6F#X0&Q4C)C{G6$F9djx&!iYuF@b}*Oks2lOSXR*;#*CU-)Aa|$ zLZSlo>88ot@DBeRDfWa|oZX+)8uI&7{HOVC^VMpW>6yQa^an#pWc+0+I4m2jn=WHh5^}%#p*^h^lh| z5L}30#pk}G4}Y6JYeCA#i7<_eu7yFG!660P=qRG|iaix#K2t<$a|3< z?mewG=nFs;%tWh5-!X!-&}vuUN8yNkCggSmdbD*>%jsXYcF9lY@YMEp_ZA0cx4L0w z15@ftZ#?-%{zsX|ckbL(fBd7`>LO0(g=droM)Q0Zo~j59&%0*ZDtcT04u-^f=#N~!8)_F zl4HbYkrIbt6NE$cgj}yBXX&fON0L*TP5YE5KaH#qxPga+Em5r~# zWznHxpx*lDR`$UvF!lkgfjGKAm<4Qk<$G`Om$Pq%+vX$TEk-$q#>O#A|Kx8)fPWGj7;SI|_o|ZRqwe5e!v^+H?lBF$)pzmh8;M_X;n;&k zjQ@en9il{pb_Q!iicE==F7mS4S`cT$Oq00R&H+nq=2#5X7^=?2wDyI2w4A^6VC2vq z0K*sT055}E0B-lwzcedD@1qb1Zk@3t7OZfY`h=o97dv@TO~FRY4CF6cHJR5H4ULya zM<{Fx)^N2E{Vi24EO52O%7~@93>Y^?G5;Tvm?qk!E_lmgNyAkfYa?2_$R?P2tR(OY zn95t&Th=ickK5QVUXpllYw5k_z0fr-^`vQ#vOjD5ygWkD9wTP~!an(gwr7kXday4L zl;WpLs6TnN#-iqPW8Q4tRbu(HS2U`hYfG8jt9^PIQ_?s#3cWP>KfWG4J>EP*7nnn5 z*wSuau%HDZQ|+u!@N{^GvD;7d7WL}FXZL3IP*-dpj7XvuEw#nbxXVT;((JNxF340!v5&vi3_`V;-CJY3JFUIh;@t)M2KWN+ zT&s)V9g?9ao0-IEfE>$~BvIQs-z!W45>{%;ke9(;AS>CwMzQr+s(Q6`XGDulSQey< zl_xgkTi6GksVR7V>^)CPCw?eWEWHdSkMz4uWzuD?x594gC7^?H(hEY-<&I}E$&_~2 zS{9@r9m7vbc!;bTTmp{up*WqEv_gNv-ERq8MMn5T#|8@DlGQ zS3!ybQhqsz6ZqN_=H9`Eb_$r;(9Oc6#U$k{5vTGNIBL^h(B#DI0!ePco7Xa(LzNtl z!g>r5WvSK0xb9uyfZb*{)&)-vSy4*s{|^Y^+oIa)Kue8*B>xgRXMm)!cp1|S!cC(Mb4nQ0e8m0=Tn0W}&d?D30SGA0ef>~zbCK>`s@}EGEk`cEL zd;{2mR%5BJt{#vQ2Q9emB0dEvXOOa{jGHOaS>QxflT{B<&W_4!ovZ3}zJ}^RO*goX zx*rY}!e7q57Mkwb(hFDRVIl7}!5(yQic+&T-aCuGdwLA?nsmMl;W)(|asqBAqIX%4 zg0C=_SRvLuxzw3&?y=5NNA&S6v`vZ02ea_A%Uyzv`qT4_V1k|BFiRyNKzQ&`aZSb% zSW%UCHDn!mi^_n8nhlU)T2qwTzWcU$^6IGhMDsw+siy8J?kIM;{e+U1~Fl~7dqGwpb+o^j(RB)@YD1Bw1QY* zi1BbYE51%Ks$ji){ju~X7&9H%VRcUks^DUWC5$xP8@z9hE&o{2)2LZfc}fzO(z%n_ z#qzWOU1=9Vxg{LmC^U@FroNeC$mwntTZ>A3%qB|GiG;}`uX36M(TYUBvW7db1UR^G zr{b+cT&I&J z(d$WKTWb_i)q<}T$^|oiMN_D&b+c32tX0#Q?}`C`ONP$oVym}eup^|oZXWjD4fC*P zlIcXE5@+!)5)UPY$W==sg6T^fZ)0kak8l~8&P2{l%GQKYO|Vv%9>NnbNdtErt}clB za0vs!9rzk?eQ#WyOF7U-3pK^5@@jhn>_!s7SKHQM6x$f!r4k~(Q zD%KV_11GK!O@OLn_~uA26KRsdN^=)s4vd-MMCuF>chx5?)z!&+C#m$e;02Z9wj`YX zupXuZ7mm>2(9j-tpI(TM{HVlEhh9XlLXy zlVZeX;UGQ}x;lgJwo!mRvs=YY+6F=|aK)C~=zwYAP8{MLquZ3Rj3J+Z7YZDN6^SxA zXDPZ|FUq_!41gtY&hARmT1xu(lx}z{MOpITa%<;zat8YTpML+<&Ru4ZtICTti;VHo}*gLk+j&(rTg67`@3 z=w)`W?0AK&J!2%_<|O_2*geBlU^E_jU_~75qQkcqlJA!#_X0DANT$Ik-o9K`6bzJ| zlAycJ-_+oB`%!w|nvMpBM#9S>c8ryhZBYJM8c!h1f=t;eDO8=xJ=3QCF7k2bcFOyM zHNS*${C0{w)&K?=(oO>$rVC)r$J1r(7L;n*b;A50TIYMDoKvS=Fxu_wY}o6}Hmn$f zIRjK3Elb#j#{z*;qE(sJPG(y&Gv^|dgiz0T{RYbMKY@Do0>(E9?geJai}*vdD|@H7 zyl-T$cZXTQ)0yUuG_r@O*4FUTCVCJFY{j6gd`i0{uXy7-`bse^;b`QFT3|!{&YS&& z3z6Yke^0v!GT`%Iki=;`%G@PcTYK9bCD%XwyE;W#JWw-MPmd4xwv{V|$3HuF!Cv}T zB&>e9L#W)r31k3e36sB`b++6f;HSpyU2hWaDZMds&09lmc9ErhQSRz!nr1P6U7~Ou z%rK{PH}MfAgZ?ZVd4d|i>4PfvrM^+O0SZ; zE=Y0(#8vE3v{9`=ykUz9w@{biV!C-3c;dj#g6#h@?=J{NIU!%#MSBFoSPXJP5|noM zbjB|CsA4J)p7!E2@dEO6!qnj)x*_P`eb`?SDlE&%J8& zw774Z$3=dGrYKIWh%NK0iRgx=akCGz@DT&r}2zY9hy;-wqMbw|oRgu~_n!^)Lf0nON z;>_spipKl+(oxKTwG5)0-Q_}J($6T!134@N3x~qaN=Fj_pbR9v80o|t;=?jbx8Mp| zgJ|j`oI-Lpg^Fn17UToZI>$Kn(O(p#NO4I)e<=yodDw36H*t;JecT$^>EMjOG8f8k z@@i7iuHt1>RIxEVZV5s+&50^QEB@qF;io!s!c}GBN=HpLj@JbSJn?EMZBJraW#;NLc2XmMf;E6DueB z%(l1b%yT;esQW&<)1Kt6OoF|T?;8ubWtFw&00zXC0F7^1%lvWkst$*j^reN zJ;{0c#o_7hyUfMRUb+uP}L-m`Y!|NGw?&F`C^n&-{4X43qn*=_clgXU@T zqST`+b|m#pb&-+S4@ZtHYUpQ}oa5AK6IT*2jzHwSC7Z-!!*v?zfsBnk)9_ zmVKhxP3&oYZdi}IX+_NPz&_crmb=!=t28!!h+f-=eNCE8`-W98H|Fx%=*sBPa@TsL zO5`+Li%{hqD*QuD6;ecArL(7bQoyxaUXJ;gWdMLExy@1D)=xy|tA z;e0MO_ibJ0ttWPtJ$YSFX;SUO4WnlC!A^PK{;z0qkk<3mT06aOcJ9K&sPH=NFx1<& z-P%sP1D{Nq&zgJ9*Y@w_<{ew(wdQ)7=?94_e0DL>ziX^~X3V+Vr;<81jGMM?N1hl} zcsBl5_7XEK+sDfNiHYs*gXYgh=N(%Id->(zy8dXtePch{_RWv>_hWmeZ?~dfICo+* ze3^QDnxtaKT03nSLA3fIqZPl4v*7F3)?TvqZu<0<{SPXCl{oN${ZBkkn~OdC6ElLI zU3A|v>LIO?9C25T8SFC%0M8=}kCH4rPoM6j)<`^Z1KxlEv_L)`3)m}omG7B(O&cU= zl2$Ann%FwK=Ji?Pi@iigde3PJn*C(ofN73)jI)z^Vzw6&xAajW=N+e;|9d0#3-xa% z`5T(Y4{7wjrd57qyo5BsrM`dNyci>~uOR9Els%0W;KPCah&yi@=7@F=t(Tp|Ezkt{ zm!{g2Y~(uYu>PomgKM~&{Cq(32K8&yO-5PXPoCktP$ECgR%S0VdC z24UFqN%Y+_ss?c-H?&KeoCF~l7a;%e-C~CbMrg<-#zQ!ZPZux8=rxL>=vWu zn4Ql~7ThD74?fiHg3z#@&BSactfv?U{`S2amZBS@<-n!+MzW1^E2=#oSy9@p5);Sn zjSz6pD2$#1X|XljI%BUw`%LE}Y(z&@dZABgGxqqkeFDW6g^GO^QBZJR^cmjM7ze7A z_8QVN-Pf9!KaPLS4<2-vuZ5S2hc2ubv*z|}`f!@vaNDqZtF8mSeVp2qq8m@P>dgFK*ctwD|tvroR=OQe5x zyxuyDHfd}#fA zU@LxVe`Ga=uj^3(B1>3-JnQz3VuC~Vt$S^>W#s1xcgZHn-jxrG1^kos>ajnMHQqKG z@PW-p)Y!E4nnR6*Xp6`-$m;IHZtq*%Hsm?_%8AxI8MNYkmBei1O~_+-n${WlD)}cq zgL+pNV^_03KNNepN_%=5pSuQ-zlZ--^JmSQr^{0A(=GGG0+58$5K+CHY8(1!;8N3H zfv|OGTh@{?3+{m-i;k&IEUJw~`O@Tm+w9KUwl6!De+?X!z2ZnRF0$&;yT#zav>7VO z>SHd~+nzQzx8}-`MK{;w)>jt_ZCU&K)&m?%Egn`@*k5CO+0B$4dTH%SD>AQYlGlunj$cJQ zRQ4me_I>+9#1n~<24)s~uUKh4yT}YFYlH>(tMn6IvsW9DEsDsdvd5F=Tl=(*;ZqxT zJ;gGKz+y>}kI}rLNzfVl5AU6CiKn%*)I3Y{@P*+7G$$f~-340Em#hr-%j3KUW&y`K z&Nctsyq%5d^AP=1n-w#Y6~$ zP9>k}e1&D3mT9J%*0D`IPg`GCQ2KoHN%OH~Bv@1a>84dH-s|}Mb6YvpFMIZ#crMkD6qfWN-Ky7A9(_?&IUrt*cdPWEwv0T4~&eh$GUxnxrIVsijhi7c%@-IqeW?ti_O0`|7vSH-~81y;rZrY zntyBlD`~)M&Hps#?340aDp9T%&%AAx=RaCL?n2rD`1o9+ZFmRYS^w0A?V5$UTz`F? z9ru{kkRRP$+f%mWED|G0&GfvF&vKU8)l%9u8*-uJ^x4G@`W#P| z{+@YGcMT`Ne)eP)Ho(J9oN-_)$VKU+l=zFcGv(u_xj)b^wBxfD(p#JB{gZ@vK6E0 zKg@o^8_SqroWWbB5nmZ{5_gve>ZcFR z+B(#l&+!kXN8U<3eV8g$mwmnyFERG9+#B@f^W+b)AJVXBa^IoYmD7b~eK}-SfdsQV z-FP=tQ;+5M=}PRq=@LHb5GOk44^_ia1 zSp?b550l;Vz;**nkQGHVf|~IsCV%Wz-+af~KOTkt)cSWBUDXL8W&61g!sAswyI8ew zPRD5>dq@6iP`AR0h-qeNxI^ccgCj&v@|Pla8uTZR}FTe-C7iRmkn18ro%6SL`# z2S6(QWThQ#55cee)bkh~Yu|XV4D{=^ z?w#-b-&x|;-ICWI&Cp3Rq-%_IfPYfQ`Hv@#O+@2s%ad&;+Z}IrHTi5+{T>&ZM=XP^ zuScDQ+p6{w=B=b5H z8S-^}WorOieALBwf6?o>7_~ot!L(dNZ_cF{c*J}zC2i)m$1u(;;%132O)?{8I&S?{E%dU9zV_ zra35Fq5%6q1@F*4PDc`|gJY$>OF|QLia4d~8IQX%gR;I``9@(A+D9|={X0Douj7gL z6D9hi;WRW}&FyjA!FQa|ew`1Bd&-?tyX_VCbV}|PU*qMpqjwXd-`9pBeqa3YSTNrj zRz9-vS9=SlTOM^Cfzw!-4BZWm98RYeb%(w-m-jLv<gQP(#@KExMJt)8DDDA#WcBG$XAV$5LY>QmFYi{1OeL_13 zN7jdEy{O9Z<(Jb9_t!M!nm~+&Z?HhR= zx|>_NPS}iuqt#Rijm9qH*I|oXvFA#PhnDM;jkaDxGvwG0e}i%!2}d?U`)Ir^d*+j* zJ%zoc)yUXdMc%J;CA~>6QKj_us4dM*pSg`L3cH1{h}~UGP7u_7khBe15Rd(nA0-k@56Ga$7ePiUiaGa8g_^XH z-~H&flN|MYv2zT!q_s~NqY3q1h_-N!HQf{MD5nYm7-QC^8^y#m@XS5yWh~!x zw~g_K)>yW^YgPmABc5&KXdPpZS^LLUDJ>oxN9A}v#u-}Ur?wy5#dKinqV3q#wcEvb zW7c)YsEH?iv{CC;G3L-3y%qJyvyGRxj4{WoQ@8jXRVwRNG3L-Z#joCWHc4r>jUKUx}x`-pkWLW{tZag?v;676FiL-YWLuymap z$BkOIim}G5S*?X<_szy0Z)tb6jIpP$vmSH&o_CG>som3jRC`hVl$QHAnro+NKda2t zZO2ir95?uDmRU#Z7&|zo_Gj-}#FKb%yP9rQH?wrVx6-{W&ue?-QN5mZR4soO;4D$K zp%}@@imW+LI1iuX=-Pal9QdvUi)hT zzPA{M-+ASEPh#N_10x^cGwF+*x1(z9S_NiD-H*>PA35e1I9AS}UTr?7JkPV3NLoHO z<-R?i72hm3rxD|pIk53m@@#e4V%p9+w>cWO_w{t)@$pp+Q!!NDSNrgd+?-_Gn)eo; zQWB%0&N+shb4iz|OU!H0gA-Si9as!<_$t~l<2pk;HV)Tr7gk@;zCGSL2H#a(RY&fF zmZ5q2_fW0ZF?hedz-!jz-PG~>pzRQ!mThN?Ci=+HI>sKeuMtxp=a0qnG0xB$+p+X< z@X9;Ht_@L(`29KtU+au^EPWjBw%d){g>k({U*qMl z9Yr5EmZY%VI_5CMReh}$Pn~ZDv&3ZU`2?oSHkW8Wjvk5$uVe6Dm)TdlB06=&@Pp1{ zcwhbe(qiyqRxVEWJV42(%Z&FVA}*XdFshs1qyKb!vzN8nFaL}$1@ZZ&nQrzgU$ zDos`5uP#c(eeaxjB|1!<{i5ISuw_wo;@F(&)G0LXn|fjKac&a?3-ukbaz7E_&+=W= zx$-Gb5!K?nV4R6O`bpXHJcQ0IwBy`mWo_gEyehRkX~3tvZ6Z!sj;%zcf)>f2w+gjB zOW-jAugF)8vb5B+XLS>To^4Y+G8Y=-s_l!O^}X}F(du)b(>QRQ_2l$6GRj%p?t92S zGK3H}A2sWF-CFiV{zF4tOj2FOs*mR`+Eu^xojVAoWA1#Jfjfq)<%u$vN)R>A7=k#C zTY&pErUo*E;{oxFSDeIWI?hE_V2? z%zS_SCcopI0b0ypdy7@_V-PT=Wywj4?$2pFcr+vXG&WLTMGne~TjmKLbz|pu#BkEZg ziMtR=t>GudqN1ehP40WizW1}c+)Ls1eJ+iG*u%0FdZF|mm@8QI*m~!t6m$W1SUa`2 z>yH)kw|tC=J&U%8Q^v857zJ$W(?Qy!@Jt@0-EowcU&r{2CoQrVJonl4+tzVQpFiu_ zY2HD{dF*|&^`6+RLl^CR&+#7U_v{_ee`+8#y9ZP zfsMlH#n3I#RXwamHz;yLwM1}#fBn@g@)>8KOG!lMBaOQGhPRZ;YH@jjGQpetZ#J1& zYnPLCSH*PAGG7JbacdUcG%!Y|=(eR?qv#HZX&NQ3ZF`i^)OAJN5Ru>7itJ*e&n6$g z%lw3+>JF!c{0ql?M_czN=(Y4_@tOYi^hWSQI}Q~3g`3YG9$F$NU2m|W$s21GyNLTc z(5+ZW?R#ZQ4_n;hHdkBg_&t2%wayyrH!|B|b#ZjwxpZ7H^t*@1v1`@jSh4s5fjDii zQ`m%+KOA$xBG)_E!j`4q?kIa;cy6UA_Wm$g*q~qBZmWCD@N)EdmzCY^=lHBjjBT$o ze21V$=^d1Qi{kvE2{&+JpGpQ7W1oZi9w}n(kFyH@I!?~$-zVHdhin?vxvMsxlUvEP zojtzgYV7N<^k?CX_AdADEtGH%%Xz(~q33Xd`-1AU&M~;W;WEbU;?gzlZdmk2u|1DG z+)Z5k>hP^yp5a>^Ccn1?Om;gpa{E80=sQvAr-r}yf+dv#yWzj1B5zwh`umrC9J$sK z4TXbo3mgc9O)dP#qLH>?g_1JWF4XG_6!sf3L#q4^Myw>_1Cqk>{yRn`|D?A)O1p&@ zJh9PV*w2sF!^ZLyza?80N=N5Oul6YnGZ z#^&CRv^#Qp@8067#rCGP0GT|OKU|@)hMypNL12&ZzP5YMOrklvs__vc@=o5hKLd2+SGF7VlhNa5vUNC# z%-dc1ZnDPKZp+ZEq$SI}-%LGm=l#>PO1Puc&C9;on#{s%`poY?-EHw-O%GNXl?7B9 z5AC#DbND>{yNPEnjhyeLOL?FXQcFKBspAmO?KLRF>}9vXnY^(;NK~FrAHtP#Hh)Qb zAM=@pVQa5VnUPw@opg;qUp-XYhOgHjIvyU+E2NxjOZ_EX*riR7;8%uL*q)`VppR4m zi%gUK%d`7%CK`?V0=*VM-%qpQ!`2`2S00(XJ+t1?nZwxc@uuba5n$&*%h&4PC!Wr$ z6`|ZwcEuy@eS7h@?ibXQcZ9(EjEKTX^$^|}Rdw1YZ>Iq-(An5_#5`P6_gSYk5)J9s z(pL|AAjib=Evq#$a)$&~iB~sxT&Zo_$mVF*7nMC~rC1K(EAW}Gy30$*chG$V@{RNP z2zozPy^iCz{oB~RXHvMCtb4`8WcT6)3EMsDadm2hX}KuBHD|QwXd0sABlN@bWapv- z;U44%%U5wvrx}_>?_}^u(b{S}89CPXk1?L_oauV5@4hXs!PJfXZqwCPV;LKAq>|4A z$K}x9kVvtqjH@4U%TUxc=ev3)(Wc2<8J zJ&V@r+2g*$m!ZQ9)7w9q>pWt-2(3%_(UVtsyku|8{lBOx|% zc#i?pPlN>vw&zb`HR#4ItSi}|2lkeLy@V=c*#B%iN_>p(@0otocf%I*jYBVM+j@Lv zZNIZIp4soa%}vwg9@}S4;>@n+kWrs^{jXN+Jt9YbYBz3(?w%oI)->pQvVN|QR^V?p brKW3z{`H@9I(1Rf`Ht@toAnd(qVfL&oiT}r From 1b97f2024a931af477af08fa8e0ae79e15ee0c02 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 25 Mar 2020 21:24:48 +0300 Subject: [PATCH 299/557] PDF/UA validation. Rules 7.1.7, 7.4.2.1, 7.7.1, 7.9.1, 7.9.2, 7.18.6.2.1, 7.18.6.2.2. Added new profiles. --- .../1/7.1 General/verapdf-profile-7-1-t04.xml | 6 +-- .../1/7.1 General/verapdf-profile-7-1-t05.xml | 14 ++++--- .../1/7.1 General/verapdf-profile-7-1-t07.xml | 23 +++++++++++ .../1/7.1 General/verapdf-profile-7-1-t09.xml | 4 +- .../verapdf-profile-7-16-t01.xml | 27 +++++++++++++ .../verapdf-profile-7-18-1-t01.xml | 21 ++++++++++ .../verapdf-profile-7-18-2-t02.xml | 21 ++++++++++ .../verapdf-profile-7-18-4-t01.xml | 23 +++++++++++ .../verapdf-profile-7-18-5-t01.xml | 23 +++++++++++ .../verapdf-profile-7-18-5-t02.xml | 23 +++++++++++ .../verapdf-profile-7-18-6-2-t01.xml | 26 +++++++++++++ .../verapdf-profile-7-18-6-2-t02.xml | 25 ++++++++++++ ...-2-t11.xml => verapdf-profile-7-2-t13.xml} | 13 +++---- .../verapdf-profile-7-21-3-3-t01.xml | 2 +- .../verapdf-profile-7-21-8-t01.xml | 2 +- .../verapdf-profile-7-4-2-t01.xml | 39 +++++++++++++++++++ .../verapdf-profile-7-7-t01.xml | 2 +- .../verapdf-profile-7-9-t01.xml | 21 ++++++++++ .../verapdf-profile-7-9-t02.xml | 21 ++++++++++ PDF_UA/PDF-UA1.xml | 6 +-- 20 files changed, 318 insertions(+), 24 deletions(-) create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml create mode 100644 PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml create mode 100644 PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml create mode 100644 PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t02.xml create mode 100644 PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml create mode 100644 PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml create mode 100644 PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml create mode 100644 PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml create mode 100644 PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t11.xml => verapdf-profile-7-2-t13.xml} (64%) create mode 100644 PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml rename PDF_UA/1/{7.7 Mathematical exspressions => 7.7 Mathematical expressions}/verapdf-profile-7-7-t01.xml (92%) create mode 100644 PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml create mode 100644 PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml index 6db2b5b1..55d71b3f 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml @@ -2,16 +2,16 @@
ISO 14289-1:2014 - 7.1 General - Suspects - The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321)
- The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) Suspects == false - Suspects entry of the MarkInfo dictionary is not present in the document catalog or is set to true + Suspects entry has a value of true diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml index 3803373a..c330dadd 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml @@ -2,18 +2,22 @@
ISO 14289-1:2014 - 7.1 General - Standard roles - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, + as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + This mapping may be indirect; within the role map a non-standard type can map directly to another + non-standard type, but eventually the mapping shall terminate at a standard type.
- All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, + as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + This mapping may be indirect; within the role map a non-standard type can map directly to another + non-standard type, but eventually the mapping shall terminate at a standard type. standardType != null - Non-standard structure type is not mapped to a standard type + Non-standard structure type is not mapped to a standard type or a circular mapping exists diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml new file mode 100644 index 00000000..b369b73d --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Remapped standard types + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. +
+ + + + + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. + isRemappedStandardType == false + + Standard type is remapped + + + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml index 985e3986..e8e1de8e 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml @@ -2,7 +2,7 @@
ISO 14289-1:2014 - 7.1 General - Dc title - The Metadata stream in the document’s catalog dictionary shall contain a dc:title entry, where dc is the + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document.
@@ -10,7 +10,7 @@ - The Metadata stream in the document’s catalog dictionary shall contain a dc:title entry, where dc is the + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document. dc_title != null diff --git a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml new file mode 100644 index 00000000..ecb1603f --- /dev/null +++ b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.16 Security - P key + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, + 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. +
+ + + + + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, + 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. + P != null && (P & (1 << 10)) == 1 + + The file is encrypted but does not contain a P entry in its encryption dictionary or + the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false + + + + + + + + + +
diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml new file mode 100644 index 00000000..58c1c991 --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.1 General - Annot tag + An annotation, excluding annotations of subtype Widget, Popup or Link, shall nested within an Annot tag +
+ + + + + An annotation, excluding annotations of subtype Widget, Popup or Link, shall nested within an Annot tag + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || structParentType == 'Annot' + + An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag + + + + + + +
diff --git a/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t02.xml new file mode 100644 index 00000000..6eec49d5 --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.2 Annotation types - TrapNext + Annotations of subtype TrapNet shall not be permitted. +
+ + + + + Annotations of subtype TrapNet shall not be permitted. + Subtype != 'TrapNet' + + An annotation of subtype TrapNet exists + + + + + + +
diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml new file mode 100644 index 00000000..cb667b97 --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.4 Forms - Widget annotation + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. +
+ + + + + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. + Subtype != 'Widget' || structParentType == 'Form' + + A widget annotation is not nested within a Form tag + + + + + + + + +
diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml new file mode 100644 index 00000000..9935f358 --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.5 Links - Link annotation + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. +
+ + + + + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. + Subtype != 'Link' || structParentType == 'Link' + + A link annotation is not nested within a Link tag + + + + + + + + +
diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml new file mode 100644 index 00000000..ebf333f5 --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.5 Links - Contents key + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. +
+ + + + + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. + Subtype != 'Link' || (Contents != null && Contents != '') + + A link annotation does not include an alternate description in the Contents Key + + + + + + + + +
diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml new file mode 100644 index 00000000..7636a9fd --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.6.2 Media clip data - CT in media clip dictionary + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) + are required. Value of CT should conform to the content type specification described in Internet RFC 2045 +
+ + + + + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) + are required. Value of CT should conform to the content type specification described in Internet RFC 2045 + CT != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(CT) + + CT key is missing from the media clip data dictionary or + value of CT not conform to the content type specification described in Internet RFC 2045 + + + + + + + + +
diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml new file mode 100644 index 00000000..38d419c6 --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.6.2 Media clip data - Alt in media clip dictionary + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) + are required. +
+ + + + + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) + are required. + Alt != null && Alt != '' + + Alt key is missing from the media clip data dictionary + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml similarity index 64% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml index 343c4ace..ff297e81 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml @@ -3,22 +3,19 @@
ISO 14289-1:2014 - 7.2 Text - Natural language specification 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-1:2008, 14.9.2. - A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag - as defined in RFC 3066, Tags for the Identification of Languages. + property list, its value shall be a language identifier as described in ISO 32000-1:2008, 14.9.2. + A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages.
- + 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-1:2008, 14.9.2. - A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag - as defined in RFC 3066, Tags for the Identification of Languages. + A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages.
/^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Non-standard structure type is not mapped to a standard type - + Value of the Lang entry is not Language-Tag diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml index d6bf0200..e08a0f39 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml @@ -9,7 +9,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || diff --git a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml index a3f2c98f..8c52283d 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml @@ -9,7 +9,7 @@ - A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing + A PDF/UA compliant document 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. name != ".notdef" diff --git a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml new file mode 100644 index 00000000..822f851b --- /dev/null +++ b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml @@ -0,0 +1,39 @@ + + +
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.2 Numbered headings - Numbered heading tags + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, + heading tags shall be used as follows: + (*) If any heading tags are used, H1 shall be the first. + (*) A document may use more than one instance of any specific tag level. For example, a tag level may + be repeated if document content requires it. + (*) If document semantics require a descending sequence of headers, such a sequence shall proceed + in strict numerical order and shall not skip an intervening heading level. + (*) A document may increment its heading sequence without restarting at H1 if document semantics + require it. +
+ + + + + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, + heading tags shall be used as follows: + (*) If any heading tags are used, H1 shall be the first. + (*) A document may use more than one instance of any specific tag level. For example, a tag level may + be repeated if document content requires it. + (*) If document semantics require a descending sequence of headers, such a sequence shall proceed + in strict numerical order and shall not skip an intervening heading level. + (*) A document may increment its heading sequence without restarting at H1 if document semantics + require it. + hasCorrectNumberedHeadings == true + + Does use numbered headings, but the first heading tag is not H1 or numbered heading levels in descending sequence are skipped + + + + + + + + +
diff --git a/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml similarity index 92% rename from PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml rename to PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml index ed201ff9..46c94897 100644 --- a/PDF_UA/1/7.7 Mathematical exspressions/verapdf-profile-7-7-t01.xml +++ b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-1:2014 - 7.7 Mathematical exspressions - Alt and ActualText in Formula + ISO 14289-1:2014 - 7.7 Mathematical expressions - Alt and ActualText in Formula All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes
diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml new file mode 100644 index 00000000..6ab50729 --- /dev/null +++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.9 Notes and references - ID + Each note tag shall have a unique entry in the ID key +
+ + + + + Each note tag shall have a unique entry in the ID key + noteID != null + + ID key of the Note tag is not present + + + + + + +
diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml new file mode 100644 index 00000000..bda5ed1a --- /dev/null +++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.9 Notes and references - Unique id + Each note tag shall have a unique entry in the ID key +
+ + + + + Each note tag shall have a unique entry in the ID key + hasDuplicateNoteID == false + + ID key of the Note tag is non-unique + + + + + + +
diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index 1ceb40d9..68039dbb 100644 --- a/PDF_UA/PDF-UA1.xml +++ b/PDF_UA/PDF-UA1.xml @@ -67,7 +67,7 @@
- The Metadata stream in the documentтАЩs catalog dictionary shall contain a dc:title entry, where dc is the + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document. dc_title != null @@ -254,7 +254,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -445,7 +445,7 @@ - A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing + A PDF/UA compliant document 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. name != ".notdef" From 7e0461e70f0b8c4a9ce17abdceba3cbf2bd35ba7 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Tue, 7 Apr 2020 14:42:02 +0300 Subject: [PATCH 300/557] Updated PDF/UA-1 validation profile with 12 new rules --- PDF_UA/PDF-UA1.xml | 173 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 162 insertions(+), 11 deletions(-) diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index 68039dbb..ad967fb7 100644 --- a/PDF_UA/PDF-UA1.xml +++ b/PDF_UA/PDF-UA1.xml @@ -1,6 +1,6 @@ - + -
+
PDF/UA-1 valudation profile Validation rules against ISO 14289-1:2014
@@ -30,10 +30,10 @@ - The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Suspects, whose value shall be false. + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) Suspects == false - Suspects entry of the MarkInfo dictionary is not present in the document catalog or is set to true + Suspects entry has a value of true @@ -42,17 +42,31 @@ - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, + as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + This mapping may be indirect; within the role map a non-standard type can map directly to another + non-standard type, but eventually the mapping shall terminate at a standard type. standardType != null - Non-standard structure type is not mapped to a standard type + Non-standard structure type is not mapped to a standard type or a circular mapping exists + + + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. + isRemappedStandardType == false + + Standard type is remapped + + + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. @@ -102,14 +116,13 @@ - + 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-1:2008, 14.9.2. - A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag - as defined in RFC 3066, Tags for the Identification of Languages. + A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Non-standard structure type is not mapped to a standard type + Value of the Lang entry is not Language-Tag @@ -130,6 +143,26 @@ + + + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, + heading tags shall be used as follows: + (*) If any heading tags are used, H1 shall be the first. + (*) A document may use more than one instance of any specific tag level. For example, a tag level may + be repeated if document content requires it. + (*) If document semantics require a descending sequence of headers, such a sequence shall proceed + in strict numerical order and shall not skip an intervening heading level. + (*) A document may increment its heading sequence without restarting at H1 if document semantics + require it. + hasCorrectNumberedHeadings == true + + Does use numbered headings, but the first heading tag is not H1 or numbered heading levels in descending sequence are skipped + + + + + + Each node in the tag tree shall contain at most one child H tag. @@ -173,6 +206,26 @@ + + + Each note tag shall have a unique entry in the ID key + noteID != null + + ID key of the Note tag is not present + + + + + + + Each note tag shall have a unique entry in the ID key + hasDuplicateNoteID == false + + ID key of the Note tag is non-unique + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the @@ -204,6 +257,41 @@ + + + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, + 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. + P != null && (P & (1 << 10)) == 1 + + The file is encrypted but does not contain a P entry in its encryption dictionary or + the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false + + + + + + + + + + An annotation, excluding annotations of subtype Widget, Popup or Link, shall nested within an Annot tag + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || structParentType == 'Annot' + + An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag + + + + + + + Annotations of subtype TrapNet shall not be permitted. + Subtype != 'TrapNet' + + An annotation of subtype TrapNet exists + + + + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. @@ -214,6 +302,69 @@ + + + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. + Subtype != 'Widget' || structParentType == 'Form' + + A widget annotation is not nested within a Form tag + + + + + + + + + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. + Subtype != 'Link' || structParentType == 'Link' + + A link annotation is not nested within a Link tag + + + + + + + + + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. + Subtype != 'Link' || (Contents != null && Contents != '') + + A link annotation does not include an alternate description in the Contents Key + + + + + + + + + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) + are required. Value of CT should conform to the content type specification described in Internet RFC 2045 + CT != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(CT) + + CT key is missing from the media clip data dictionary or + value of CT not conform to the content type specification described in Internet RFC 2045 + + + + + + + + + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) + are required. + Alt != null && Alt != '' + + Alt key is missing from the media clip data dictionary + + + + + + A conforming file shall not contain any reference XObjects From c617e379ccd992a4f6fd04aea39e3900f70a66bd Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 13 Apr 2020 12:42:45 +0300 Subject: [PATCH 301/557] PDF/UA validation. Rules 7.1.4, 7.1.10, 7.2.4, 7.2.11, 7.2.13, 7.9.1, 7.9.2. Changed profiles. --- .../1/7.1 General/verapdf-profile-7-1-t04.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t10.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml | 59 +++++++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml | 47 +++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml | 4 +- .../verapdf-profile-7-9-t01.xml | 4 +- .../verapdf-profile-7-9-t02.xml | 4 +- PDF_UA/PDF-UA1.xml | 12 ++-- 8 files changed, 120 insertions(+), 14 deletions(-) create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml index 55d71b3f..b71c9052 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml @@ -9,7 +9,7 @@ Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) - Suspects == false + Suspects != true Suspects entry has a value of true diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml index cc29ab1c..52305c08 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml @@ -8,7 +8,7 @@ - The document catalog dictionary shall include a MarkInfo dictionary containing a DisplayDocTitle key, whose value shall be true. + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. DisplayDocTitle == true DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml new file mode 100644 index 00000000..0018c72a --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml @@ -0,0 +1,59 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - List structure + A list-related structure element should used in a way that conform to Table 336 in ISO 32000-1. +
+ + + + + LI elem should contained in L elem + (standardType != 'LI') || (parentStandardType == 'L') + + LI elem not contained in L elem + + + + + + + + + LBody elem should contained in LI elem + (standardType != 'LBody') || (parentStandardType == 'LI') + + LBody elem not contained in LI elem + + + + + + + + + L elem may contain a Caption elem as it's first kid and L elem should contain one or LI elems + (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) + + L elem contains more than one Caption elem or L elem contains a Caption elem not as its first kid or L elem not contain LI elems or L elem contains not a LI or Caption elems + + + + + + + + + LI elem may contain only Lbl and LBody elems + (standardType != 'LI') || /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + LI elem contains not a Lbl or LBody elems + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml new file mode 100644 index 00000000..72289aa6 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml @@ -0,0 +1,47 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - TOC structure + A TOC-related structure element should used in a way that conform to Table 333 in ISO 32000-1. +
+ + + + + TOCI elem should contained in TOC elem + (standardType != 'TOCI') || (parentStandardType == 'TOC') + + TOCI elem not contained in TOC elem + + + + + + + + + TOC elem may contain a Caption elem as it's first kid and TOC elem should contain only TOC and TOCI and Caption elems + (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) + + TOC elem contains more than one Caption elem or TOC elem contains a Caption elem not as its first kid or TOC elem contains not a TOC or TOCI or Caption elems + + + + + + + + + TOCI elem may contain only Reference and P and Lbl and TOC and NonStruct elems + (standardType != 'TOCI') || /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + TOCI elem contains not a Reference or P or Lbl or TOC or NonStruct elems + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml index ff297e81..3b18f9db 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml @@ -2,7 +2,7 @@
ISO 14289-1:2014 - 7.2 Text - Natural language specification - If the Lang entry is present in the document’s Catalog dictionary or in a structure element dictionary or + 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages.
@@ -10,7 +10,7 @@ - If the Lang entry is present in the document’s Catalog dictionary or in a structure element dictionary or + 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml index 6ab50729..567daecb 100644 --- a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml +++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.9 Notes and references - ID - Each note tag shall have a unique entry in the ID key + Each Note tag shall have a unique entry in the ID key
- Each note tag shall have a unique entry in the ID key + Each Note tag shall have a unique entry in the ID key noteID != null ID key of the Note tag is not present diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml index bda5ed1a..6d47f422 100644 --- a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml +++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.9 Notes and references - Unique id - Each note tag shall have a unique entry in the ID key + Each Note tag shall have a unique entry in the ID key
- Each note tag shall have a unique entry in the ID key + Each Note tag shall have a unique entry in the ID key hasDuplicateNoteID == false ID key of the Note tag is non-unique diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index ad967fb7..50626949 100644 --- a/PDF_UA/PDF-UA1.xml +++ b/PDF_UA/PDF-UA1.xml @@ -1,7 +1,7 @@
- PDF/UA-1 valudation profile + PDF/UA-1 validation profile Validation rules against ISO 14289-1:2014
@@ -31,7 +31,7 @@ Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) - Suspects == false + Suspects != true Suspects entry has a value of true @@ -93,7 +93,7 @@ - The document catalog dictionary shall include a MarkInfo dictionary containing a DisplayDocTitle key, whose value shall be true. + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. DisplayDocTitle == true DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true @@ -117,7 +117,7 @@ - If the Lang entry is present in the documentтАЩs Catalog dictionary or in a structure element dictionary or + 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) @@ -208,7 +208,7 @@ - Each note tag shall have a unique entry in the ID key + Each Note tag shall have a unique entry in the ID key noteID != null ID key of the Note tag is not present @@ -218,7 +218,7 @@ - Each note tag shall have a unique entry in the ID key + Each Note tag shall have a unique entry in the ID key hasDuplicateNoteID == false ID key of the Note tag is non-unique From ddc1d2516fc1f2537f7370930fe29fcea776834d Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 13 Apr 2020 14:03:49 +0300 Subject: [PATCH 302/557] PDF/UA validation. Rules 7.2.4, 7.2.11. Changed profiles. --- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml | 6 +++--- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml index 0018c72a..7b7656c9 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml @@ -32,10 +32,10 @@ - L elem may contain a Caption elem as it's first kid and L elem should contain one or LI elems - (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) + L elem may contain a Caption elem as it's first kid and L elem may contain only LI or Caption elems + (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' - L elem contains more than one Caption elem or L elem contains a Caption elem not as its first kid or L elem not contain LI elems or L elem contains not a LI or Caption elems + L elem contains more than one Caption elem or L elem contains a Caption elem not as its first kid or L elem contains not a LI or Caption elems diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml index 72289aa6..1362da54 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml @@ -20,8 +20,8 @@ - TOC elem may contain a Caption elem as it's first kid and TOC elem should contain only TOC and TOCI and Caption elems - (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) + TOC elem may contain a Caption elem as it's first kid and TOC elem may contain only TOC and TOCI and Caption elems + (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' TOC elem contains more than one Caption elem or TOC elem contains a Caption elem not as its first kid or TOC elem contains not a TOC or TOCI or Caption elems From 9cb0761577c73e29b360872975b85f675ab635eb Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 14 Apr 2020 23:38:08 +0300 Subject: [PATCH 303/557] PDF/UA validation. Rules 7.2.3, 7.2.4, 7.2.11. Added and changed profiles. --- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml | 181 ++++++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml | 8 +- 3 files changed, 186 insertions(+), 5 deletions(-) create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml new file mode 100644 index 00000000..881157a4 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml @@ -0,0 +1,181 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Table structure + A table-related structure element should used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337. +
+ + + + + Table elem may contain a Caption elem as its first or last kid and Table elem may contain only TR, THead, TBody, TFoot and Caption elems + (standardType != 'Table') || /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) + || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) + || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + + Table elem contains more than one Caption elem or Table elem contains a Caption elem not as its first or last kid or Table elem contains not a TR, THead, TBody, TFoot or Caption elems + + + + + + + + + TR elem should contained in Table elem + (standardType != 'TR') || (parentStandardType == 'Table') + + TR elem not contained in Table elem + + + + + + + + + THead elem should contained in Table elem + (standardType != 'THead') || (parentStandardType == 'Table') + + THead elem not contained in Table elem + + + + + + + + + TBody elem should contained in Table elem + (standardType != 'TBody') || (parentStandardType == 'Table') + + TBody elem not contained in Table elem + + + + + + + + + TFoot elem should contained in Table elem + (standardType != 'TFoot') || (parentStandardType == 'Table') + + TFoot elem not contained in Table elem + + + + + + + + + TH elem should contained in TR elem + (standardType != 'TH') || (parentStandardType == 'TR') + + TH elem not contained in TR elem + + + + + + + + + TD elem should contained in TR elem + (standardType != 'TD') || (parentStandardType == 'TR') + + TD elem not contained in TR elem + + + + + + + + + TR elem may contain only TH and TD elems + (standardType != 'TR') || /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + TR elem contains not a TH or TD elems + + + + + + + + + Table elem should contain zero or one THead kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) + + Table elem contains more than one THead kid + + + + + + + + + Table elem should contain zero or one TFoot kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) + + Table elem contains more than one TFoot kid + + + + + + + + + If Table elem contains TFoot kid, Table elem should contain one or more TBody kids + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table elem contains TFoot kid, but not contains TBody kids + + + + + + + + + If Table elem contains THead kid, Table elem should contain one or more TBody kids + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table elem contains THead kid, but not contains TBody kids + + + + + + + + + If Table elem contains one or more TBody kids, Table elem should contain one TFoot kid + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 1 + + Table elem contains one or more TBody kids, but not contains one TFoot kid + + + + + + + + + If Table elem contains one or more TBody kids, Table elem should contain one THead kid + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 1 + + Table elem contains one or more TBody kids, but not contains one THead kid + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml index 7b7656c9..bced391e 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml @@ -32,7 +32,7 @@
- L elem may contain a Caption elem as it's first kid and L elem may contain only LI or Caption elems + L elem may contain a Caption elem as its first kid and L elem may contain only LI and Caption elems (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' L elem contains more than one Caption elem or L elem contains a Caption elem not as its first kid or L elem contains not a LI or Caption elems diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml index 1362da54..01913150 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml @@ -20,10 +20,10 @@ - TOC elem may contain a Caption elem as it's first kid and TOC elem may contain only TOC and TOCI and Caption elems + TOC elem may contain a Caption elem as its first kid and TOC elem may contain only TOC, TOCI and Caption elems (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' - TOC elem contains more than one Caption elem or TOC elem contains a Caption elem not as its first kid or TOC elem contains not a TOC or TOCI or Caption elems + TOC elem contains more than one Caption elem or TOC elem contains a Caption elem not as its first kid or TOC elem contains not a TOC, TOCI or Caption elems @@ -32,10 +32,10 @@ - TOCI elem may contain only Reference and P and Lbl and TOC and NonStruct elems + TOCI elem may contain only Reference, P, Lbl, TOC and NonStruct elems (standardType != 'TOCI') || /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - TOCI elem contains not a Reference or P or Lbl or TOC or NonStruct elems + TOCI elem contains not a Reference, P, Lbl, TOC or NonStruct elems From b71b5eb14eb60fa52f00395a7b522d15d50d0582 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 16 Apr 2020 10:18:10 +0300 Subject: [PATCH 304/557] PDF/UA validation. Rules 7.2.3, 7.2.4, 7.2.11. Changed profiles. --- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml | 70 ++++++++++--------- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml | 20 +++--- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml | 20 +++--- 3 files changed, 61 insertions(+), 49 deletions(-) diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml index 881157a4..4b64ca5c 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml @@ -8,12 +8,14 @@ - Table elem may contain a Caption elem as its first or last kid and Table elem may contain only TR, THead, TBody, TFoot and Caption elems + Table element may contain a Caption element as its first or last kid and + Table element may contain only TR, THead, TBody, TFoot and Caption elems (standardType != 'Table') || /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' - Table elem contains more than one Caption elem or Table elem contains a Caption elem not as its first or last kid or Table elem contains not a TR, THead, TBody, TFoot or Caption elems + Table element contains more than one Caption element or Table element contains a Caption element not as its first or + last kid or Table element contains not a TR, THead, TBody, TFoot or Caption elements @@ -22,10 +24,10 @@ - TR elem should contained in Table elem + TR element should contained in Table element (standardType != 'TR') || (parentStandardType == 'Table') - TR elem not contained in Table elem + TR element not contained in Table element @@ -34,10 +36,10 @@ - THead elem should contained in Table elem + THead element should contained in Table element (standardType != 'THead') || (parentStandardType == 'Table') - THead elem not contained in Table elem + THead element not contained in Table element @@ -46,10 +48,10 @@ - TBody elem should contained in Table elem + TBody element should contained in Table element (standardType != 'TBody') || (parentStandardType == 'Table') - TBody elem not contained in Table elem + TBody element not contained in Table element @@ -58,10 +60,10 @@ - TFoot elem should contained in Table elem + TFoot element should contained in Table element (standardType != 'TFoot') || (parentStandardType == 'Table') - TFoot elem not contained in Table elem + TFoot element not contained in Table element @@ -70,10 +72,10 @@ - TH elem should contained in TR elem + TH element should contained in TR element (standardType != 'TH') || (parentStandardType == 'TR') - TH elem not contained in TR elem + TH element not contained in TR element @@ -82,10 +84,10 @@ - TD elem should contained in TR elem + TD element should contained in TR element (standardType != 'TD') || (parentStandardType == 'TR') - TD elem not contained in TR elem + TD element not contained in TR element @@ -94,10 +96,10 @@ - TR elem may contain only TH and TD elems + TR element may contain only TH and TD elements (standardType != 'TR') || /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - TR elem contains not a TH or TD elems + TR element contains not a TH or TD elements @@ -106,10 +108,10 @@ - Table elem should contain zero or one THead kid + Table element should contain zero or one THead kid (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) - Table elem contains more than one THead kid + Table element contains more than one THead kid @@ -118,10 +120,10 @@ - Table elem should contain zero or one TFoot kid + Table element should contain zero or one TFoot kid (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) - Table elem contains more than one TFoot kid + Table element contains more than one TFoot kid @@ -130,10 +132,11 @@ - If Table elem contains TFoot kid, Table elem should contain one or more TBody kids - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + If Table element contains TFoot kid, Table element should contain one or more TBody kids + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table elem contains TFoot kid, but not contains TBody kids + Table element contains TFoot kid, but not contains TBody kids @@ -142,10 +145,11 @@ - If Table elem contains THead kid, Table elem should contain one or more TBody kids - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + If Table element contains THead kid, Table element should contain one or more TBody kids + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table elem contains THead kid, but not contains TBody kids + Table element contains THead kid, but not contains TBody kids @@ -154,10 +158,11 @@ - If Table elem contains one or more TBody kids, Table elem should contain one TFoot kid - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 1 + If Table element contains one or more TBody kids, Table element should contain one TFoot kid + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 1 - Table elem contains one or more TBody kids, but not contains one TFoot kid + Table element contains one or more TBody kids, but not contains one TFoot kid @@ -166,10 +171,11 @@ - If Table elem contains one or more TBody kids, Table elem should contain one THead kid - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 1 + If Table element contains one or more TBody kids, Table element should contain one THead kid + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 1 - Table elem contains one or more TBody kids, but not contains one THead kid + Table element contains one or more TBody kids, but not contains one THead kid diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml index bced391e..a457ff8a 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml @@ -8,10 +8,10 @@ - LI elem should contained in L elem + LI element should contained in L element (standardType != 'LI') || (parentStandardType == 'L') - LI elem not contained in L elem + LI element not contained in L element @@ -20,10 +20,10 @@ - LBody elem should contained in LI elem + LBody element should contained in LI element (standardType != 'LBody') || (parentStandardType == 'LI') - LBody elem not contained in LI elem + LBody element not contained in LI element @@ -32,10 +32,12 @@ - L elem may contain a Caption elem as its first kid and L elem may contain only LI and Caption elems - (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' + L element may contain a Caption element as its first kid and L element may contain only LI and Caption elements + (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || + kidsStandardTypes == 'Caption' - L elem contains more than one Caption elem or L elem contains a Caption elem not as its first kid or L elem contains not a LI or Caption elems + L element contains more than one Caption element or L element contains a Caption element not as its first kid or + L element contains not a LI or Caption elements @@ -44,10 +46,10 @@ - LI elem may contain only Lbl and LBody elems + LI element may contain only Lbl and LBody elements (standardType != 'LI') || /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - LI elem contains not a Lbl or LBody elems + LI element contains not a Lbl or LBody elements diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml index 01913150..2280557b 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml @@ -8,10 +8,10 @@ - TOCI elem should contained in TOC elem + TOCI element should contained in TOC element (standardType != 'TOCI') || (parentStandardType == 'TOC') - TOCI elem not contained in TOC elem + TOCI element not contained in TOC element @@ -20,10 +20,13 @@ - TOC elem may contain a Caption elem as its first kid and TOC elem may contain only TOC, TOCI and Caption elems - (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + TOC element may contain a Caption element as its first kid and + TOC element may contain only TOC, TOCI and Caption elements + (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || + kidsStandardTypes == 'Caption' || kidsStandardTypes == '' - TOC elem contains more than one Caption elem or TOC elem contains a Caption elem not as its first kid or TOC elem contains not a TOC, TOCI or Caption elems + TOC element contains more than one Caption element or TOC element contains a Caption element + not as its first kid or TOC elem contains not a TOC, TOCI or Caption elements @@ -32,10 +35,11 @@ - TOCI elem may contain only Reference, P, Lbl, TOC and NonStruct elems - (standardType != 'TOCI') || /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + TOCI element may contain only Reference, P, Lbl, TOC and NonStruct elements + (standardType != 'TOCI') || /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || + kidsStandardTypes == '' - TOCI elem contains not a Reference, P, Lbl, TOC or NonStruct elems + TOCI element contains not a Reference, P, Lbl, TOC or NonStruct elements From 72138661457e1a2d50b3ea60adc84f31468c7ff5 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 14 Apr 2020 13:08:50 +0300 Subject: [PATCH 305/557] PDF/UA validation. Rules 7.1.1, 7.1.2. Added profiles. PDF/UA validation. Human rules. Rule 7.1.13. Added profile. PDF/UA validation. Added tagged profiles. --- .../7.1 General/verapdf-profile-7-1-t13.xml | 26 + .../1/7.1 General/verapdf-profile-7-1-t01.xml | 21 + .../1/7.1 General/verapdf-profile-7-1-t02.xml | 21 + PDF_UA/ISO-32000-1-Tagged.xml | 15395 ++++++++++++ PDF_UA/ISO-32000-2-Tagged.xml | 19895 ++++++++++++++++ PDF_UA/PDF-UA1-Human.xml | 26 + 6 files changed, 35384 insertions(+) create mode 100644 PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml create mode 100644 PDF_UA/ISO-32000-1-Tagged.xml create mode 100644 PDF_UA/ISO-32000-2-Tagged.xml create mode 100644 PDF_UA/PDF-UA1-Human.xml diff --git a/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml b/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml new file mode 100644 index 00000000..35b76e20 --- /dev/null +++ b/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Semantically appropriate structure type and attributes + +
+ + + + + The structure type and attributes of a structure element shall be semantically appropriate. + (!/^H([1-9][0-9]*)*$/.test(gStructureTag) || suspectRole == 'H') && (gStructureTag != 'P' || suspectRole == 'P') + + The structure type and attributes of a structure element are not semantically appropriate for the structure element. + + + + + + + + null + structureTag + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml new file mode 100644 index 00000000..9388070b --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Artifact inside tagged content + Content marked as Artifact should not present inside tagged content +
+ + + + + Content marked as Artifact should not present inside tagged content + tag != 'Artifact' || parentTag == null + + Content marked as Artifact is present inside tagged content + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml new file mode 100644 index 00000000..c95c4878 --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Tagged content inside Artifact + Tagged content should not present inside content marked as Artifact +
+ + + + + Tagged content should not present inside content marked as Artifact + tag == null || parentTag != 'Artifact' + + Tagged content is present inside content marked as Artifact + + + + + + +
diff --git a/PDF_UA/ISO-32000-1-Tagged.xml b/PDF_UA/ISO-32000-1-Tagged.xml new file mode 100644 index 00000000..cc650f2c --- /dev/null +++ b/PDF_UA/ISO-32000-1-Tagged.xml @@ -0,0 +1,15395 @@ + + +
+ Tagged pdf profile for PDF 1.7 specification + Profile for validation of tagged pdf structure tree relations +
+ + + + + Every structure element shall be mapped to standard type + standardType != null + + Structure element does not map to standard structure type + + + + + + + + + StructTreeRoot elem should contain zero or one Document kid + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length <= 1 + + StructTreeRoot contains more than one Document kid + + + + + + + + + StructTreeRoot elem should not contain Part kid + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + StructTreeRoot elem contains Part kid + + + + + + + + + StructTreeRoot elem should not contain Art kid + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + StructTreeRoot elem contains Art kid + + + + + + + + + StructTreeRoot elem should not contain Div kid + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + StructTreeRoot elem contains Div kid + + + + + + + + + StructTreeRoot elem should not contain Sect kid + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + StructTreeRoot elem contains Sect kid + + + + + + + + + StructTreeRoot elem should not contain TOC kid + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + StructTreeRoot elem contains TOC kid + + + + + + + + + StructTreeRoot elem should not contain TOCI kid + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + StructTreeRoot elem contains TOCI kid + + + + + + + + + StructTreeRoot elem should not contain BlockQuote kid + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + StructTreeRoot elem contains BlockQuote kid + + + + + + + + + StructTreeRoot elem should not contain P kid + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + StructTreeRoot elem contains P kid + + + + + + + + + StructTreeRoot elem should not contain Note kid + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + StructTreeRoot elem contains Note kid + + + + + + + + + StructTreeRoot elem should not contain Code kid + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + StructTreeRoot elem contains Code kid + + + + + + + + + StructTreeRoot elem should not contain Hn kid + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 + + StructTreeRoot elem contains Hn kid + + + + + + + + + StructTreeRoot elem should not contain H kid + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + StructTreeRoot elem contains H kid + + + + + + + + + StructTreeRoot elem should not contain Lbl kid + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + StructTreeRoot elem contains Lbl kid + + + + + + + + + StructTreeRoot elem should not contain Span kid + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + StructTreeRoot elem contains Span kid + + + + + + + + + StructTreeRoot elem should not contain Quote kid + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + StructTreeRoot elem contains Quote kid + + + + + + + + + StructTreeRoot elem should not contain Link kid + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + StructTreeRoot elem contains Link kid + + + + + + + + + StructTreeRoot elem should not contain Reference kid + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + StructTreeRoot elem contains Reference kid + + + + + + + + + StructTreeRoot elem should not contain Annot kid + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + StructTreeRoot elem contains Annot kid + + + + + + + + + StructTreeRoot elem should not contain Form kid + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + StructTreeRoot elem contains Form kid + + + + + + + + + StructTreeRoot elem should not contain Ruby kid + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + StructTreeRoot elem contains Ruby kid + + + + + + + + + StructTreeRoot elem should not contain RB kid + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + StructTreeRoot elem contains RB kid + + + + + + + + + StructTreeRoot elem should not contain RT kid + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + StructTreeRoot elem contains RT kid + + + + + + + + + StructTreeRoot elem should not contain RP kid + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + StructTreeRoot elem contains RP kid + + + + + + + + + StructTreeRoot elem should not contain Warichu kid + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + StructTreeRoot elem contains Warichu kid + + + + + + + + + StructTreeRoot elem should not contain WT kid + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + StructTreeRoot elem contains WT kid + + + + + + + + + StructTreeRoot elem should not contain WP kid + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + StructTreeRoot elem contains WP kid + + + + + + + + + StructTreeRoot elem should not contain Index kid + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + StructTreeRoot elem contains Index kid + + + + + + + + + StructTreeRoot elem should not contain L kid + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + StructTreeRoot elem contains L kid + + + + + + + + + StructTreeRoot elem should not contain LI kid + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + StructTreeRoot elem contains LI kid + + + + + + + + + StructTreeRoot elem should not contain LBody kid + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + StructTreeRoot elem contains LBody kid + + + + + + + + + StructTreeRoot elem should not contain BibEntry kid + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + StructTreeRoot elem contains BibEntry kid + + + + + + + + + StructTreeRoot elem should not contain Table kid + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + StructTreeRoot elem contains Table kid + + + + + + + + + StructTreeRoot elem should not contain TR kid + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + StructTreeRoot elem contains TR kid + + + + + + + + + StructTreeRoot elem should not contain TH kid + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + StructTreeRoot elem contains TH kid + + + + + + + + + StructTreeRoot elem should not contain TD kid + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + StructTreeRoot elem contains TD kid + + + + + + + + + StructTreeRoot elem should not contain THead kid + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + StructTreeRoot elem contains THead kid + + + + + + + + + StructTreeRoot elem should not contain TBody kid + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + StructTreeRoot elem contains TBody kid + + + + + + + + + StructTreeRoot elem should not contain TFoot kid + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + StructTreeRoot elem contains TFoot kid + + + + + + + + + StructTreeRoot elem should not contain Caption kid + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + StructTreeRoot elem contains Caption kid + + + + + + + + + StructTreeRoot elem should not contain Figure kid + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + StructTreeRoot elem contains Figure kid + + + + + + + + + StructTreeRoot elem should not contain Formula kid + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + StructTreeRoot elem contains Formula kid + + + + + + + + + StructTreeRoot elem should not contain content item kid + hasContentItems == false + + StructTreeRoot elem contains content item kid + + + + + + + + + Document elem should not contain TOCI kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Document elem contains TOCI kid + + + + + + + + + Document elem should contain zero or one H kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Document contains more than one H kid + + + + + + + + + Document elem should not contain Lbl kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Document elem contains Lbl kid + + + + + + + + + Document elem should not contain Span kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Document elem contains Span kid + + + + + + + + + Document elem should not contain Quote kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Document elem contains Quote kid + + + + + + + + + Document elem should not contain Reference kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Document elem contains Reference kid + + + + + + + + + Document elem should not contain Ruby kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Document elem contains Ruby kid + + + + + + + + + Document elem should not contain RB kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Document elem contains RB kid + + + + + + + + + Document elem should not contain RT kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Document elem contains RT kid + + + + + + + + + Document elem should not contain RP kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Document elem contains RP kid + + + + + + + + + Document elem should not contain Warichu kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Document elem contains Warichu kid + + + + + + + + + Document elem should not contain WT kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Document elem contains WT kid + + + + + + + + + Document elem should not contain WP kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Document elem contains WP kid + + + + + + + + + Document elem should not contain LI kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Document elem contains LI kid + + + + + + + + + Document elem should not contain LBody kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Document elem contains LBody kid + + + + + + + + + Document elem should not contain BibEntry kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Document elem contains BibEntry kid + + + + + + + + + Document elem should not contain TR kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Document elem contains TR kid + + + + + + + + + Document elem should not contain TH kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Document elem contains TH kid + + + + + + + + + Document elem should not contain TD kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Document elem contains TD kid + + + + + + + + + Document elem should not contain THead kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Document elem contains THead kid + + + + + + + + + Document elem should not contain TBody kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Document elem contains TBody kid + + + + + + + + + Document elem should not contain TFoot kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Document elem contains TFoot kid + + + + + + + + + Document elem should not contain Caption kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Document elem contains Caption kid + + + + + + + + + Document elem should not contain content item kid + (standardType != 'Document') || (hasContentItems == false) + + Document elem contains content item kid + + + + + + + + + Part elem should not contain Span kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Part elem contains Span kid + + + + + + + + + Part elem should not contain Quote kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Part elem contains Quote kid + + + + + + + + + Part elem should not contain Ruby kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Part elem contains Ruby kid + + + + + + + + + Part elem should not contain RB kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Part elem contains RB kid + + + + + + + + + Part elem should not contain RT kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Part elem contains RT kid + + + + + + + + + Part elem should not contain RP kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Part elem contains RP kid + + + + + + + + + Part elem should not contain Warichu kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Part elem contains Warichu kid + + + + + + + + + Part elem should not contain WT kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Part elem contains WT kid + + + + + + + + + Part elem should not contain WP kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Part elem contains WP kid + + + + + + + + + Part elem should not contain LI kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Part elem contains LI kid + + + + + + + + + Part elem should not contain LBody kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Part elem contains LBody kid + + + + + + + + + Part elem should not contain TR kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Part elem contains TR kid + + + + + + + + + Part elem should not contain TH kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Part elem contains TH kid + + + + + + + + + Part elem should not contain TD kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Part elem contains TD kid + + + + + + + + + Part elem should not contain THead kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Part elem contains THead kid + + + + + + + + + Part elem should not contain TBody kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Part elem contains TBody kid + + + + + + + + + Part elem should not contain TFoot kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Part elem contains TFoot kid + + + + + + + + + Part elem should not contain content item kid + (standardType != 'Part') || (hasContentItems == false) + + Part elem contains content item kid + + + + + + + + + Div elem should not contain content item kid + (standardType != 'Div') || (hasContentItems == false) + + Div elem contains content item kid + + + + + + + + + Art elem should not contain Document kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Art elem contains Document kid + + + + + + + + + Art elem should not contain Art kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Art elem contains Art kid + + + + + + + + + Art elem should not contain TOCI kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Art elem contains TOCI kid + + + + + + + + + Art elem should contain zero or one H kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Art contains more than one H kid + + + + + + + + + Art elem should not contain Span kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Art elem contains Span kid + + + + + + + + + Art elem should not contain Quote kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Art elem contains Quote kid + + + + + + + + + Art elem should not contain Reference kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Art elem contains Reference kid + + + + + + + + + Art elem should not contain Ruby kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Art elem contains Ruby kid + + + + + + + + + Art elem should not contain RB kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Art elem contains RB kid + + + + + + + + + Art elem should not contain RT kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Art elem contains RT kid + + + + + + + + + Art elem should not contain RP kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Art elem contains RP kid + + + + + + + + + Art elem should not contain Warichu kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Art elem contains Warichu kid + + + + + + + + + Art elem should not contain WT kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Art elem contains WT kid + + + + + + + + + Art elem should not contain WP kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Art elem contains WP kid + + + + + + + + + Art elem should not contain LI kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Art elem contains LI kid + + + + + + + + + Art elem should not contain LBody kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Art elem contains LBody kid + + + + + + + + + Art elem should not contain BibEntry kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Art elem contains BibEntry kid + + + + + + + + + Art elem should not contain TR kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Art elem contains TR kid + + + + + + + + + Art elem should not contain TH kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Art elem contains TH kid + + + + + + + + + Art elem should not contain TD kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Art elem contains TD kid + + + + + + + + + Art elem should not contain THead kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Art elem contains THead kid + + + + + + + + + Art elem should not contain TBody kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Art elem contains TBody kid + + + + + + + + + Art elem should not contain TFoot kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Art elem contains TFoot kid + + + + + + + + + Art elem should not contain content item kid + (standardType != 'Art') || (hasContentItems == false) + + Art elem contains content item kid + + + + + + + + + Sect elem should not contain Document kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Sect elem contains Document kid + + + + + + + + + Sect elem should not contain TOCI kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Sect elem contains TOCI kid + + + + + + + + + Sect elem should contain zero or one H kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Sect contains more than one H kid + + + + + + + + + Sect elem should not contain Span kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Sect elem contains Span kid + + + + + + + + + Sect elem should not contain Quote kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Sect elem contains Quote kid + + + + + + + + + Sect elem should not contain Reference kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Sect elem contains Reference kid + + + + + + + + + Sect elem should not contain Ruby kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Sect elem contains Ruby kid + + + + + + + + + Sect elem should not contain RB kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Sect elem contains RB kid + + + + + + + + + Sect elem should not contain RT kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Sect elem contains RT kid + + + + + + + + + Sect elem should not contain RP kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Sect elem contains RP kid + + + + + + + + + Sect elem should not contain Warichu kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Sect elem contains Warichu kid + + + + + + + + + Sect elem should not contain WT kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Sect elem contains WT kid + + + + + + + + + Sect elem should not contain WP kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Sect elem contains WP kid + + + + + + + + + Sect elem should not contain LI kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Sect elem contains LI kid + + + + + + + + + Sect elem should not contain LBody kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Sect elem contains LBody kid + + + + + + + + + Sect elem should not contain BibEntry kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Sect elem contains BibEntry kid + + + + + + + + + Sect elem should not contain TR kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Sect elem contains TR kid + + + + + + + + + Sect elem should not contain TH kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Sect elem contains TH kid + + + + + + + + + Sect elem should not contain TD kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Sect elem contains TD kid + + + + + + + + + Sect elem should not contain THead kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Sect elem contains THead kid + + + + + + + + + Sect elem should not contain TBody kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Sect elem contains TBody kid + + + + + + + + + Sect elem should not contain TFoot kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Sect elem contains TFoot kid + + + + + + + + + Sect elem should not contain content item kid + (standardType != 'Sect') || (hasContentItems == false) + + Sect elem contains content item kid + + + + + + + + + TOC elem should not contain Document kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TOC elem contains Document kid + + + + + + + + + TOC elem should not contain Part kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TOC elem contains Part kid + + + + + + + + + TOC elem should not contain Art kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + TOC elem contains Art kid + + + + + + + + + TOC elem should not contain Div kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + TOC elem contains Div kid + + + + + + + + + TOC elem should not contain Sect kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + TOC elem contains Sect kid + + + + + + + + + TOC elem should not contain BlockQuote kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TOC elem contains BlockQuote kid + + + + + + + + + TOC elem should not contain P kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + TOC elem contains P kid + + + + + + + + + TOC elem should not contain Note kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + TOC elem contains Note kid + + + + + + + + + TOC elem should not contain Code kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + TOC elem contains Code kid + + + + + + + + + TOC elem should not contain Hn kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + TOC elem contains Hn kid + + + + + + + + + TOC elem should not contain H kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + TOC elem contains H kid + + + + + + + + + TOC elem should not contain Lbl kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + TOC elem contains Lbl kid + + + + + + + + + TOC elem should not contain Span kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + TOC elem contains Span kid + + + + + + + + + TOC elem should not contain Quote kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + TOC elem contains Quote kid + + + + + + + + + TOC elem should not contain Link kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + TOC elem contains Link kid + + + + + + + + + TOC elem should not contain Reference kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + TOC elem contains Reference kid + + + + + + + + + TOC elem should not contain Annot kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + TOC elem contains Annot kid + + + + + + + + + TOC elem should not contain Form kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + TOC elem contains Form kid + + + + + + + + + TOC elem should not contain Ruby kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + TOC elem contains Ruby kid + + + + + + + + + TOC elem should not contain RB kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TOC elem contains RB kid + + + + + + + + + TOC elem should not contain RT kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TOC elem contains RT kid + + + + + + + + + TOC elem should not contain RP kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TOC elem contains RP kid + + + + + + + + + TOC elem should not contain Warichu kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + TOC elem contains Warichu kid + + + + + + + + + TOC elem should not contain WT kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TOC elem contains WT kid + + + + + + + + + TOC elem should not contain WP kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TOC elem contains WP kid + + + + + + + + + TOC elem should not contain Index kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + TOC elem contains Index kid + + + + + + + + + TOC elem should not contain L kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + TOC elem contains L kid + + + + + + + + + TOC elem should not contain LI kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TOC elem contains LI kid + + + + + + + + + TOC elem should not contain LBody kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TOC elem contains LBody kid + + + + + + + + + TOC elem should not contain BibEntry kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + TOC elem contains BibEntry kid + + + + + + + + + TOC elem should not contain Table kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + TOC elem contains Table kid + + + + + + + + + TOC elem should not contain TR kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + TOC elem contains TR kid + + + + + + + + + TOC elem should not contain TH kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TOC elem contains TH kid + + + + + + + + + TOC elem should not contain TD kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TOC elem contains TD kid + + + + + + + + + TOC elem should not contain THead kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TOC elem contains THead kid + + + + + + + + + TOC elem should not contain TBody kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TOC elem contains TBody kid + + + + + + + + + TOC elem should not contain TFoot kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TOC elem contains TFoot kid + + + + + + + + + TOC elem should not contain Caption kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TOC elem contains Caption kid + + + + + + + + + TOC elem should not contain Figure kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + TOC elem contains Figure kid + + + + + + + + + TOC elem should not contain Formula kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + TOC elem contains Formula kid + + + + + + + + + TOC elem should not contain content item kid + (standardType != 'TOC') || (hasContentItems == false) + + TOC elem contains content item kid + + + + + + + + + TOCI elem should not contain Document kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TOCI elem contains Document kid + + + + + + + + + TOCI elem should not contain Part kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TOCI elem contains Part kid + + + + + + + + + TOCI elem should not contain Art kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + TOCI elem contains Art kid + + + + + + + + + TOCI elem should not contain Sect kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + TOCI elem contains Sect kid + + + + + + + + + TOCI elem should not contain TOCI kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TOCI elem contains TOCI kid + + + + + + + + + TOCI elem should not contain BlockQuote kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TOCI elem contains BlockQuote kid + + + + + + + + + TOCI elem should not contain Note kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + TOCI elem contains Note kid + + + + + + + + + TOCI elem should not contain Code kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + TOCI elem contains Code kid + + + + + + + + + TOCI elem should not contain Hn kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + TOCI elem contains Hn kid + + + + + + + + + TOCI elem should not contain H kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + TOCI elem contains H kid + + + + + + + + + TOCI elem should not contain Span kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + TOCI elem contains Span kid + + + + + + + + + TOCI elem should not contain Quote kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + TOCI elem contains Quote kid + + + + + + + + + TOCI elem should not contain Link kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + TOCI elem contains Link kid + + + + + + + + + TOCI elem should not contain Annot kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + TOCI elem contains Annot kid + + + + + + + + + TOCI elem should not contain Form kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + TOCI elem contains Form kid + + + + + + + + + TOCI elem should not contain Ruby kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + TOCI elem contains Ruby kid + + + + + + + + + TOCI elem should not contain RB kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TOCI elem contains RB kid + + + + + + + + + TOCI elem should not contain RT kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TOCI elem contains RT kid + + + + + + + + + TOCI elem should not contain RP kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TOCI elem contains RP kid + + + + + + + + + TOCI elem should not contain Warichu kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + TOCI elem contains Warichu kid + + + + + + + + + TOCI elem should not contain WT kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TOCI elem contains WT kid + + + + + + + + + TOCI elem should not contain WP kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TOCI elem contains WP kid + + + + + + + + + TOCI elem should not contain Index kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + TOCI elem contains Index kid + + + + + + + + + TOCI elem should not contain L kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + TOCI elem contains L kid + + + + + + + + + TOCI elem should not contain LI kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TOCI elem contains LI kid + + + + + + + + + TOCI elem should not contain LBody kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TOCI elem contains LBody kid + + + + + + + + + TOCI elem should not contain BibEntry kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + TOCI elem contains BibEntry kid + + + + + + + + + TOCI elem should not contain Table kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + TOCI elem contains Table kid + + + + + + + + + TOCI elem should not contain TR kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + TOCI elem contains TR kid + + + + + + + + + TOCI elem should not contain TH kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TOCI elem contains TH kid + + + + + + + + + TOCI elem should not contain TD kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TOCI elem contains TD kid + + + + + + + + + TOCI elem should not contain THead kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TOCI elem contains THead kid + + + + + + + + + TOCI elem should not contain TBody kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TOCI elem contains TBody kid + + + + + + + + + TOCI elem should not contain TFoot kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TOCI elem contains TFoot kid + + + + + + + + + TOCI elem should not contain Caption kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TOCI elem contains Caption kid + + + + + + + + + TOCI elem should not contain Figure kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + TOCI elem contains Figure kid + + + + + + + + + TOCI elem should not contain Formula kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + TOCI elem contains Formula kid + + + + + + + + + TOCI elem should not contain content item kid + (standardType != 'TOCI') || (hasContentItems == false) + + TOCI elem contains content item kid + + + + + + + + + BlockQuote elem should not contain TOCI kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + BlockQuote elem contains TOCI kid + + + + + + + + + BlockQuote elem should not contain BlockQuote kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + BlockQuote elem contains BlockQuote kid + + + + + + + + + BlockQuote elem should contain zero or one H kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + BlockQuote contains more than one H kid + + + + + + + + + BlockQuote elem should not contain Span kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + BlockQuote elem contains Span kid + + + + + + + + + BlockQuote elem should not contain Quote kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + BlockQuote elem contains Quote kid + + + + + + + + + BlockQuote elem should not contain Ruby kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + BlockQuote elem contains Ruby kid + + + + + + + + + BlockQuote elem should not contain RB kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + BlockQuote elem contains RB kid + + + + + + + + + BlockQuote elem should not contain RT kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + BlockQuote elem contains RT kid + + + + + + + + + BlockQuote elem should not contain RP kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + BlockQuote elem contains RP kid + + + + + + + + + BlockQuote elem should not contain Warichu kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + BlockQuote elem contains Warichu kid + + + + + + + + + BlockQuote elem should not contain WT kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + BlockQuote elem contains WT kid + + + + + + + + + BlockQuote elem should not contain WP kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + BlockQuote elem contains WP kid + + + + + + + + + BlockQuote elem should not contain LI kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + BlockQuote elem contains LI kid + + + + + + + + + BlockQuote elem should not contain LBody kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + BlockQuote elem contains LBody kid + + + + + + + + + BlockQuote elem should not contain BibEntry kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + BlockQuote elem contains BibEntry kid + + + + + + + + + BlockQuote elem should not contain TR kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + BlockQuote elem contains TR kid + + + + + + + + + BlockQuote elem should not contain TH kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + BlockQuote elem contains TH kid + + + + + + + + + BlockQuote elem should not contain TD kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + BlockQuote elem contains TD kid + + + + + + + + + BlockQuote elem should not contain THead kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + BlockQuote elem contains THead kid + + + + + + + + + BlockQuote elem should not contain TBody kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + BlockQuote elem contains TBody kid + + + + + + + + + BlockQuote elem should not contain TFoot kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + BlockQuote elem contains TFoot kid + + + + + + + + + BlockQuote elem should contain zero or one Caption kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + BlockQuote contains more than one Caption kid + + + + + + + + + Private elem should contain zero or one H kid + (standardType != 'Private') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Private contains more than one H kid + + + + + + + + + Private elem should contain zero or one Caption kid + (standardType != 'Private') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Private contains more than one Caption kid + + + + + + + + + P elem should not contain Document kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + P elem contains Document kid + + + + + + + + + P elem should not contain Part kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + P elem contains Part kid + + + + + + + + + P elem should not contain Art kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + P elem contains Art kid + + + + + + + + + P elem should not contain Div kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + P elem contains Div kid + + + + + + + + + P elem should not contain Sect kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + P elem contains Sect kid + + + + + + + + + P elem should not contain TOC kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + P elem contains TOC kid + + + + + + + + + P elem should not contain TOCI kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + P elem contains TOCI kid + + + + + + + + + P elem should not contain BlockQuote kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + P elem contains BlockQuote kid + + + + + + + + + P elem should not contain P kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + P elem contains P kid + + + + + + + + + P elem should not contain Hn kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + P elem contains Hn kid + + + + + + + + + P elem should not contain H kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + P elem contains H kid + + + + + + + + + P elem should not contain RB kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + P elem contains RB kid + + + + + + + + + P elem should not contain RT kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + P elem contains RT kid + + + + + + + + + P elem should not contain RP kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + P elem contains RP kid + + + + + + + + + P elem should not contain WT kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + P elem contains WT kid + + + + + + + + + P elem should not contain WP kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + P elem contains WP kid + + + + + + + + + P elem should not contain Index kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + P elem contains Index kid + + + + + + + + + P elem should not contain LI kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + P elem contains LI kid + + + + + + + + + P elem should not contain LBody kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + P elem contains LBody kid + + + + + + + + + P elem should not contain Table kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + P elem contains Table kid + + + + + + + + + P elem should not contain TR kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + P elem contains TR kid + + + + + + + + + P elem should not contain TH kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + P elem contains TH kid + + + + + + + + + P elem should not contain TD kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + P elem contains TD kid + + + + + + + + + P elem should not contain THead kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + P elem contains THead kid + + + + + + + + + P elem should not contain TBody kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + P elem contains TBody kid + + + + + + + + + P elem should not contain TFoot kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + P elem contains TFoot kid + + + + + + + + + P elem should not contain Caption kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + P elem contains Caption kid + + + + + + + + + Note elem should not contain Document kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Note elem contains Document kid + + + + + + + + + Note elem should not contain TOC kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Note elem contains TOC kid + + + + + + + + + Note elem should not contain TOCI kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Note elem contains TOCI kid + + + + + + + + + Note elem should not contain Hn kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + Note elem contains Hn kid + + + + + + + + + Note elem should not contain H kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Note elem contains H kid + + + + + + + + + Note elem should not contain RB kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Note elem contains RB kid + + + + + + + + + Note elem should not contain RT kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Note elem contains RT kid + + + + + + + + + Note elem should not contain RP kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Note elem contains RP kid + + + + + + + + + Note elem should not contain WT kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Note elem contains WT kid + + + + + + + + + Note elem should not contain WP kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Note elem contains WP kid + + + + + + + + + Note elem should not contain LI kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Note elem contains LI kid + + + + + + + + + Note elem should not contain LBody kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Note elem contains LBody kid + + + + + + + + + Note elem should not contain TR kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Note elem contains TR kid + + + + + + + + + Note elem should not contain TH kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Note elem contains TH kid + + + + + + + + + Note elem should not contain TD kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Note elem contains TD kid + + + + + + + + + Note elem should not contain THead kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Note elem contains THead kid + + + + + + + + + Note elem should not contain TBody kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Note elem contains TBody kid + + + + + + + + + Note elem should not contain TFoot kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Note elem contains TFoot kid + + + + + + + + + Code elem should not contain Document kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Code elem contains Document kid + + + + + + + + + Code elem should not contain Art kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Code elem contains Art kid + + + + + + + + + Code elem should not contain Sect kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Code elem contains Sect kid + + + + + + + + + Code elem should not contain TOC kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Code elem contains TOC kid + + + + + + + + + Code elem should not contain TOCI kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Code elem contains TOCI kid + + + + + + + + + Code elem should not contain BlockQuote kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Code elem contains BlockQuote kid + + + + + + + + + Code elem should not contain P kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Code elem contains P kid + + + + + + + + + Code elem should not contain Code kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Code elem contains Code kid + + + + + + + + + Code elem should not contain Hn kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + Code elem contains Hn kid + + + + + + + + + Code elem should not contain H kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Code elem contains H kid + + + + + + + + + Code elem should not contain Lbl kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Code elem contains Lbl kid + + + + + + + + + Code elem should not contain Quote kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Code elem contains Quote kid + + + + + + + + + Code elem should not contain Form kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Code elem contains Form kid + + + + + + + + + Code elem should not contain Ruby kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Code elem contains Ruby kid + + + + + + + + + Code elem should not contain RB kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Code elem contains RB kid + + + + + + + + + Code elem should not contain RT kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Code elem contains RT kid + + + + + + + + + Code elem should not contain RP kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Code elem contains RP kid + + + + + + + + + Code elem should not contain Warichu kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Code elem contains Warichu kid + + + + + + + + + Code elem should not contain WT kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Code elem contains WT kid + + + + + + + + + Code elem should not contain WP kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Code elem contains WP kid + + + + + + + + + Code elem should not contain Index kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Code elem contains Index kid + + + + + + + + + Code elem should not contain L kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Code elem contains L kid + + + + + + + + + Code elem should not contain LI kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Code elem contains LI kid + + + + + + + + + Code elem should not contain LBody kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Code elem contains LBody kid + + + + + + + + + Code elem should not contain Table kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Code elem contains Table kid + + + + + + + + + Code elem should not contain TR kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Code elem contains TR kid + + + + + + + + + Code elem should not contain TH kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Code elem contains TH kid + + + + + + + + + Code elem should not contain TD kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Code elem contains TD kid + + + + + + + + + Code elem should not contain THead kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Code elem contains THead kid + + + + + + + + + Code elem should not contain TBody kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Code elem contains TBody kid + + + + + + + + + Code elem should not contain TFoot kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Code elem contains TFoot kid + + + + + + + + + Code elem should not contain Caption kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Code elem contains Caption kid + + + + + + + + + Code elem should not contain Figure kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + Code elem contains Figure kid + + + + + + + + + Code elem should not contain Formula kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + Code elem contains Formula kid + + + + + + + + + Hn elem should not contain Document kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Hn elem contains Document kid + + + + + + + + + Hn elem should not contain Part kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Hn elem contains Part kid + + + + + + + + + Hn elem should contain zero or one Art kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1) + + Hn contains more than one Art kid + + + + + + + + + Hn elem should not contain Div kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Hn elem contains Div kid + + + + + + + + + Hn elem should contain zero or one Sect kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1) + + Hn contains more than one Sect kid + + + + + + + + + Hn elem should not contain TOC kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Hn elem contains TOC kid + + + + + + + + + Hn elem should not contain TOCI kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Hn elem contains TOCI kid + + + + + + + + + Hn elem should not contain BlockQuote kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Hn elem contains BlockQuote kid + + + + + + + + + Hn elem should not contain P kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Hn elem contains P kid + + + + + + + + + Hn elem should not contain Hn kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + Hn elem contains Hn kid + + + + + + + + + Hn elem should not contain H kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Hn elem contains H kid + + + + + + + + + Hn elem should not contain RB kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Hn elem contains RB kid + + + + + + + + + Hn elem should not contain RT kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Hn elem contains RT kid + + + + + + + + + Hn elem should not contain RP kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Hn elem contains RP kid + + + + + + + + + Hn elem should not contain WT kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Hn elem contains WT kid + + + + + + + + + Hn elem should not contain WP kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Hn elem contains WP kid + + + + + + + + + Hn elem should not contain Index kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Hn elem contains Index kid + + + + + + + + + Hn elem should not contain L kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Hn elem contains L kid + + + + + + + + + Hn elem should not contain LI kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Hn elem contains LI kid + + + + + + + + + Hn elem should not contain LBody kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Hn elem contains LBody kid + + + + + + + + + Hn elem should not contain Table kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Hn elem contains Table kid + + + + + + + + + Hn elem should not contain TR kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Hn elem contains TR kid + + + + + + + + + Hn elem should not contain TH kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Hn elem contains TH kid + + + + + + + + + Hn elem should not contain TD kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Hn elem contains TD kid + + + + + + + + + Hn elem should not contain THead kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Hn elem contains THead kid + + + + + + + + + Hn elem should not contain TBody kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Hn elem contains TBody kid + + + + + + + + + Hn elem should not contain TFoot kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Hn elem contains TFoot kid + + + + + + + + + Hn elem should not contain Caption kid + (/^H[1-6]$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Hn elem contains Caption kid + + + + + + + + + H elem should not contain Document kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + H elem contains Document kid + + + + + + + + + H elem should not contain Part kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + H elem contains Part kid + + + + + + + + + H elem should contain zero or one Art kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1) + + H contains more than one Art kid + + + + + + + + + H elem should not contain Div kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + H elem contains Div kid + + + + + + + + + H elem should contain zero or one Sect kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1) + + H contains more than one Sect kid + + + + + + + + + H elem should not contain TOC kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + H elem contains TOC kid + + + + + + + + + H elem should not contain TOCI kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + H elem contains TOCI kid + + + + + + + + + H elem should not contain BlockQuote kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + H elem contains BlockQuote kid + + + + + + + + + H elem should not contain P kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + H elem contains P kid + + + + + + + + + H elem should not contain Hn kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + H elem contains Hn kid + + + + + + + + + H elem should not contain H kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + H elem contains H kid + + + + + + + + + H elem should not contain RB kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + H elem contains RB kid + + + + + + + + + H elem should not contain RT kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + H elem contains RT kid + + + + + + + + + H elem should not contain RP kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + H elem contains RP kid + + + + + + + + + H elem should not contain WT kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + H elem contains WT kid + + + + + + + + + H elem should not contain WP kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + H elem contains WP kid + + + + + + + + + H elem should not contain Index kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + H elem contains Index kid + + + + + + + + + H elem should not contain L kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + H elem contains L kid + + + + + + + + + H elem should not contain LI kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + H elem contains LI kid + + + + + + + + + H elem should not contain LBody kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + H elem contains LBody kid + + + + + + + + + H elem should not contain Table kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + H elem contains Table kid + + + + + + + + + H elem should not contain TR kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + H elem contains TR kid + + + + + + + + + H elem should not contain TH kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + H elem contains TH kid + + + + + + + + + H elem should not contain TD kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + H elem contains TD kid + + + + + + + + + H elem should not contain THead kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + H elem contains THead kid + + + + + + + + + H elem should not contain TBody kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + H elem contains TBody kid + + + + + + + + + H elem should not contain TFoot kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + H elem contains TFoot kid + + + + + + + + + H elem should not contain Caption kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + H elem contains Caption kid + + + + + + + + + Lbl elem should not contain Document kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Lbl elem contains Document kid + + + + + + + + + Lbl elem should not contain Part kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Lbl elem contains Part kid + + + + + + + + + Lbl elem should not contain Art kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Lbl elem contains Art kid + + + + + + + + + Lbl elem should not contain Div kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Lbl elem contains Div kid + + + + + + + + + Lbl elem should not contain Sect kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Lbl elem contains Sect kid + + + + + + + + + Lbl elem should not contain TOC kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Lbl elem contains TOC kid + + + + + + + + + Lbl elem should not contain TOCI kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Lbl elem contains TOCI kid + + + + + + + + + Lbl elem should not contain BlockQuote kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Lbl elem contains BlockQuote kid + + + + + + + + + Lbl elem should not contain P kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Lbl elem contains P kid + + + + + + + + + Lbl elem should not contain Hn kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + Lbl elem contains Hn kid + + + + + + + + + Lbl elem should not contain H kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Lbl elem contains H kid + + + + + + + + + Lbl elem should not contain Lbl kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Lbl elem contains Lbl kid + + + + + + + + + Lbl elem should not contain RB kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Lbl elem contains RB kid + + + + + + + + + Lbl elem should not contain RT kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Lbl elem contains RT kid + + + + + + + + + Lbl elem should not contain RP kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Lbl elem contains RP kid + + + + + + + + + Lbl elem should not contain WT kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Lbl elem contains WT kid + + + + + + + + + Lbl elem should not contain WP kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Lbl elem contains WP kid + + + + + + + + + Lbl elem should not contain Index kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Lbl elem contains Index kid + + + + + + + + + Lbl elem should not contain L kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Lbl elem contains L kid + + + + + + + + + Lbl elem should not contain LI kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Lbl elem contains LI kid + + + + + + + + + Lbl elem should not contain LBody kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Lbl elem contains LBody kid + + + + + + + + + Lbl elem should not contain Table kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Lbl elem contains Table kid + + + + + + + + + Lbl elem should not contain TR kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Lbl elem contains TR kid + + + + + + + + + Lbl elem should not contain TH kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Lbl elem contains TH kid + + + + + + + + + Lbl elem should not contain TD kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Lbl elem contains TD kid + + + + + + + + + Lbl elem should not contain THead kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Lbl elem contains THead kid + + + + + + + + + Lbl elem should not contain TBody kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Lbl elem contains TBody kid + + + + + + + + + Lbl elem should not contain TFoot kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Lbl elem contains TFoot kid + + + + + + + + + Lbl elem should not contain Caption kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Lbl elem contains Caption kid + + + + + + + + + Span elem should not contain Document kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Span elem contains Document kid + + + + + + + + + Span elem should not contain Part kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Span elem contains Part kid + + + + + + + + + Span elem should not contain Art kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Span elem contains Art kid + + + + + + + + + Span elem should not contain Div kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Span elem contains Div kid + + + + + + + + + Span elem should not contain Sect kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Span elem contains Sect kid + + + + + + + + + Span elem should not contain TOC kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Span elem contains TOC kid + + + + + + + + + Span elem should not contain TOCI kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Span elem contains TOCI kid + + + + + + + + + Span elem should not contain BlockQuote kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Span elem contains BlockQuote kid + + + + + + + + + Span elem should not contain P kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Span elem contains P kid + + + + + + + + + Span elem should not contain Hn kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + Span elem contains Hn kid + + + + + + + + + Span elem should not contain H kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Span elem contains H kid + + + + + + + + + Span elem should not contain RB kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Span elem contains RB kid + + + + + + + + + Span elem should not contain RT kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Span elem contains RT kid + + + + + + + + + Span elem should not contain RP kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Span elem contains RP kid + + + + + + + + + Span elem should not contain WT kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Span elem contains WT kid + + + + + + + + + Span elem should not contain WP kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Span elem contains WP kid + + + + + + + + + Span elem should not contain Index kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Span elem contains Index kid + + + + + + + + + Span elem should not contain L kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Span elem contains L kid + + + + + + + + + Span elem should not contain LI kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Span elem contains LI kid + + + + + + + + + Span elem should not contain LBody kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Span elem contains LBody kid + + + + + + + + + Span elem should not contain Table kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Span elem contains Table kid + + + + + + + + + Span elem should not contain TR kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Span elem contains TR kid + + + + + + + + + Span elem should not contain TH kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Span elem contains TH kid + + + + + + + + + Span elem should not contain TD kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Span elem contains TD kid + + + + + + + + + Span elem should not contain THead kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Span elem contains THead kid + + + + + + + + + Span elem should not contain TBody kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Span elem contains TBody kid + + + + + + + + + Span elem should not contain TFoot kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Span elem contains TFoot kid + + + + + + + + + Span elem should not contain Caption kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Span elem contains Caption kid + + + + + + + + + Quote elem should not contain Document kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Quote elem contains Document kid + + + + + + + + + Quote elem should not contain Part kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Quote elem contains Part kid + + + + + + + + + Quote elem should not contain Art kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Quote elem contains Art kid + + + + + + + + + Quote elem should not contain Div kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Quote elem contains Div kid + + + + + + + + + Quote elem should not contain Sect kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Quote elem contains Sect kid + + + + + + + + + Quote elem should not contain TOC kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Quote elem contains TOC kid + + + + + + + + + Quote elem should not contain TOCI kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Quote elem contains TOCI kid + + + + + + + + + Quote elem should not contain BlockQuote kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Quote elem contains BlockQuote kid + + + + + + + + + Quote elem should not contain P kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Quote elem contains P kid + + + + + + + + + Quote elem should not contain Hn kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + Quote elem contains Hn kid + + + + + + + + + Quote elem should not contain H kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Quote elem contains H kid + + + + + + + + + Quote elem should not contain RB kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Quote elem contains RB kid + + + + + + + + + Quote elem should not contain RT kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Quote elem contains RT kid + + + + + + + + + Quote elem should not contain RP kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Quote elem contains RP kid + + + + + + + + + Quote elem should not contain WT kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Quote elem contains WT kid + + + + + + + + + Quote elem should not contain WP kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Quote elem contains WP kid + + + + + + + + + Quote elem should not contain Index kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Quote elem contains Index kid + + + + + + + + + Quote elem should not contain L kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Quote elem contains L kid + + + + + + + + + Quote elem should not contain LI kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Quote elem contains LI kid + + + + + + + + + Quote elem should not contain LBody kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Quote elem contains LBody kid + + + + + + + + + Quote elem should not contain Table kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Quote elem contains Table kid + + + + + + + + + Quote elem should not contain TR kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Quote elem contains TR kid + + + + + + + + + Quote elem should not contain TH kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Quote elem contains TH kid + + + + + + + + + Quote elem should not contain TD kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Quote elem contains TD kid + + + + + + + + + Quote elem should not contain THead kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Quote elem contains THead kid + + + + + + + + + Quote elem should not contain TBody kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Quote elem contains TBody kid + + + + + + + + + Quote elem should not contain TFoot kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Quote elem contains TFoot kid + + + + + + + + + Quote elem should not contain Caption kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Quote elem contains Caption kid + + + + + + + + + Link elem should not contain Document kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Link elem contains Document kid + + + + + + + + + Link elem should not contain TOC kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Link elem contains TOC kid + + + + + + + + + Link elem should not contain TOCI kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Link elem contains TOCI kid + + + + + + + + + Link elem should not contain Link kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Link elem contains Link kid + + + + + + + + + Link elem should not contain RB kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Link elem contains RB kid + + + + + + + + + Link elem should not contain RT kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Link elem contains RT kid + + + + + + + + + Link elem should not contain RP kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Link elem contains RP kid + + + + + + + + + Link elem should not contain WT kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Link elem contains WT kid + + + + + + + + + Link elem should not contain WP kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Link elem contains WP kid + + + + + + + + + Link elem should not contain Index kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Link elem contains Index kid + + + + + + + + + Link elem should not contain LI kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Link elem contains LI kid + + + + + + + + + Link elem should not contain LBody kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Link elem contains LBody kid + + + + + + + + + Link elem should not contain TR kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Link elem contains TR kid + + + + + + + + + Link elem should not contain TH kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Link elem contains TH kid + + + + + + + + + Link elem should not contain TD kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Link elem contains TD kid + + + + + + + + + Link elem should not contain THead kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Link elem contains THead kid + + + + + + + + + Link elem should not contain TBody kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Link elem contains TBody kid + + + + + + + + + Link elem should not contain TFoot kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Link elem contains TFoot kid + + + + + + + + + Reference elem should not contain Document kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Reference elem contains Document kid + + + + + + + + + Reference elem should not contain Part kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Reference elem contains Part kid + + + + + + + + + Reference elem should not contain Art kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Reference elem contains Art kid + + + + + + + + + Reference elem should not contain Div kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Reference elem contains Div kid + + + + + + + + + Reference elem should not contain Sect kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Reference elem contains Sect kid + + + + + + + + + Reference elem should not contain TOC kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Reference elem contains TOC kid + + + + + + + + + Reference elem should not contain TOCI kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Reference elem contains TOCI kid + + + + + + + + + Reference elem should not contain BlockQuote kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Reference elem contains BlockQuote kid + + + + + + + + + Reference elem should not contain P kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Reference elem contains P kid + + + + + + + + + Reference elem should not contain Code kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Reference elem contains Code kid + + + + + + + + + Reference elem should not contain Hn kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + Reference elem contains Hn kid + + + + + + + + + Reference elem should not contain H kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Reference elem contains H kid + + + + + + + + + Reference elem should not contain Quote kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Reference elem contains Quote kid + + + + + + + + + Reference elem should not contain Reference kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Reference elem contains Reference kid + + + + + + + + + Reference elem should not contain Form kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Reference elem contains Form kid + + + + + + + + + Reference elem should not contain Ruby kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Reference elem contains Ruby kid + + + + + + + + + Reference elem should not contain RB kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Reference elem contains RB kid + + + + + + + + + Reference elem should not contain RT kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Reference elem contains RT kid + + + + + + + + + Reference elem should not contain RP kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Reference elem contains RP kid + + + + + + + + + Reference elem should not contain Warichu kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Reference elem contains Warichu kid + + + + + + + + + Reference elem should not contain WT kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Reference elem contains WT kid + + + + + + + + + Reference elem should not contain WP kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Reference elem contains WP kid + + + + + + + + + Reference elem should not contain Index kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Reference elem contains Index kid + + + + + + + + + Reference elem should not contain L kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Reference elem contains L kid + + + + + + + + + Reference elem should not contain LI kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Reference elem contains LI kid + + + + + + + + + Reference elem should not contain LBody kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Reference elem contains LBody kid + + + + + + + + + Reference elem should not contain Table kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Reference elem contains Table kid + + + + + + + + + Reference elem should not contain TR kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Reference elem contains TR kid + + + + + + + + + Reference elem should not contain TH kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Reference elem contains TH kid + + + + + + + + + Reference elem should not contain TD kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Reference elem contains TD kid + + + + + + + + + Reference elem should not contain THead kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Reference elem contains THead kid + + + + + + + + + Reference elem should not contain TBody kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Reference elem contains TBody kid + + + + + + + + + Reference elem should not contain TFoot kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Reference elem contains TFoot kid + + + + + + + + + Reference elem should not contain Caption kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Reference elem contains Caption kid + + + + + + + + + Reference elem should not contain Formula kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + Reference elem contains Formula kid + + + + + + + + + Annot elem should not contain Document kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Annot elem contains Document kid + + + + + + + + + Annot elem should not contain TOC kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Annot elem contains TOC kid + + + + + + + + + Annot elem should not contain TOCI kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Annot elem contains TOCI kid + + + + + + + + + Annot elem should not contain Private kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0) + + Annot elem contains Private kid + + + + + + + + + Annot elem should not contain RB kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Annot elem contains RB kid + + + + + + + + + Annot elem should not contain RT kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Annot elem contains RT kid + + + + + + + + + Annot elem should not contain RP kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Annot elem contains RP kid + + + + + + + + + Annot elem should not contain WT kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Annot elem contains WT kid + + + + + + + + + Annot elem should not contain WP kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Annot elem contains WP kid + + + + + + + + + Annot elem should not contain Index kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Annot elem contains Index kid + + + + + + + + + Annot elem should not contain LI kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Annot elem contains LI kid + + + + + + + + + Annot elem should not contain LBody kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Annot elem contains LBody kid + + + + + + + + + Annot elem should not contain TR kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Annot elem contains TR kid + + + + + + + + + Annot elem should not contain TH kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Annot elem contains TH kid + + + + + + + + + Annot elem should not contain TD kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Annot elem contains TD kid + + + + + + + + + Annot elem should not contain THead kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Annot elem contains THead kid + + + + + + + + + Annot elem should not contain TBody kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Annot elem contains TBody kid + + + + + + + + + Annot elem should not contain TFoot kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Annot elem contains TFoot kid + + + + + + + + + Form elem should not contain Document kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Form elem contains Document kid + + + + + + + + + Form elem should not contain Art kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Form elem contains Art kid + + + + + + + + + Form elem should not contain Sect kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Form elem contains Sect kid + + + + + + + + + Form elem should not contain TOC kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Form elem contains TOC kid + + + + + + + + + Form elem should not contain TOCI kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Form elem contains TOCI kid + + + + + + + + + Form elem should not contain BlockQuote kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Form elem contains BlockQuote kid + + + + + + + + + Form elem should not contain P kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Form elem contains P kid + + + + + + + + + Form elem should not contain Hn kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + Form elem contains Hn kid + + + + + + + + + Form elem should not contain H kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Form elem contains H kid + + + + + + + + + Form elem should not contain Span kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Form elem contains Span kid + + + + + + + + + Form elem should not contain Quote kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Form elem contains Quote kid + + + + + + + + + Form elem should not contain Link kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Form elem contains Link kid + + + + + + + + + Form elem should not contain Annot kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + Form elem contains Annot kid + + + + + + + + + Form elem should not contain Form kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Form elem contains Form kid + + + + + + + + + Form elem should not contain Ruby kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Form elem contains Ruby kid + + + + + + + + + Form elem should not contain RB kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Form elem contains RB kid + + + + + + + + + Form elem should not contain RT kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Form elem contains RT kid + + + + + + + + + Form elem should not contain RP kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Form elem contains RP kid + + + + + + + + + Form elem should not contain Warichu kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Form elem contains Warichu kid + + + + + + + + + Form elem should not contain WT kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Form elem contains WT kid + + + + + + + + + Form elem should not contain WP kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Form elem contains WP kid + + + + + + + + + Form elem should not contain Index kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Form elem contains Index kid + + + + + + + + + Form elem should not contain LI kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Form elem contains LI kid + + + + + + + + + Form elem should not contain LBody kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Form elem contains LBody kid + + + + + + + + + Form elem should not contain TR kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Form elem contains TR kid + + + + + + + + + Form elem should not contain TH kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Form elem contains TH kid + + + + + + + + + Form elem should not contain TD kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Form elem contains TD kid + + + + + + + + + Form elem should not contain THead kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Form elem contains THead kid + + + + + + + + + Form elem should not contain TBody kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Form elem contains TBody kid + + + + + + + + + Form elem should not contain TFoot kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Form elem contains TFoot kid + + + + + + + + + Form elem should contain zero or one Caption kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Form contains more than one Caption kid + + + + + + + + + Ruby elem should not contain Document kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Ruby elem contains Document kid + + + + + + + + + Ruby elem should not contain Part kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Ruby elem contains Part kid + + + + + + + + + Ruby elem should not contain Art kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Ruby elem contains Art kid + + + + + + + + + Ruby elem should not contain Div kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Ruby elem contains Div kid + + + + + + + + + Ruby elem should not contain Sect kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Ruby elem contains Sect kid + + + + + + + + + Ruby elem should not contain TOC kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Ruby elem contains TOC kid + + + + + + + + + Ruby elem should not contain TOCI kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Ruby elem contains TOCI kid + + + + + + + + + Ruby elem should not contain BlockQuote kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Ruby elem contains BlockQuote kid + + + + + + + + + Ruby elem should not contain P kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Ruby elem contains P kid + + + + + + + + + Ruby elem should not contain Note kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + Ruby elem contains Note kid + + + + + + + + + Ruby elem should not contain Code kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Ruby elem contains Code kid + + + + + + + + + Ruby elem should not contain Hn kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + Ruby elem contains Hn kid + + + + + + + + + Ruby elem should not contain H kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Ruby elem contains H kid + + + + + + + + + Ruby elem should not contain Lbl kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Ruby elem contains Lbl kid + + + + + + + + + Ruby elem should not contain Span kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Ruby elem contains Span kid + + + + + + + + + Ruby elem should not contain Quote kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Ruby elem contains Quote kid + + + + + + + + + Ruby elem should not contain Link kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Ruby elem contains Link kid + + + + + + + + + Ruby elem should not contain Reference kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Ruby elem contains Reference kid + + + + + + + + + Ruby elem should not contain Annot kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + Ruby elem contains Annot kid + + + + + + + + + Ruby elem should not contain Form kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Ruby elem contains Form kid + + + + + + + + + Ruby elem should not contain Ruby kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Ruby elem contains Ruby kid + + + + + + + + + Ruby elem should not contain Warichu kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Ruby elem contains Warichu kid + + + + + + + + + Ruby elem should not contain WT kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Ruby elem contains WT kid + + + + + + + + + Ruby elem should not contain WP kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Ruby elem contains WP kid + + + + + + + + + Ruby elem should not contain Index kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Ruby elem contains Index kid + + + + + + + + + Ruby elem should not contain L kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Ruby elem contains L kid + + + + + + + + + Ruby elem should not contain LI kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Ruby elem contains LI kid + + + + + + + + + Ruby elem should not contain LBody kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Ruby elem contains LBody kid + + + + + + + + + Ruby elem should not contain BibEntry kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Ruby elem contains BibEntry kid + + + + + + + + + Ruby elem should not contain Table kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Ruby elem contains Table kid + + + + + + + + + Ruby elem should not contain TR kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Ruby elem contains TR kid + + + + + + + + + Ruby elem should not contain TH kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Ruby elem contains TH kid + + + + + + + + + Ruby elem should not contain TD kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Ruby elem contains TD kid + + + + + + + + + Ruby elem should not contain THead kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Ruby elem contains THead kid + + + + + + + + + Ruby elem should not contain TBody kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Ruby elem contains TBody kid + + + + + + + + + Ruby elem should not contain TFoot kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Ruby elem contains TFoot kid + + + + + + + + + Ruby elem should not contain Caption kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Ruby elem contains Caption kid + + + + + + + + + Ruby elem should not contain Figure kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + Ruby elem contains Figure kid + + + + + + + + + Ruby elem should not contain Formula kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + Ruby elem contains Formula kid + + + + + + + + + RB elem should not contain Document kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + RB elem contains Document kid + + + + + + + + + RB elem should not contain Part kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + RB elem contains Part kid + + + + + + + + + RB elem should not contain Art kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + RB elem contains Art kid + + + + + + + + + RB elem should not contain Div kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + RB elem contains Div kid + + + + + + + + + RB elem should not contain Sect kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + RB elem contains Sect kid + + + + + + + + + RB elem should not contain TOC kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + RB elem contains TOC kid + + + + + + + + + RB elem should not contain TOCI kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + RB elem contains TOCI kid + + + + + + + + + RB elem should not contain BlockQuote kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + RB elem contains BlockQuote kid + + + + + + + + + RB elem should not contain P kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + RB elem contains P kid + + + + + + + + + RB elem should not contain Note kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + RB elem contains Note kid + + + + + + + + + RB elem should not contain Code kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + RB elem contains Code kid + + + + + + + + + RB elem should not contain Hn kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + RB elem contains Hn kid + + + + + + + + + RB elem should not contain H kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + RB elem contains H kid + + + + + + + + + RB elem should not contain Lbl kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + RB elem contains Lbl kid + + + + + + + + + RB elem should not contain Ruby kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + RB elem contains Ruby kid + + + + + + + + + RB elem should not contain RB kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + RB elem contains RB kid + + + + + + + + + RB elem should not contain RT kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + RB elem contains RT kid + + + + + + + + + RB elem should not contain RP kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + RB elem contains RP kid + + + + + + + + + RB elem should not contain Warichu kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + RB elem contains Warichu kid + + + + + + + + + RB elem should not contain WT kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + RB elem contains WT kid + + + + + + + + + RB elem should not contain WP kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + RB elem contains WP kid + + + + + + + + + RB elem should not contain Index kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + RB elem contains Index kid + + + + + + + + + RB elem should not contain L kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + RB elem contains L kid + + + + + + + + + RB elem should not contain LI kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + RB elem contains LI kid + + + + + + + + + RB elem should not contain LBody kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + RB elem contains LBody kid + + + + + + + + + RB elem should not contain BibEntry kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + RB elem contains BibEntry kid + + + + + + + + + RB elem should not contain Table kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + RB elem contains Table kid + + + + + + + + + RB elem should not contain TR kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + RB elem contains TR kid + + + + + + + + + RB elem should not contain TH kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + RB elem contains TH kid + + + + + + + + + RB elem should not contain TD kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + RB elem contains TD kid + + + + + + + + + RB elem should not contain THead kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + RB elem contains THead kid + + + + + + + + + RB elem should not contain TBody kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + RB elem contains TBody kid + + + + + + + + + RB elem should not contain TFoot kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + RB elem contains TFoot kid + + + + + + + + + RB elem should not contain Caption kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + RB elem contains Caption kid + + + + + + + + + RB elem should not contain Figure kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + RB elem contains Figure kid + + + + + + + + + RB elem should not contain Formula kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + RB elem contains Formula kid + + + + + + + + + RT elem should not contain Document kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + RT elem contains Document kid + + + + + + + + + RT elem should not contain Part kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + RT elem contains Part kid + + + + + + + + + RT elem should not contain Art kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + RT elem contains Art kid + + + + + + + + + RT elem should not contain Div kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + RT elem contains Div kid + + + + + + + + + RT elem should not contain Sect kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + RT elem contains Sect kid + + + + + + + + + RT elem should not contain TOC kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + RT elem contains TOC kid + + + + + + + + + RT elem should not contain TOCI kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + RT elem contains TOCI kid + + + + + + + + + RT elem should not contain BlockQuote kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + RT elem contains BlockQuote kid + + + + + + + + + RT elem should not contain P kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + RT elem contains P kid + + + + + + + + + RT elem should not contain Note kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + RT elem contains Note kid + + + + + + + + + RT elem should not contain Code kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + RT elem contains Code kid + + + + + + + + + RT elem should not contain Hn kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + RT elem contains Hn kid + + + + + + + + + RT elem should not contain H kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + RT elem contains H kid + + + + + + + + + RT elem should not contain Lbl kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + RT elem contains Lbl kid + + + + + + + + + RT elem should not contain Ruby kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + RT elem contains Ruby kid + + + + + + + + + RT elem should not contain RB kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + RT elem contains RB kid + + + + + + + + + RT elem should not contain RT kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + RT elem contains RT kid + + + + + + + + + RT elem should not contain RP kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + RT elem contains RP kid + + + + + + + + + RT elem should not contain Warichu kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + RT elem contains Warichu kid + + + + + + + + + RT elem should not contain WT kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + RT elem contains WT kid + + + + + + + + + RT elem should not contain WP kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + RT elem contains WP kid + + + + + + + + + RT elem should not contain Index kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + RT elem contains Index kid + + + + + + + + + RT elem should not contain L kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + RT elem contains L kid + + + + + + + + + RT elem should not contain LI kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + RT elem contains LI kid + + + + + + + + + RT elem should not contain LBody kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + RT elem contains LBody kid + + + + + + + + + RT elem should not contain BibEntry kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + RT elem contains BibEntry kid + + + + + + + + + RT elem should not contain Table kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + RT elem contains Table kid + + + + + + + + + RT elem should not contain TR kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + RT elem contains TR kid + + + + + + + + + RT elem should not contain TH kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + RT elem contains TH kid + + + + + + + + + RT elem should not contain TD kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + RT elem contains TD kid + + + + + + + + + RT elem should not contain THead kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + RT elem contains THead kid + + + + + + + + + RT elem should not contain TBody kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + RT elem contains TBody kid + + + + + + + + + RT elem should not contain TFoot kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + RT elem contains TFoot kid + + + + + + + + + RT elem should not contain Caption kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + RT elem contains Caption kid + + + + + + + + + RT elem should not contain Figure kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + RT elem contains Figure kid + + + + + + + + + RT elem should not contain Formula kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + RT elem contains Formula kid + + + + + + + + + RP elem should not contain Document kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + RP elem contains Document kid + + + + + + + + + RP elem should not contain Part kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + RP elem contains Part kid + + + + + + + + + RP elem should not contain Art kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + RP elem contains Art kid + + + + + + + + + RP elem should not contain Div kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + RP elem contains Div kid + + + + + + + + + RP elem should not contain Sect kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + RP elem contains Sect kid + + + + + + + + + RP elem should not contain TOC kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + RP elem contains TOC kid + + + + + + + + + RP elem should not contain TOCI kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + RP elem contains TOCI kid + + + + + + + + + RP elem should not contain BlockQuote kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + RP elem contains BlockQuote kid + + + + + + + + + RP elem should not contain P kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + RP elem contains P kid + + + + + + + + + RP elem should not contain Note kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + RP elem contains Note kid + + + + + + + + + RP elem should not contain Code kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + RP elem contains Code kid + + + + + + + + + RP elem should not contain Hn kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + RP elem contains Hn kid + + + + + + + + + RP elem should not contain H kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + RP elem contains H kid + + + + + + + + + RP elem should not contain Lbl kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + RP elem contains Lbl kid + + + + + + + + + RP elem should not contain Ruby kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + RP elem contains Ruby kid + + + + + + + + + RP elem should not contain RB kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + RP elem contains RB kid + + + + + + + + + RP elem should not contain RT kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + RP elem contains RT kid + + + + + + + + + RP elem should not contain RP kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + RP elem contains RP kid + + + + + + + + + RP elem should not contain Warichu kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + RP elem contains Warichu kid + + + + + + + + + RP elem should not contain WT kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + RP elem contains WT kid + + + + + + + + + RP elem should not contain WP kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + RP elem contains WP kid + + + + + + + + + RP elem should not contain Index kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + RP elem contains Index kid + + + + + + + + + RP elem should not contain L kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + RP elem contains L kid + + + + + + + + + RP elem should not contain LI kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + RP elem contains LI kid + + + + + + + + + RP elem should not contain LBody kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + RP elem contains LBody kid + + + + + + + + + RP elem should not contain BibEntry kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + RP elem contains BibEntry kid + + + + + + + + + RP elem should not contain Table kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + RP elem contains Table kid + + + + + + + + + RP elem should not contain TR kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + RP elem contains TR kid + + + + + + + + + RP elem should not contain TH kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + RP elem contains TH kid + + + + + + + + + RP elem should not contain TD kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + RP elem contains TD kid + + + + + + + + + RP elem should not contain THead kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + RP elem contains THead kid + + + + + + + + + RP elem should not contain TBody kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + RP elem contains TBody kid + + + + + + + + + RP elem should not contain TFoot kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + RP elem contains TFoot kid + + + + + + + + + RP elem should not contain Caption kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + RP elem contains Caption kid + + + + + + + + + RP elem should not contain Figure kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + RP elem contains Figure kid + + + + + + + + + RP elem should not contain Formula kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + RP elem contains Formula kid + + + + + + + + + Warichu elem should not contain Document kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Warichu elem contains Document kid + + + + + + + + + Warichu elem should not contain Part kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Warichu elem contains Part kid + + + + + + + + + Warichu elem should not contain Art kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Warichu elem contains Art kid + + + + + + + + + Warichu elem should not contain Div kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Warichu elem contains Div kid + + + + + + + + + Warichu elem should not contain Sect kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Warichu elem contains Sect kid + + + + + + + + + Warichu elem should not contain TOC kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Warichu elem contains TOC kid + + + + + + + + + Warichu elem should not contain TOCI kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Warichu elem contains TOCI kid + + + + + + + + + Warichu elem should not contain BlockQuote kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Warichu elem contains BlockQuote kid + + + + + + + + + Warichu elem should not contain P kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Warichu elem contains P kid + + + + + + + + + Warichu elem should not contain Note kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + Warichu elem contains Note kid + + + + + + + + + Warichu elem should not contain Code kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Warichu elem contains Code kid + + + + + + + + + Warichu elem should not contain Hn kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + Warichu elem contains Hn kid + + + + + + + + + Warichu elem should not contain H kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Warichu elem contains H kid + + + + + + + + + Warichu elem should not contain Lbl kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Warichu elem contains Lbl kid + + + + + + + + + Warichu elem should not contain Span kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Warichu elem contains Span kid + + + + + + + + + Warichu elem should not contain Quote kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Warichu elem contains Quote kid + + + + + + + + + Warichu elem should not contain Link kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Warichu elem contains Link kid + + + + + + + + + Warichu elem should not contain Reference kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Warichu elem contains Reference kid + + + + + + + + + Warichu elem should not contain Annot kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + Warichu elem contains Annot kid + + + + + + + + + Warichu elem should not contain Form kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Warichu elem contains Form kid + + + + + + + + + Warichu elem should not contain Ruby kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Warichu elem contains Ruby kid + + + + + + + + + Warichu elem should not contain RB kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Warichu elem contains RB kid + + + + + + + + + Warichu elem should not contain RT kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Warichu elem contains RT kid + + + + + + + + + Warichu elem should not contain RP kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Warichu elem contains RP kid + + + + + + + + + Warichu elem should not contain Warichu kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Warichu elem contains Warichu kid + + + + + + + + + Warichu elem should not contain Index kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Warichu elem contains Index kid + + + + + + + + + Warichu elem should not contain L kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Warichu elem contains L kid + + + + + + + + + Warichu elem should not contain LI kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Warichu elem contains LI kid + + + + + + + + + Warichu elem should not contain LBody kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Warichu elem contains LBody kid + + + + + + + + + Warichu elem should not contain BibEntry kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Warichu elem contains BibEntry kid + + + + + + + + + Warichu elem should not contain Table kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Warichu elem contains Table kid + + + + + + + + + Warichu elem should not contain TR kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Warichu elem contains TR kid + + + + + + + + + Warichu elem should not contain TH kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Warichu elem contains TH kid + + + + + + + + + Warichu elem should not contain TD kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Warichu elem contains TD kid + + + + + + + + + Warichu elem should not contain THead kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Warichu elem contains THead kid + + + + + + + + + Warichu elem should not contain TBody kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Warichu elem contains TBody kid + + + + + + + + + Warichu elem should not contain TFoot kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Warichu elem contains TFoot kid + + + + + + + + + Warichu elem should not contain Caption kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Warichu elem contains Caption kid + + + + + + + + + Warichu elem should not contain Figure kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + Warichu elem contains Figure kid + + + + + + + + + Warichu elem should not contain Formula kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + Warichu elem contains Formula kid + + + + + + + + + WT elem should not contain Document kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + WT elem contains Document kid + + + + + + + + + WT elem should not contain Part kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + WT elem contains Part kid + + + + + + + + + WT elem should not contain Art kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + WT elem contains Art kid + + + + + + + + + WT elem should not contain Div kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + WT elem contains Div kid + + + + + + + + + WT elem should not contain Sect kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + WT elem contains Sect kid + + + + + + + + + WT elem should not contain TOC kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + WT elem contains TOC kid + + + + + + + + + WT elem should not contain TOCI kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + WT elem contains TOCI kid + + + + + + + + + WT elem should not contain BlockQuote kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + WT elem contains BlockQuote kid + + + + + + + + + WT elem should not contain P kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + WT elem contains P kid + + + + + + + + + WT elem should not contain Note kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + WT elem contains Note kid + + + + + + + + + WT elem should not contain Code kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + WT elem contains Code kid + + + + + + + + + WT elem should not contain Hn kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + WT elem contains Hn kid + + + + + + + + + WT elem should not contain H kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + WT elem contains H kid + + + + + + + + + WT elem should not contain Lbl kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + WT elem contains Lbl kid + + + + + + + + + WT elem should not contain Ruby kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + WT elem contains Ruby kid + + + + + + + + + WT elem should not contain RB kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + WT elem contains RB kid + + + + + + + + + WT elem should not contain RT kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + WT elem contains RT kid + + + + + + + + + WT elem should not contain RP kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + WT elem contains RP kid + + + + + + + + + WT elem should not contain Warichu kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + WT elem contains Warichu kid + + + + + + + + + WT elem should not contain WT kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + WT elem contains WT kid + + + + + + + + + WT elem should not contain WP kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + WT elem contains WP kid + + + + + + + + + WT elem should not contain Index kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + WT elem contains Index kid + + + + + + + + + WT elem should not contain L kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + WT elem contains L kid + + + + + + + + + WT elem should not contain LI kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + WT elem contains LI kid + + + + + + + + + WT elem should not contain LBody kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + WT elem contains LBody kid + + + + + + + + + WT elem should not contain BibEntry kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + WT elem contains BibEntry kid + + + + + + + + + WT elem should not contain Table kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + WT elem contains Table kid + + + + + + + + + WT elem should not contain TR kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + WT elem contains TR kid + + + + + + + + + WT elem should not contain TH kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + WT elem contains TH kid + + + + + + + + + WT elem should not contain TD kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + WT elem contains TD kid + + + + + + + + + WT elem should not contain THead kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + WT elem contains THead kid + + + + + + + + + WT elem should not contain TBody kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + WT elem contains TBody kid + + + + + + + + + WT elem should not contain TFoot kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + WT elem contains TFoot kid + + + + + + + + + WT elem should not contain Caption kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + WT elem contains Caption kid + + + + + + + + + WT elem should not contain Figure kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + WT elem contains Figure kid + + + + + + + + + WT elem should not contain Formula kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + WT elem contains Formula kid + + + + + + + + + WP elem should not contain Document kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + WP elem contains Document kid + + + + + + + + + WP elem should not contain Part kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + WP elem contains Part kid + + + + + + + + + WP elem should not contain Art kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + WP elem contains Art kid + + + + + + + + + WP elem should not contain Div kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + WP elem contains Div kid + + + + + + + + + WP elem should not contain Sect kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + WP elem contains Sect kid + + + + + + + + + WP elem should not contain TOC kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + WP elem contains TOC kid + + + + + + + + + WP elem should not contain TOCI kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + WP elem contains TOCI kid + + + + + + + + + WP elem should not contain BlockQuote kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + WP elem contains BlockQuote kid + + + + + + + + + WP elem should not contain P kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + WP elem contains P kid + + + + + + + + + WP elem should not contain Note kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + WP elem contains Note kid + + + + + + + + + WP elem should not contain Code kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + WP elem contains Code kid + + + + + + + + + WP elem should not contain Hn kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + WP elem contains Hn kid + + + + + + + + + WP elem should not contain H kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + WP elem contains H kid + + + + + + + + + WP elem should not contain Lbl kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + WP elem contains Lbl kid + + + + + + + + + WP elem should not contain Ruby kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + WP elem contains Ruby kid + + + + + + + + + WP elem should not contain RB kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + WP elem contains RB kid + + + + + + + + + WP elem should not contain RT kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + WP elem contains RT kid + + + + + + + + + WP elem should not contain RP kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + WP elem contains RP kid + + + + + + + + + WP elem should not contain Warichu kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + WP elem contains Warichu kid + + + + + + + + + WP elem should not contain WT kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + WP elem contains WT kid + + + + + + + + + WP elem should not contain WP kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + WP elem contains WP kid + + + + + + + + + WP elem should not contain Index kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + WP elem contains Index kid + + + + + + + + + WP elem should not contain L kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + WP elem contains L kid + + + + + + + + + WP elem should not contain LI kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + WP elem contains LI kid + + + + + + + + + WP elem should not contain LBody kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + WP elem contains LBody kid + + + + + + + + + WP elem should not contain BibEntry kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + WP elem contains BibEntry kid + + + + + + + + + WP elem should not contain Table kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + WP elem contains Table kid + + + + + + + + + WP elem should not contain TR kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + WP elem contains TR kid + + + + + + + + + WP elem should not contain TH kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + WP elem contains TH kid + + + + + + + + + WP elem should not contain TD kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + WP elem contains TD kid + + + + + + + + + WP elem should not contain THead kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + WP elem contains THead kid + + + + + + + + + WP elem should not contain TBody kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + WP elem contains TBody kid + + + + + + + + + WP elem should not contain TFoot kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + WP elem contains TFoot kid + + + + + + + + + WP elem should not contain Caption kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + WP elem contains Caption kid + + + + + + + + + WP elem should not contain Figure kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + WP elem contains Figure kid + + + + + + + + + WP elem should not contain Formula kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + WP elem contains Formula kid + + + + + + + + + Index elem should not contain Document kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Index elem contains Document kid + + + + + + + + + Index elem should not contain Art kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Index elem contains Art kid + + + + + + + + + Index elem should not contain TOC kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Index elem contains TOC kid + + + + + + + + + Index elem should not contain TOCI kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Index elem contains TOCI kid + + + + + + + + + Index elem should not contain BlockQuote kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Index elem contains BlockQuote kid + + + + + + + + + Index elem should not contain Code kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Index elem contains Code kid + + + + + + + + + Index elem should not contain Lbl kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Index elem contains Lbl kid + + + + + + + + + Index elem should not contain Span kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Index elem contains Span kid + + + + + + + + + Index elem should not contain Quote kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Index elem contains Quote kid + + + + + + + + + Index elem should not contain Link kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Index elem contains Link kid + + + + + + + + + Index elem should not contain Form kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Index elem contains Form kid + + + + + + + + + Index elem should not contain Ruby kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Index elem contains Ruby kid + + + + + + + + + Index elem should not contain RB kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Index elem contains RB kid + + + + + + + + + Index elem should not contain RT kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Index elem contains RT kid + + + + + + + + + Index elem should not contain RP kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Index elem contains RP kid + + + + + + + + + Index elem should not contain Warichu kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Index elem contains Warichu kid + + + + + + + + + Index elem should not contain WT kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Index elem contains WT kid + + + + + + + + + Index elem should not contain WP kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Index elem contains WP kid + + + + + + + + + Index elem should not contain Index kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Index elem contains Index kid + + + + + + + + + Index elem should not contain LI kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Index elem contains LI kid + + + + + + + + + Index elem should not contain LBody kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Index elem contains LBody kid + + + + + + + + + Index elem should not contain BibEntry kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Index elem contains BibEntry kid + + + + + + + + + Index elem should not contain TR kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Index elem contains TR kid + + + + + + + + + Index elem should not contain TH kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Index elem contains TH kid + + + + + + + + + Index elem should not contain TD kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Index elem contains TD kid + + + + + + + + + Index elem should not contain THead kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Index elem contains THead kid + + + + + + + + + Index elem should not contain TBody kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Index elem contains TBody kid + + + + + + + + + Index elem should not contain TFoot kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Index elem contains TFoot kid + + + + + + + + + Index elem should not contain content item kid + (standardType != 'Index') || (hasContentItems == false) + + Index elem contains content item kid + + + + + + + + + L elem should not contain Document kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + L elem contains Document kid + + + + + + + + + L elem should not contain Part kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + L elem contains Part kid + + + + + + + + + L elem should not contain Art kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + L elem contains Art kid + + + + + + + + + L elem should not contain Div kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + L elem contains Div kid + + + + + + + + + L elem should not contain Sect kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + L elem contains Sect kid + + + + + + + + + L elem should not contain TOC kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + L elem contains TOC kid + + + + + + + + + L elem should not contain TOCI kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + L elem contains TOCI kid + + + + + + + + + L elem should not contain BlockQuote kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + L elem contains BlockQuote kid + + + + + + + + + L elem should not contain P kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + L elem contains P kid + + + + + + + + + L elem should not contain Note kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + L elem contains Note kid + + + + + + + + + L elem should not contain Code kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + L elem contains Code kid + + + + + + + + + L elem should not contain Hn kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + L elem contains Hn kid + + + + + + + + + L elem should not contain H kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + L elem contains H kid + + + + + + + + + L elem should not contain Lbl kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + L elem contains Lbl kid + + + + + + + + + L elem should not contain Span kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + L elem contains Span kid + + + + + + + + + L elem should not contain Quote kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + L elem contains Quote kid + + + + + + + + + L elem should not contain Link kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + L elem contains Link kid + + + + + + + + + L elem should not contain Reference kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + L elem contains Reference kid + + + + + + + + + L elem should not contain Annot kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + L elem contains Annot kid + + + + + + + + + L elem should not contain Form kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + L elem contains Form kid + + + + + + + + + L elem should not contain Ruby kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + L elem contains Ruby kid + + + + + + + + + L elem should not contain RB kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + L elem contains RB kid + + + + + + + + + L elem should not contain RT kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + L elem contains RT kid + + + + + + + + + L elem should not contain RP kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + L elem contains RP kid + + + + + + + + + L elem should not contain Warichu kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + L elem contains Warichu kid + + + + + + + + + L elem should not contain WT kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + L elem contains WT kid + + + + + + + + + L elem should not contain WP kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + L elem contains WP kid + + + + + + + + + L elem should not contain Index kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + L elem contains Index kid + + + + + + + + + L elem should not contain LBody kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + L elem contains LBody kid + + + + + + + + + L elem should not contain BibEntry kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + L elem contains BibEntry kid + + + + + + + + + L elem should not contain Table kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + L elem contains Table kid + + + + + + + + + L elem should not contain TR kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + L elem contains TR kid + + + + + + + + + L elem should not contain TH kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + L elem contains TH kid + + + + + + + + + L elem should not contain TD kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + L elem contains TD kid + + + + + + + + + L elem should not contain THead kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + L elem contains THead kid + + + + + + + + + L elem should not contain TBody kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + L elem contains TBody kid + + + + + + + + + L elem should not contain TFoot kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + L elem contains TFoot kid + + + + + + + + + L elem should contain zero or one Caption kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + L contains more than one Caption kid + + + + + + + + + L elem should not contain Figure kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + L elem contains Figure kid + + + + + + + + + L elem should not contain Formula kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + L elem contains Formula kid + + + + + + + + + L elem should not contain content item kid + (standardType != 'L') || (hasContentItems == false) + + L elem contains content item kid + + + + + + + + + LI elem should not contain Document kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + LI elem contains Document kid + + + + + + + + + LI elem should not contain Part kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + LI elem contains Part kid + + + + + + + + + LI elem should not contain Art kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + LI elem contains Art kid + + + + + + + + + LI elem should not contain Sect kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + LI elem contains Sect kid + + + + + + + + + LI elem should not contain TOC kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + LI elem contains TOC kid + + + + + + + + + LI elem should not contain TOCI kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + LI elem contains TOCI kid + + + + + + + + + LI elem should not contain BlockQuote kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + LI elem contains BlockQuote kid + + + + + + + + + LI elem should not contain P kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + LI elem contains P kid + + + + + + + + + LI elem should not contain Note kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + LI elem contains Note kid + + + + + + + + + LI elem should not contain Code kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + LI elem contains Code kid + + + + + + + + + LI elem should not contain Hn kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + LI elem contains Hn kid + + + + + + + + + LI elem should not contain H kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + LI elem contains H kid + + + + + + + + + LI elem should not contain Span kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + LI elem contains Span kid + + + + + + + + + LI elem should not contain Quote kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + LI elem contains Quote kid + + + + + + + + + LI elem should not contain Link kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + LI elem contains Link kid + + + + + + + + + LI elem should not contain Reference kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + LI elem contains Reference kid + + + + + + + + + LI elem should not contain Annot kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + LI elem contains Annot kid + + + + + + + + + LI elem should not contain Form kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + LI elem contains Form kid + + + + + + + + + LI elem should not contain Ruby kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + LI elem contains Ruby kid + + + + + + + + + LI elem should not contain RB kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + LI elem contains RB kid + + + + + + + + + LI elem should not contain RT kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + LI elem contains RT kid + + + + + + + + + LI elem should not contain RP kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + LI elem contains RP kid + + + + + + + + + LI elem should not contain Warichu kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + LI elem contains Warichu kid + + + + + + + + + LI elem should not contain WT kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + LI elem contains WT kid + + + + + + + + + LI elem should not contain WP kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + LI elem contains WP kid + + + + + + + + + LI elem should not contain Index kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + LI elem contains Index kid + + + + + + + + + LI elem should not contain L kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + LI elem contains L kid + + + + + + + + + LI elem should not contain LI kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + LI elem contains LI kid + + + + + + + + + LI elem should not contain BibEntry kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + LI elem contains BibEntry kid + + + + + + + + + LI elem should not contain Table kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + LI elem contains Table kid + + + + + + + + + LI elem should not contain TR kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + LI elem contains TR kid + + + + + + + + + LI elem should not contain TH kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + LI elem contains TH kid + + + + + + + + + LI elem should not contain TD kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + LI elem contains TD kid + + + + + + + + + LI elem should not contain THead kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + LI elem contains THead kid + + + + + + + + + LI elem should not contain TBody kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + LI elem contains TBody kid + + + + + + + + + LI elem should not contain TFoot kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + LI elem contains TFoot kid + + + + + + + + + LI elem should not contain Caption kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + LI elem contains Caption kid + + + + + + + + + LI elem should not contain Figure kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + LI elem contains Figure kid + + + + + + + + + LI elem should not contain Formula kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + LI elem contains Formula kid + + + + + + + + + LBody elem should not contain Document kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + LBody elem contains Document kid + + + + + + + + + LBody elem should not contain TOC kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + LBody elem contains TOC kid + + + + + + + + + LBody elem should not contain TOCI kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + LBody elem contains TOCI kid + + + + + + + + + LBody elem should contain zero or one H kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + LBody contains more than one H kid + + + + + + + + + LBody elem should not contain Lbl kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + LBody elem contains Lbl kid + + + + + + + + + LBody elem should not contain RB kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + LBody elem contains RB kid + + + + + + + + + LBody elem should not contain RT kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + LBody elem contains RT kid + + + + + + + + + LBody elem should not contain RP kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + LBody elem contains RP kid + + + + + + + + + LBody elem should not contain WT kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + LBody elem contains WT kid + + + + + + + + + LBody elem should not contain WP kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + LBody elem contains WP kid + + + + + + + + + LBody elem should not contain LI kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + LBody elem contains LI kid + + + + + + + + + LBody elem should not contain LBody kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + LBody elem contains LBody kid + + + + + + + + + LBody elem should not contain TR kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + LBody elem contains TR kid + + + + + + + + + LBody elem should not contain TH kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + LBody elem contains TH kid + + + + + + + + + LBody elem should not contain TD kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + LBody elem contains TD kid + + + + + + + + + LBody elem should not contain THead kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + LBody elem contains THead kid + + + + + + + + + LBody elem should not contain TBody kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + LBody elem contains TBody kid + + + + + + + + + LBody elem should not contain TFoot kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + LBody elem contains TFoot kid + + + + + + + + + LBody elem should contain zero or one Caption kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + LBody contains more than one Caption kid + + + + + + + + + BibEntry elem should not contain Document kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + BibEntry elem contains Document kid + + + + + + + + + BibEntry elem should not contain Art kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + BibEntry elem contains Art kid + + + + + + + + + BibEntry elem should not contain Sect kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + BibEntry elem contains Sect kid + + + + + + + + + BibEntry elem should not contain TOC kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + BibEntry elem contains TOC kid + + + + + + + + + BibEntry elem should not contain TOCI kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + BibEntry elem contains TOCI kid + + + + + + + + + BibEntry elem should not contain BlockQuote kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + BibEntry elem contains BlockQuote kid + + + + + + + + + BibEntry elem should not contain Code kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + BibEntry elem contains Code kid + + + + + + + + + BibEntry elem should not contain Hn kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + BibEntry elem contains Hn kid + + + + + + + + + BibEntry elem should not contain H kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + BibEntry elem contains H kid + + + + + + + + + BibEntry elem should not contain Quote kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + BibEntry elem contains Quote kid + + + + + + + + + BibEntry elem should not contain Form kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + BibEntry elem contains Form kid + + + + + + + + + BibEntry elem should not contain Ruby kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + BibEntry elem contains Ruby kid + + + + + + + + + BibEntry elem should not contain RB kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + BibEntry elem contains RB kid + + + + + + + + + BibEntry elem should not contain RT kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + BibEntry elem contains RT kid + + + + + + + + + BibEntry elem should not contain RP kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + BibEntry elem contains RP kid + + + + + + + + + BibEntry elem should not contain Warichu kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + BibEntry elem contains Warichu kid + + + + + + + + + BibEntry elem should not contain WT kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + BibEntry elem contains WT kid + + + + + + + + + BibEntry elem should not contain WP kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + BibEntry elem contains WP kid + + + + + + + + + BibEntry elem should not contain Index kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + BibEntry elem contains Index kid + + + + + + + + + BibEntry elem should not contain L kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + BibEntry elem contains L kid + + + + + + + + + BibEntry elem should not contain LI kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + BibEntry elem contains LI kid + + + + + + + + + BibEntry elem should not contain LBody kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + BibEntry elem contains LBody kid + + + + + + + + + BibEntry elem should not contain BibEntry kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + BibEntry elem contains BibEntry kid + + + + + + + + + BibEntry elem should not contain Table kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + BibEntry elem contains Table kid + + + + + + + + + BibEntry elem should not contain TR kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + BibEntry elem contains TR kid + + + + + + + + + BibEntry elem should not contain TH kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + BibEntry elem contains TH kid + + + + + + + + + BibEntry elem should not contain TD kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + BibEntry elem contains TD kid + + + + + + + + + BibEntry elem should not contain THead kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + BibEntry elem contains THead kid + + + + + + + + + BibEntry elem should not contain TBody kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + BibEntry elem contains TBody kid + + + + + + + + + BibEntry elem should not contain TFoot kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + BibEntry elem contains TFoot kid + + + + + + + + + BibEntry elem should not contain Caption kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + BibEntry elem contains Caption kid + + + + + + + + + BibEntry elem should not contain Formula kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + BibEntry elem contains Formula kid + + + + + + + + + Table elem should not contain Document kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Table elem contains Document kid + + + + + + + + + Table elem should not contain Part kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Table elem contains Part kid + + + + + + + + + Table elem should not contain Art kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Table elem contains Art kid + + + + + + + + + Table elem should not contain Div kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Table elem contains Div kid + + + + + + + + + Table elem should not contain Sect kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Table elem contains Sect kid + + + + + + + + + Table elem should not contain TOC kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Table elem contains TOC kid + + + + + + + + + Table elem should not contain TOCI kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Table elem contains TOCI kid + + + + + + + + + Table elem should not contain BlockQuote kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Table elem contains BlockQuote kid + + + + + + + + + Table elem should not contain P kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Table elem contains P kid + + + + + + + + + Table elem should not contain Note kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + Table elem contains Note kid + + + + + + + + + Table elem should not contain Code kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Table elem contains Code kid + + + + + + + + + Table elem should not contain Hn kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + Table elem contains Hn kid + + + + + + + + + Table elem should not contain H kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Table elem contains H kid + + + + + + + + + Table elem should not contain Lbl kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Table elem contains Lbl kid + + + + + + + + + Table elem should not contain Span kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Table elem contains Span kid + + + + + + + + + Table elem should not contain Quote kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Table elem contains Quote kid + + + + + + + + + Table elem should not contain Link kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Table elem contains Link kid + + + + + + + + + Table elem should not contain Reference kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Table elem contains Reference kid + + + + + + + + + Table elem should not contain Annot kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + Table elem contains Annot kid + + + + + + + + + Table elem should not contain Form kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Table elem contains Form kid + + + + + + + + + Table elem should not contain Ruby kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Table elem contains Ruby kid + + + + + + + + + Table elem should not contain RB kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Table elem contains RB kid + + + + + + + + + Table elem should not contain RT kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Table elem contains RT kid + + + + + + + + + Table elem should not contain RP kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Table elem contains RP kid + + + + + + + + + Table elem should not contain Warichu kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Table elem contains Warichu kid + + + + + + + + + Table elem should not contain WT kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Table elem contains WT kid + + + + + + + + + Table elem should not contain WP kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Table elem contains WP kid + + + + + + + + + Table elem should not contain Index kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Table elem contains Index kid + + + + + + + + + Table elem should not contain L kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Table elem contains L kid + + + + + + + + + Table elem should not contain LI kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Table elem contains LI kid + + + + + + + + + Table elem should not contain LBody kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Table elem contains LBody kid + + + + + + + + + Table elem should not contain BibEntry kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Table elem contains BibEntry kid + + + + + + + + + Table elem should not contain Table kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Table elem contains Table kid + + + + + + + + + Table elem should not contain TH kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Table elem contains TH kid + + + + + + + + + Table elem should not contain TD kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Table elem contains TD kid + + + + + + + + + Table elem should contain zero or one THead kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) + + Table contains more than one THead kid + + + + + + + + + Table elem should contain zero or one TFoot kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) + + Table contains more than one TFoot kid + + + + + + + + + Table elem should contain zero or one Caption kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Table contains more than one Caption kid + + + + + + + + + Table elem should not contain Figure kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + Table elem contains Figure kid + + + + + + + + + Table elem should not contain Formula kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + Table elem contains Formula kid + + + + + + + + + Table elem should not contain content item kid + (standardType != 'Table') || (hasContentItems == false) + + Table elem contains content item kid + + + + + + + + + TR elem should not contain Document kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TR elem contains Document kid + + + + + + + + + TR elem should not contain Part kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TR elem contains Part kid + + + + + + + + + TR elem should not contain Art kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + TR elem contains Art kid + + + + + + + + + TR elem should not contain Div kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + TR elem contains Div kid + + + + + + + + + TR elem should not contain Sect kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + TR elem contains Sect kid + + + + + + + + + TR elem should not contain TOC kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + TR elem contains TOC kid + + + + + + + + + TR elem should not contain TOCI kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TR elem contains TOCI kid + + + + + + + + + TR elem should not contain BlockQuote kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TR elem contains BlockQuote kid + + + + + + + + + TR elem should not contain P kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + TR elem contains P kid + + + + + + + + + TR elem should not contain Note kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + TR elem contains Note kid + + + + + + + + + TR elem should not contain Code kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + TR elem contains Code kid + + + + + + + + + TR elem should not contain Hn kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + TR elem contains Hn kid + + + + + + + + + TR elem should not contain H kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + TR elem contains H kid + + + + + + + + + TR elem should not contain Lbl kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + TR elem contains Lbl kid + + + + + + + + + TR elem should not contain Span kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + TR elem contains Span kid + + + + + + + + + TR elem should not contain Quote kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + TR elem contains Quote kid + + + + + + + + + TR elem should not contain Link kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + TR elem contains Link kid + + + + + + + + + TR elem should not contain Reference kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + TR elem contains Reference kid + + + + + + + + + TR elem should not contain Annot kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + TR elem contains Annot kid + + + + + + + + + TR elem should not contain Form kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + TR elem contains Form kid + + + + + + + + + TR elem should not contain Ruby kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + TR elem contains Ruby kid + + + + + + + + + TR elem should not contain RB kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TR elem contains RB kid + + + + + + + + + TR elem should not contain RT kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TR elem contains RT kid + + + + + + + + + TR elem should not contain RP kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TR elem contains RP kid + + + + + + + + + TR elem should not contain Warichu kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + TR elem contains Warichu kid + + + + + + + + + TR elem should not contain WT kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TR elem contains WT kid + + + + + + + + + TR elem should not contain WP kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TR elem contains WP kid + + + + + + + + + TR elem should not contain Index kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + TR elem contains Index kid + + + + + + + + + TR elem should not contain L kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + TR elem contains L kid + + + + + + + + + TR elem should not contain LI kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TR elem contains LI kid + + + + + + + + + TR elem should not contain LBody kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TR elem contains LBody kid + + + + + + + + + TR elem should not contain BibEntry kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + TR elem contains BibEntry kid + + + + + + + + + TR elem should not contain Table kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + TR elem contains Table kid + + + + + + + + + TR elem should not contain TR kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + TR elem contains TR kid + + + + + + + + + TR elem should not contain THead kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TR elem contains THead kid + + + + + + + + + TR elem should not contain TBody kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TR elem contains TBody kid + + + + + + + + + TR elem should not contain TFoot kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TR elem contains TFoot kid + + + + + + + + + TR elem should not contain Caption kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TR elem contains Caption kid + + + + + + + + + TR elem should not contain Figure kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + TR elem contains Figure kid + + + + + + + + + TR elem should not contain Formula kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + TR elem contains Formula kid + + + + + + + + + TR elem should not contain content item kid + (standardType != 'TR') || (hasContentItems == false) + + TR elem contains content item kid + + + + + + + + + TH elem should not contain Document kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TH elem contains Document kid + + + + + + + + + TH elem should not contain Part kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TH elem contains Part kid + + + + + + + + + TH elem should not contain TOC kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + TH elem contains TOC kid + + + + + + + + + TH elem should not contain TOCI kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TH elem contains TOCI kid + + + + + + + + + TH elem should not contain BlockQuote kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TH elem contains BlockQuote kid + + + + + + + + + TH elem should contain zero or one H kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + TH contains more than one H kid + + + + + + + + + TH elem should not contain RB kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TH elem contains RB kid + + + + + + + + + TH elem should not contain RT kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TH elem contains RT kid + + + + + + + + + TH elem should not contain RP kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TH elem contains RP kid + + + + + + + + + TH elem should not contain WT kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TH elem contains WT kid + + + + + + + + + TH elem should not contain WP kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TH elem contains WP kid + + + + + + + + + TH elem should not contain LI kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TH elem contains LI kid + + + + + + + + + TH elem should not contain LBody kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TH elem contains LBody kid + + + + + + + + + TH elem should not contain TR kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + TH elem contains TR kid + + + + + + + + + TH elem should not contain TH kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TH elem contains TH kid + + + + + + + + + TH elem should not contain TD kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TH elem contains TD kid + + + + + + + + + TH elem should not contain THead kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TH elem contains THead kid + + + + + + + + + TH elem should not contain TBody kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TH elem contains TBody kid + + + + + + + + + TH elem should not contain TFoot kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TH elem contains TFoot kid + + + + + + + + + TH elem should not contain Caption kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TH elem contains Caption kid + + + + + + + + + TD elem should not contain Document kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TD elem contains Document kid + + + + + + + + + TD elem should not contain Part kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TD elem contains Part kid + + + + + + + + + TD elem should not contain TOC kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + TD elem contains TOC kid + + + + + + + + + TD elem should not contain TOCI kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TD elem contains TOCI kid + + + + + + + + + TD elem should not contain BlockQuote kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TD elem contains BlockQuote kid + + + + + + + + + TD elem should contain zero or one H kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + TD contains more than one H kid + + + + + + + + + TD elem should not contain RB kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TD elem contains RB kid + + + + + + + + + TD elem should not contain RT kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TD elem contains RT kid + + + + + + + + + TD elem should not contain RP kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TD elem contains RP kid + + + + + + + + + TD elem should not contain WT kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TD elem contains WT kid + + + + + + + + + TD elem should not contain WP kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TD elem contains WP kid + + + + + + + + + TD elem should not contain LI kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TD elem contains LI kid + + + + + + + + + TD elem should not contain LBody kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TD elem contains LBody kid + + + + + + + + + TD elem should not contain TR kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + TD elem contains TR kid + + + + + + + + + TD elem should not contain TH kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TD elem contains TH kid + + + + + + + + + TD elem should not contain TD kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TD elem contains TD kid + + + + + + + + + TD elem should not contain THead kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TD elem contains THead kid + + + + + + + + + TD elem should not contain TBody kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TD elem contains TBody kid + + + + + + + + + TD elem should not contain TFoot kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TD elem contains TFoot kid + + + + + + + + + TD elem should not contain Caption kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TD elem contains Caption kid + + + + + + + + + THead elem should not contain Document kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + THead elem contains Document kid + + + + + + + + + THead elem should not contain Part kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + THead elem contains Part kid + + + + + + + + + THead elem should not contain Art kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + THead elem contains Art kid + + + + + + + + + THead elem should not contain Div kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + THead elem contains Div kid + + + + + + + + + THead elem should not contain Sect kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + THead elem contains Sect kid + + + + + + + + + THead elem should not contain TOC kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + THead elem contains TOC kid + + + + + + + + + THead elem should not contain TOCI kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + THead elem contains TOCI kid + + + + + + + + + THead elem should not contain BlockQuote kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + THead elem contains BlockQuote kid + + + + + + + + + THead elem should not contain P kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + THead elem contains P kid + + + + + + + + + THead elem should not contain Note kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + THead elem contains Note kid + + + + + + + + + THead elem should not contain Code kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + THead elem contains Code kid + + + + + + + + + THead elem should not contain Hn kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + THead elem contains Hn kid + + + + + + + + + THead elem should not contain H kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + THead elem contains H kid + + + + + + + + + THead elem should not contain Lbl kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + THead elem contains Lbl kid + + + + + + + + + THead elem should not contain Span kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + THead elem contains Span kid + + + + + + + + + THead elem should not contain Quote kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + THead elem contains Quote kid + + + + + + + + + THead elem should not contain Link kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + THead elem contains Link kid + + + + + + + + + THead elem should not contain Reference kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + THead elem contains Reference kid + + + + + + + + + THead elem should not contain Annot kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + THead elem contains Annot kid + + + + + + + + + THead elem should not contain Form kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + THead elem contains Form kid + + + + + + + + + THead elem should not contain Ruby kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + THead elem contains Ruby kid + + + + + + + + + THead elem should not contain RB kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + THead elem contains RB kid + + + + + + + + + THead elem should not contain RT kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + THead elem contains RT kid + + + + + + + + + THead elem should not contain RP kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + THead elem contains RP kid + + + + + + + + + THead elem should not contain Warichu kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + THead elem contains Warichu kid + + + + + + + + + THead elem should not contain WT kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + THead elem contains WT kid + + + + + + + + + THead elem should not contain WP kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + THead elem contains WP kid + + + + + + + + + THead elem should not contain Index kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + THead elem contains Index kid + + + + + + + + + THead elem should not contain L kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + THead elem contains L kid + + + + + + + + + THead elem should not contain LI kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + THead elem contains LI kid + + + + + + + + + THead elem should not contain LBody kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + THead elem contains LBody kid + + + + + + + + + THead elem should not contain BibEntry kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + THead elem contains BibEntry kid + + + + + + + + + THead elem should not contain Table kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + THead elem contains Table kid + + + + + + + + + THead elem should not contain TH kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + THead elem contains TH kid + + + + + + + + + THead elem should not contain TD kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + THead elem contains TD kid + + + + + + + + + THead elem should not contain THead kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + THead elem contains THead kid + + + + + + + + + THead elem should not contain TBody kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + THead elem contains TBody kid + + + + + + + + + THead elem should not contain TFoot kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + THead elem contains TFoot kid + + + + + + + + + THead elem should not contain Caption kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + THead elem contains Caption kid + + + + + + + + + THead elem should not contain Figure kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + THead elem contains Figure kid + + + + + + + + + THead elem should not contain Formula kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + THead elem contains Formula kid + + + + + + + + + THead elem should not contain content item kid + (standardType != 'THead') || (hasContentItems == false) + + THead elem contains content item kid + + + + + + + + + TBody elem should not contain Document kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TBody elem contains Document kid + + + + + + + + + TBody elem should not contain Part kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TBody elem contains Part kid + + + + + + + + + TBody elem should not contain Art kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + TBody elem contains Art kid + + + + + + + + + TBody elem should not contain Div kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + TBody elem contains Div kid + + + + + + + + + TBody elem should not contain Sect kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + TBody elem contains Sect kid + + + + + + + + + TBody elem should not contain TOC kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + TBody elem contains TOC kid + + + + + + + + + TBody elem should not contain TOCI kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TBody elem contains TOCI kid + + + + + + + + + TBody elem should not contain BlockQuote kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TBody elem contains BlockQuote kid + + + + + + + + + TBody elem should not contain P kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + TBody elem contains P kid + + + + + + + + + TBody elem should not contain Note kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + TBody elem contains Note kid + + + + + + + + + TBody elem should not contain Code kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + TBody elem contains Code kid + + + + + + + + + TBody elem should not contain Hn kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + TBody elem contains Hn kid + + + + + + + + + TBody elem should not contain H kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + TBody elem contains H kid + + + + + + + + + TBody elem should not contain Lbl kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + TBody elem contains Lbl kid + + + + + + + + + TBody elem should not contain Span kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + TBody elem contains Span kid + + + + + + + + + TBody elem should not contain Quote kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + TBody elem contains Quote kid + + + + + + + + + TBody elem should not contain Link kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + TBody elem contains Link kid + + + + + + + + + TBody elem should not contain Reference kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + TBody elem contains Reference kid + + + + + + + + + TBody elem should not contain Annot kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + TBody elem contains Annot kid + + + + + + + + + TBody elem should not contain Form kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + TBody elem contains Form kid + + + + + + + + + TBody elem should not contain Ruby kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + TBody elem contains Ruby kid + + + + + + + + + TBody elem should not contain RB kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TBody elem contains RB kid + + + + + + + + + TBody elem should not contain RT kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TBody elem contains RT kid + + + + + + + + + TBody elem should not contain RP kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TBody elem contains RP kid + + + + + + + + + TBody elem should not contain Warichu kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + TBody elem contains Warichu kid + + + + + + + + + TBody elem should not contain WT kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TBody elem contains WT kid + + + + + + + + + TBody elem should not contain WP kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TBody elem contains WP kid + + + + + + + + + TBody elem should not contain Index kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + TBody elem contains Index kid + + + + + + + + + TBody elem should not contain L kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + TBody elem contains L kid + + + + + + + + + TBody elem should not contain LI kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TBody elem contains LI kid + + + + + + + + + TBody elem should not contain LBody kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TBody elem contains LBody kid + + + + + + + + + TBody elem should not contain BibEntry kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + TBody elem contains BibEntry kid + + + + + + + + + TBody elem should not contain Table kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + TBody elem contains Table kid + + + + + + + + + TBody elem should not contain TH kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TBody elem contains TH kid + + + + + + + + + TBody elem should not contain TD kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TBody elem contains TD kid + + + + + + + + + TBody elem should not contain THead kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TBody elem contains THead kid + + + + + + + + + TBody elem should not contain TBody kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TBody elem contains TBody kid + + + + + + + + + TBody elem should not contain TFoot kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TBody elem contains TFoot kid + + + + + + + + + TBody elem should not contain Caption kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TBody elem contains Caption kid + + + + + + + + + TBody elem should not contain Figure kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + TBody elem contains Figure kid + + + + + + + + + TBody elem should not contain Formula kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + TBody elem contains Formula kid + + + + + + + + + TBody elem should not contain content item kid + (standardType != 'TBody') || (hasContentItems == false) + + TBody elem contains content item kid + + + + + + + + + TFoot elem should not contain Document kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TFoot elem contains Document kid + + + + + + + + + TFoot elem should not contain Part kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TFoot elem contains Part kid + + + + + + + + + TFoot elem should not contain Art kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + TFoot elem contains Art kid + + + + + + + + + TFoot elem should not contain Div kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + TFoot elem contains Div kid + + + + + + + + + TFoot elem should not contain Sect kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + TFoot elem contains Sect kid + + + + + + + + + TFoot elem should not contain TOC kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + TFoot elem contains TOC kid + + + + + + + + + TFoot elem should not contain TOCI kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TFoot elem contains TOCI kid + + + + + + + + + TFoot elem should not contain BlockQuote kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TFoot elem contains BlockQuote kid + + + + + + + + + TFoot elem should not contain P kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + TFoot elem contains P kid + + + + + + + + + TFoot elem should not contain Note kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + TFoot elem contains Note kid + + + + + + + + + TFoot elem should not contain Code kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + TFoot elem contains Code kid + + + + + + + + + TFoot elem should not contain Hn kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + + TFoot elem contains Hn kid + + + + + + + + + TFoot elem should not contain H kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + TFoot elem contains H kid + + + + + + + + + TFoot elem should not contain Lbl kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + TFoot elem contains Lbl kid + + + + + + + + + TFoot elem should not contain Span kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + TFoot elem contains Span kid + + + + + + + + + TFoot elem should not contain Quote kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + TFoot elem contains Quote kid + + + + + + + + + TFoot elem should not contain Link kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + TFoot elem contains Link kid + + + + + + + + + TFoot elem should not contain Reference kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + TFoot elem contains Reference kid + + + + + + + + + TFoot elem should not contain Annot kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + TFoot elem contains Annot kid + + + + + + + + + TFoot elem should not contain Form kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + TFoot elem contains Form kid + + + + + + + + + TFoot elem should not contain Ruby kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + TFoot elem contains Ruby kid + + + + + + + + + TFoot elem should not contain RB kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TFoot elem contains RB kid + + + + + + + + + TFoot elem should not contain RT kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TFoot elem contains RT kid + + + + + + + + + TFoot elem should not contain RP kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TFoot elem contains RP kid + + + + + + + + + TFoot elem should not contain Warichu kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + TFoot elem contains Warichu kid + + + + + + + + + TFoot elem should not contain WT kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TFoot elem contains WT kid + + + + + + + + + TFoot elem should not contain WP kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TFoot elem contains WP kid + + + + + + + + + TFoot elem should not contain Index kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + TFoot elem contains Index kid + + + + + + + + + TFoot elem should not contain L kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + TFoot elem contains L kid + + + + + + + + + TFoot elem should not contain LI kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TFoot elem contains LI kid + + + + + + + + + TFoot elem should not contain LBody kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TFoot elem contains LBody kid + + + + + + + + + TFoot elem should not contain BibEntry kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + TFoot elem contains BibEntry kid + + + + + + + + + TFoot elem should not contain Table kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + TFoot elem contains Table kid + + + + + + + + + TFoot elem should not contain TH kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TFoot elem contains TH kid + + + + + + + + + TFoot elem should not contain TD kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TFoot elem contains TD kid + + + + + + + + + TFoot elem should not contain THead kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TFoot elem contains THead kid + + + + + + + + + TFoot elem should not contain TBody kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TFoot elem contains TBody kid + + + + + + + + + TFoot elem should not contain TFoot kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TFoot elem contains TFoot kid + + + + + + + + + TFoot elem should not contain Caption kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TFoot elem contains Caption kid + + + + + + + + + TFoot elem should not contain Figure kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + TFoot elem contains Figure kid + + + + + + + + + TFoot elem should not contain Formula kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + TFoot elem contains Formula kid + + + + + + + + + TFoot elem should not contain content item kid + (standardType != 'TFoot') || (hasContentItems == false) + + TFoot elem contains content item kid + + + + + + + + + Caption elem should not contain Document kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Caption elem contains Document kid + + + + + + + + + Caption elem should not contain TOC kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Caption elem contains TOC kid + + + + + + + + + Caption elem should not contain TOCI kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Caption elem contains TOCI kid + + + + + + + + + Caption elem should contain zero or one H kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Caption contains more than one H kid + + + + + + + + + Caption elem should not contain RB kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Caption elem contains RB kid + + + + + + + + + Caption elem should not contain RT kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Caption elem contains RT kid + + + + + + + + + Caption elem should not contain RP kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Caption elem contains RP kid + + + + + + + + + Caption elem should not contain WT kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Caption elem contains WT kid + + + + + + + + + Caption elem should not contain WP kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Caption elem contains WP kid + + + + + + + + + Caption elem should not contain LI kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Caption elem contains LI kid + + + + + + + + + Caption elem should not contain LBody kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Caption elem contains LBody kid + + + + + + + + + Caption elem should not contain TR kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Caption elem contains TR kid + + + + + + + + + Caption elem should not contain TH kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Caption elem contains TH kid + + + + + + + + + Caption elem should not contain TD kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Caption elem contains TD kid + + + + + + + + + Caption elem should not contain THead kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Caption elem contains THead kid + + + + + + + + + Caption elem should not contain TBody kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Caption elem contains TBody kid + + + + + + + + + Caption elem should not contain TFoot kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Caption elem contains TFoot kid + + + + + + + + + Caption elem should not contain Caption kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Caption elem contains Caption kid + + + + + + + + + Figure elem should not contain Document kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Figure elem contains Document kid + + + + + + + + + Figure elem should not contain TOC kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Figure elem contains TOC kid + + + + + + + + + Figure elem should not contain TOCI kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Figure elem contains TOCI kid + + + + + + + + + Figure elem should contain zero or one H kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Figure contains more than one H kid + + + + + + + + + Figure elem should not contain RB kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Figure elem contains RB kid + + + + + + + + + Figure elem should not contain RT kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Figure elem contains RT kid + + + + + + + + + Figure elem should not contain RP kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Figure elem contains RP kid + + + + + + + + + Figure elem should not contain WT kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Figure elem contains WT kid + + + + + + + + + Figure elem should not contain WP kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Figure elem contains WP kid + + + + + + + + + Figure elem should not contain LI kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Figure elem contains LI kid + + + + + + + + + Figure elem should not contain LBody kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Figure elem contains LBody kid + + + + + + + + + Figure elem should not contain TR kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Figure elem contains TR kid + + + + + + + + + Figure elem should not contain TH kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Figure elem contains TH kid + + + + + + + + + Figure elem should not contain TD kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Figure elem contains TD kid + + + + + + + + + Figure elem should not contain THead kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Figure elem contains THead kid + + + + + + + + + Figure elem should not contain TBody kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Figure elem contains TBody kid + + + + + + + + + Figure elem should not contain TFoot kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Figure elem contains TFoot kid + + + + + + + + + Figure elem should contain zero or one Caption kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Figure contains more than one Caption kid + + + + + + + + + Formula elem should not contain Document kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Formula elem contains Document kid + + + + + + + + + Formula elem should not contain Art kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Formula elem contains Art kid + + + + + + + + + Formula elem should not contain Sect kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Formula elem contains Sect kid + + + + + + + + + Formula elem should not contain TOC kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Formula elem contains TOC kid + + + + + + + + + Formula elem should not contain TOCI kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Formula elem contains TOCI kid + + + + + + + + + Formula elem should contain zero or one H kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Formula contains more than one H kid + + + + + + + + + Formula elem should not contain RB kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Formula elem contains RB kid + + + + + + + + + Formula elem should not contain RT kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Formula elem contains RT kid + + + + + + + + + Formula elem should not contain RP kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Formula elem contains RP kid + + + + + + + + + Formula elem should not contain WT kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Formula elem contains WT kid + + + + + + + + + Formula elem should not contain WP kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Formula elem contains WP kid + + + + + + + + + Formula elem should not contain LI kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Formula elem contains LI kid + + + + + + + + + Formula elem should not contain LBody kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Formula elem contains LBody kid + + + + + + + + + Formula elem should not contain TR kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Formula elem contains TR kid + + + + + + + + + Formula elem should not contain TH kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Formula elem contains TH kid + + + + + + + + + Formula elem should not contain TD kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Formula elem contains TD kid + + + + + + + + + Formula elem should not contain THead kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Formula elem contains THead kid + + + + + + + + + Formula elem should not contain TBody kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Formula elem contains TBody kid + + + + + + + + + Formula elem should not contain TFoot kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Formula elem contains TFoot kid + + + + + + + + + Formula elem should contain zero or one Caption kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Formula contains more than one Caption kid + + + + + + + + +
diff --git a/PDF_UA/ISO-32000-2-Tagged.xml b/PDF_UA/ISO-32000-2-Tagged.xml new file mode 100644 index 00000000..3b08ef7e --- /dev/null +++ b/PDF_UA/ISO-32000-2-Tagged.xml @@ -0,0 +1,19895 @@ + + +
+ Tagged pdf profile for PDF 2.0 specification + Profile for validation of tagged pdf structure tree relations +
+ + + + + Every structure element shall be mapped to standard type + standardType != null + + Structure element does not map to standard structure type + + + + + + + + + StructTreeRoot elem should contain zero or one Document kid + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length <= 1 + + StructTreeRoot contains more than one Document kid + + + + + + + + + StructTreeRoot elem should not contain DocumentFragment kid + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + StructTreeRoot elem contains DocumentFragment kid + + + + + + + + + StructTreeRoot elem should not contain Part kid + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + StructTreeRoot elem contains Part kid + + + + + + + + + StructTreeRoot elem should not contain Art kid + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + StructTreeRoot elem contains Art kid + + + + + + + + + StructTreeRoot elem should not contain Div kid + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + StructTreeRoot elem contains Div kid + + + + + + + + + StructTreeRoot elem should not contain Sect kid + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + StructTreeRoot elem contains Sect kid + + + + + + + + + StructTreeRoot elem should not contain TOC kid + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + StructTreeRoot elem contains TOC kid + + + + + + + + + StructTreeRoot elem should not contain TOCI kid + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + StructTreeRoot elem contains TOCI kid + + + + + + + + + StructTreeRoot elem should not contain Aside kid + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + StructTreeRoot elem contains Aside kid + + + + + + + + + StructTreeRoot elem should not contain BlockQuote kid + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + StructTreeRoot elem contains BlockQuote kid + + + + + + + + + StructTreeRoot elem should not contain P kid + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + StructTreeRoot elem contains P kid + + + + + + + + + StructTreeRoot elem should not contain Note kid + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + StructTreeRoot elem contains Note kid + + + + + + + + + StructTreeRoot elem should not contain Code kid + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + StructTreeRoot elem contains Code kid + + + + + + + + + StructTreeRoot elem should not contain Hn kid + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + StructTreeRoot elem contains Hn kid + + + + + + + + + StructTreeRoot elem should not contain H kid + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + StructTreeRoot elem contains H kid + + + + + + + + + StructTreeRoot elem should not contain Title kid + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + StructTreeRoot elem contains Title kid + + + + + + + + + StructTreeRoot elem should not contain Sub kid + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + StructTreeRoot elem contains Sub kid + + + + + + + + + StructTreeRoot elem should not contain Lbl kid + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + StructTreeRoot elem contains Lbl kid + + + + + + + + + StructTreeRoot elem should not contain Em kid + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + StructTreeRoot elem contains Em kid + + + + + + + + + StructTreeRoot elem should not contain Strong kid + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + StructTreeRoot elem contains Strong kid + + + + + + + + + StructTreeRoot elem should not contain Span kid + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + StructTreeRoot elem contains Span kid + + + + + + + + + StructTreeRoot elem should not contain Quote kid + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + StructTreeRoot elem contains Quote kid + + + + + + + + + StructTreeRoot elem should not contain Link kid + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + StructTreeRoot elem contains Link kid + + + + + + + + + StructTreeRoot elem should not contain Reference kid + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + StructTreeRoot elem contains Reference kid + + + + + + + + + StructTreeRoot elem should not contain Annot kid + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + StructTreeRoot elem contains Annot kid + + + + + + + + + StructTreeRoot elem should not contain Form kid + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + StructTreeRoot elem contains Form kid + + + + + + + + + StructTreeRoot elem should not contain Ruby kid + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + StructTreeRoot elem contains Ruby kid + + + + + + + + + StructTreeRoot elem should not contain RB kid + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + StructTreeRoot elem contains RB kid + + + + + + + + + StructTreeRoot elem should not contain RT kid + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + StructTreeRoot elem contains RT kid + + + + + + + + + StructTreeRoot elem should not contain RP kid + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + StructTreeRoot elem contains RP kid + + + + + + + + + StructTreeRoot elem should not contain Warichu kid + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + StructTreeRoot elem contains Warichu kid + + + + + + + + + StructTreeRoot elem should not contain WT kid + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + StructTreeRoot elem contains WT kid + + + + + + + + + StructTreeRoot elem should not contain WP kid + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + StructTreeRoot elem contains WP kid + + + + + + + + + StructTreeRoot elem should not contain FENote kid + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + StructTreeRoot elem contains FENote kid + + + + + + + + + StructTreeRoot elem should not contain Index kid + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + StructTreeRoot elem contains Index kid + + + + + + + + + StructTreeRoot elem should not contain L kid + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + StructTreeRoot elem contains L kid + + + + + + + + + StructTreeRoot elem should not contain LI kid + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + StructTreeRoot elem contains LI kid + + + + + + + + + StructTreeRoot elem should not contain LBody kid + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + StructTreeRoot elem contains LBody kid + + + + + + + + + StructTreeRoot elem should not contain BibEntry kid + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + StructTreeRoot elem contains BibEntry kid + + + + + + + + + StructTreeRoot elem should not contain Table kid + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + StructTreeRoot elem contains Table kid + + + + + + + + + StructTreeRoot elem should not contain TR kid + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + StructTreeRoot elem contains TR kid + + + + + + + + + StructTreeRoot elem should not contain TH kid + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + StructTreeRoot elem contains TH kid + + + + + + + + + StructTreeRoot elem should not contain TD kid + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + StructTreeRoot elem contains TD kid + + + + + + + + + StructTreeRoot elem should not contain THead kid + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + StructTreeRoot elem contains THead kid + + + + + + + + + StructTreeRoot elem should not contain TBody kid + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + StructTreeRoot elem contains TBody kid + + + + + + + + + StructTreeRoot elem should not contain TFoot kid + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + StructTreeRoot elem contains TFoot kid + + + + + + + + + StructTreeRoot elem should not contain Caption kid + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + StructTreeRoot elem contains Caption kid + + + + + + + + + StructTreeRoot elem should not contain Figure kid + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + StructTreeRoot elem contains Figure kid + + + + + + + + + StructTreeRoot elem should not contain Formula kid + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + StructTreeRoot elem contains Formula kid + + + + + + + + + StructTreeRoot elem should not contain Artifact kid + kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + + StructTreeRoot elem contains Artifact kid + + + + + + + + + StructTreeRoot elem should not contain content item kid + hasContentItems == false + + StructTreeRoot elem contains content item kid + + + + + + + + + Document elem should not contain TOCI kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Document elem contains TOCI kid + + + + + + + + + Document elem should contain zero or one H kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Document contains more than one H kid + + + + + + + + + Document elem should not contain Sub kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Document elem contains Sub kid + + + + + + + + + Document elem should not contain Lbl kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Document elem contains Lbl kid + + + + + + + + + Document elem should not contain Em kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + Document elem contains Em kid + + + + + + + + + Document elem should not contain Strong kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + Document elem contains Strong kid + + + + + + + + + Document elem should not contain Span kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Document elem contains Span kid + + + + + + + + + Document elem should not contain Quote kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Document elem contains Quote kid + + + + + + + + + Document elem should not contain Reference kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Document elem contains Reference kid + + + + + + + + + Document elem should not contain Ruby kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Document elem contains Ruby kid + + + + + + + + + Document elem should not contain RB kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Document elem contains RB kid + + + + + + + + + Document elem should not contain RT kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Document elem contains RT kid + + + + + + + + + Document elem should not contain RP kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Document elem contains RP kid + + + + + + + + + Document elem should not contain Warichu kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Document elem contains Warichu kid + + + + + + + + + Document elem should not contain WT kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Document elem contains WT kid + + + + + + + + + Document elem should not contain WP kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Document elem contains WP kid + + + + + + + + + Document elem should not contain LI kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Document elem contains LI kid + + + + + + + + + Document elem should not contain LBody kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Document elem contains LBody kid + + + + + + + + + Document elem should not contain BibEntry kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Document elem contains BibEntry kid + + + + + + + + + Document elem should not contain TR kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Document elem contains TR kid + + + + + + + + + Document elem should not contain TH kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Document elem contains TH kid + + + + + + + + + Document elem should not contain TD kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Document elem contains TD kid + + + + + + + + + Document elem should not contain THead kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Document elem contains THead kid + + + + + + + + + Document elem should not contain TBody kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Document elem contains TBody kid + + + + + + + + + Document elem should not contain TFoot kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Document elem contains TFoot kid + + + + + + + + + Document elem should not contain Caption kid + (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Document elem contains Caption kid + + + + + + + + + Document elem should not contain content item kid + (standardType != 'Document') || (hasContentItems == false) + + Document elem contains content item kid + + + + + + + + + DocumentFragment elem should not contain TOCI kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + DocumentFragment elem contains TOCI kid + + + + + + + + + DocumentFragment elem should contain zero or one H kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + DocumentFragment contains more than one H kid + + + + + + + + + DocumentFragment elem should not contain Sub kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + DocumentFragment elem contains Sub kid + + + + + + + + + DocumentFragment elem should not contain Lbl kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + DocumentFragment elem contains Lbl kid + + + + + + + + + DocumentFragment elem should not contain Em kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + DocumentFragment elem contains Em kid + + + + + + + + + DocumentFragment elem should not contain Strong kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + DocumentFragment elem contains Strong kid + + + + + + + + + DocumentFragment elem should not contain Span kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + DocumentFragment elem contains Span kid + + + + + + + + + DocumentFragment elem should not contain Quote kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + DocumentFragment elem contains Quote kid + + + + + + + + + DocumentFragment elem should not contain Reference kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + DocumentFragment elem contains Reference kid + + + + + + + + + DocumentFragment elem should not contain Ruby kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + DocumentFragment elem contains Ruby kid + + + + + + + + + DocumentFragment elem should not contain RB kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + DocumentFragment elem contains RB kid + + + + + + + + + DocumentFragment elem should not contain RT kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + DocumentFragment elem contains RT kid + + + + + + + + + DocumentFragment elem should not contain RP kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + DocumentFragment elem contains RP kid + + + + + + + + + DocumentFragment elem should not contain Warichu kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + DocumentFragment elem contains Warichu kid + + + + + + + + + DocumentFragment elem should not contain WT kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + DocumentFragment elem contains WT kid + + + + + + + + + DocumentFragment elem should not contain WP kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + DocumentFragment elem contains WP kid + + + + + + + + + DocumentFragment elem should not contain LI kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + DocumentFragment elem contains LI kid + + + + + + + + + DocumentFragment elem should not contain LBody kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + DocumentFragment elem contains LBody kid + + + + + + + + + DocumentFragment elem should not contain BibEntry kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + DocumentFragment elem contains BibEntry kid + + + + + + + + + DocumentFragment elem should not contain TR kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + DocumentFragment elem contains TR kid + + + + + + + + + DocumentFragment elem should not contain TH kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + DocumentFragment elem contains TH kid + + + + + + + + + DocumentFragment elem should not contain TD kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + DocumentFragment elem contains TD kid + + + + + + + + + DocumentFragment elem should not contain THead kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + DocumentFragment elem contains THead kid + + + + + + + + + DocumentFragment elem should not contain TBody kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + DocumentFragment elem contains TBody kid + + + + + + + + + DocumentFragment elem should not contain TFoot kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + DocumentFragment elem contains TFoot kid + + + + + + + + + DocumentFragment elem should not contain Caption kid + (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + DocumentFragment elem contains Caption kid + + + + + + + + + DocumentFragment elem should not contain content item kid + (standardType != 'DocumentFragment') || (hasContentItems == false) + + DocumentFragment elem contains content item kid + + + + + + + + + Part elem should not contain Em kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + Part elem contains Em kid + + + + + + + + + Part elem should not contain Strong kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + Part elem contains Strong kid + + + + + + + + + Part elem should not contain Span kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Part elem contains Span kid + + + + + + + + + Part elem should not contain Quote kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Part elem contains Quote kid + + + + + + + + + Part elem should not contain Ruby kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Part elem contains Ruby kid + + + + + + + + + Part elem should not contain RB kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Part elem contains RB kid + + + + + + + + + Part elem should not contain RT kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Part elem contains RT kid + + + + + + + + + Part elem should not contain RP kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Part elem contains RP kid + + + + + + + + + Part elem should not contain Warichu kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Part elem contains Warichu kid + + + + + + + + + Part elem should not contain WT kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Part elem contains WT kid + + + + + + + + + Part elem should not contain WP kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Part elem contains WP kid + + + + + + + + + Part elem should not contain LI kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Part elem contains LI kid + + + + + + + + + Part elem should not contain LBody kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Part elem contains LBody kid + + + + + + + + + Part elem should not contain TR kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Part elem contains TR kid + + + + + + + + + Part elem should not contain TH kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Part elem contains TH kid + + + + + + + + + Part elem should not contain TD kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Part elem contains TD kid + + + + + + + + + Part elem should not contain THead kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Part elem contains THead kid + + + + + + + + + Part elem should not contain TBody kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Part elem contains TBody kid + + + + + + + + + Part elem should not contain TFoot kid + (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Part elem contains TFoot kid + + + + + + + + + Part elem should not contain content item kid + (standardType != 'Part') || (hasContentItems == false) + + Part elem contains content item kid + + + + + + + + + Div elem should not contain content item kid + (standardType != 'Div') || (hasContentItems == false) + + Div elem contains content item kid + + + + + + + + + Art elem should not contain Document kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Art elem contains Document kid + + + + + + + + + Art elem should not contain Art kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Art elem contains Art kid + + + + + + + + + Art elem should not contain TOCI kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Art elem contains TOCI kid + + + + + + + + + Art elem should contain zero or one H kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Art contains more than one H kid + + + + + + + + + Art elem should not contain Sub kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Art elem contains Sub kid + + + + + + + + + Art elem should not contain Em kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + Art elem contains Em kid + + + + + + + + + Art elem should not contain Strong kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + Art elem contains Strong kid + + + + + + + + + Art elem should not contain Span kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Art elem contains Span kid + + + + + + + + + Art elem should not contain Quote kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Art elem contains Quote kid + + + + + + + + + Art elem should not contain Reference kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Art elem contains Reference kid + + + + + + + + + Art elem should not contain Ruby kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Art elem contains Ruby kid + + + + + + + + + Art elem should not contain RB kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Art elem contains RB kid + + + + + + + + + Art elem should not contain RT kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Art elem contains RT kid + + + + + + + + + Art elem should not contain RP kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Art elem contains RP kid + + + + + + + + + Art elem should not contain Warichu kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Art elem contains Warichu kid + + + + + + + + + Art elem should not contain WT kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Art elem contains WT kid + + + + + + + + + Art elem should not contain WP kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Art elem contains WP kid + + + + + + + + + Art elem should not contain LI kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Art elem contains LI kid + + + + + + + + + Art elem should not contain LBody kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Art elem contains LBody kid + + + + + + + + + Art elem should not contain BibEntry kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Art elem contains BibEntry kid + + + + + + + + + Art elem should not contain TR kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Art elem contains TR kid + + + + + + + + + Art elem should not contain TH kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Art elem contains TH kid + + + + + + + + + Art elem should not contain TD kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Art elem contains TD kid + + + + + + + + + Art elem should not contain THead kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Art elem contains THead kid + + + + + + + + + Art elem should not contain TBody kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Art elem contains TBody kid + + + + + + + + + Art elem should not contain TFoot kid + (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Art elem contains TFoot kid + + + + + + + + + Art elem should not contain content item kid + (standardType != 'Art') || (hasContentItems == false) + + Art elem contains content item kid + + + + + + + + + Sect elem should not contain Document kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Sect elem contains Document kid + + + + + + + + + Sect elem should not contain TOCI kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Sect elem contains TOCI kid + + + + + + + + + Sect elem should contain zero or one H kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Sect contains more than one H kid + + + + + + + + + Sect elem should not contain Sub kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Sect elem contains Sub kid + + + + + + + + + Sect elem should not contain Em kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + Sect elem contains Em kid + + + + + + + + + Sect elem should not contain Strong kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + Sect elem contains Strong kid + + + + + + + + + Sect elem should not contain Span kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Sect elem contains Span kid + + + + + + + + + Sect elem should not contain Quote kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Sect elem contains Quote kid + + + + + + + + + Sect elem should not contain Reference kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Sect elem contains Reference kid + + + + + + + + + Sect elem should not contain Ruby kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Sect elem contains Ruby kid + + + + + + + + + Sect elem should not contain RB kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Sect elem contains RB kid + + + + + + + + + Sect elem should not contain RT kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Sect elem contains RT kid + + + + + + + + + Sect elem should not contain RP kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Sect elem contains RP kid + + + + + + + + + Sect elem should not contain Warichu kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Sect elem contains Warichu kid + + + + + + + + + Sect elem should not contain WT kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Sect elem contains WT kid + + + + + + + + + Sect elem should not contain WP kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Sect elem contains WP kid + + + + + + + + + Sect elem should not contain LI kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Sect elem contains LI kid + + + + + + + + + Sect elem should not contain LBody kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Sect elem contains LBody kid + + + + + + + + + Sect elem should not contain BibEntry kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Sect elem contains BibEntry kid + + + + + + + + + Sect elem should not contain TR kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Sect elem contains TR kid + + + + + + + + + Sect elem should not contain TH kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Sect elem contains TH kid + + + + + + + + + Sect elem should not contain TD kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Sect elem contains TD kid + + + + + + + + + Sect elem should not contain THead kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Sect elem contains THead kid + + + + + + + + + Sect elem should not contain TBody kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Sect elem contains TBody kid + + + + + + + + + Sect elem should not contain TFoot kid + (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Sect elem contains TFoot kid + + + + + + + + + Sect elem should not contain content item kid + (standardType != 'Sect') || (hasContentItems == false) + + Sect elem contains content item kid + + + + + + + + + TOC elem should not contain Document kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TOC elem contains Document kid + + + + + + + + + TOC elem should not contain DocumentFragment kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + TOC elem contains DocumentFragment kid + + + + + + + + + TOC elem should not contain Part kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TOC elem contains Part kid + + + + + + + + + TOC elem should not contain Art kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + TOC elem contains Art kid + + + + + + + + + TOC elem should not contain Div kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + TOC elem contains Div kid + + + + + + + + + TOC elem should not contain Sect kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + TOC elem contains Sect kid + + + + + + + + + TOC elem should not contain Aside kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + TOC elem contains Aside kid + + + + + + + + + TOC elem should not contain BlockQuote kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TOC elem contains BlockQuote kid + + + + + + + + + TOC elem should not contain P kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + TOC elem contains P kid + + + + + + + + + TOC elem should not contain Note kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + TOC elem contains Note kid + + + + + + + + + TOC elem should not contain Code kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + TOC elem contains Code kid + + + + + + + + + TOC elem should not contain Hn kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + TOC elem contains Hn kid + + + + + + + + + TOC elem should not contain H kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + TOC elem contains H kid + + + + + + + + + TOC elem should not contain Title kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + TOC elem contains Title kid + + + + + + + + + TOC elem should not contain Sub kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + TOC elem contains Sub kid + + + + + + + + + TOC elem should not contain Lbl kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + TOC elem contains Lbl kid + + + + + + + + + TOC elem should not contain Em kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + TOC elem contains Em kid + + + + + + + + + TOC elem should not contain Strong kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + TOC elem contains Strong kid + + + + + + + + + TOC elem should not contain Span kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + TOC elem contains Span kid + + + + + + + + + TOC elem should not contain Quote kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + TOC elem contains Quote kid + + + + + + + + + TOC elem should not contain Link kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + TOC elem contains Link kid + + + + + + + + + TOC elem should not contain Reference kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + TOC elem contains Reference kid + + + + + + + + + TOC elem should not contain Annot kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + TOC elem contains Annot kid + + + + + + + + + TOC elem should not contain Form kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + TOC elem contains Form kid + + + + + + + + + TOC elem should not contain Ruby kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + TOC elem contains Ruby kid + + + + + + + + + TOC elem should not contain RB kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TOC elem contains RB kid + + + + + + + + + TOC elem should not contain RT kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TOC elem contains RT kid + + + + + + + + + TOC elem should not contain RP kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TOC elem contains RP kid + + + + + + + + + TOC elem should not contain Warichu kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + TOC elem contains Warichu kid + + + + + + + + + TOC elem should not contain WT kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TOC elem contains WT kid + + + + + + + + + TOC elem should not contain WP kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TOC elem contains WP kid + + + + + + + + + TOC elem should not contain FENote kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + TOC elem contains FENote kid + + + + + + + + + TOC elem should not contain Index kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + TOC elem contains Index kid + + + + + + + + + TOC elem should not contain L kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + TOC elem contains L kid + + + + + + + + + TOC elem should not contain LI kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TOC elem contains LI kid + + + + + + + + + TOC elem should not contain LBody kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TOC elem contains LBody kid + + + + + + + + + TOC elem should not contain BibEntry kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + TOC elem contains BibEntry kid + + + + + + + + + TOC elem should not contain Table kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + TOC elem contains Table kid + + + + + + + + + TOC elem should not contain TR kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + TOC elem contains TR kid + + + + + + + + + TOC elem should not contain TH kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TOC elem contains TH kid + + + + + + + + + TOC elem should not contain TD kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TOC elem contains TD kid + + + + + + + + + TOC elem should not contain THead kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TOC elem contains THead kid + + + + + + + + + TOC elem should not contain TBody kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TOC elem contains TBody kid + + + + + + + + + TOC elem should not contain TFoot kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TOC elem contains TFoot kid + + + + + + + + + TOC elem should not contain Caption kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TOC elem contains Caption kid + + + + + + + + + TOC elem should not contain Figure kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + TOC elem contains Figure kid + + + + + + + + + TOC elem should not contain Formula kid + (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + TOC elem contains Formula kid + + + + + + + + + TOC elem should not contain content item kid + (standardType != 'TOC') || (hasContentItems == false) + + TOC elem contains content item kid + + + + + + + + + TOCI elem should not contain Document kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TOCI elem contains Document kid + + + + + + + + + TOCI elem should not contain DocumentFragment kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + TOCI elem contains DocumentFragment kid + + + + + + + + + TOCI elem should not contain Part kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TOCI elem contains Part kid + + + + + + + + + TOCI elem should not contain Art kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + TOCI elem contains Art kid + + + + + + + + + TOCI elem should not contain Sect kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + TOCI elem contains Sect kid + + + + + + + + + TOCI elem should not contain TOCI kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TOCI elem contains TOCI kid + + + + + + + + + TOCI elem should not contain Aside kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + TOCI elem contains Aside kid + + + + + + + + + TOCI elem should not contain BlockQuote kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TOCI elem contains BlockQuote kid + + + + + + + + + TOCI elem should not contain Note kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + TOCI elem contains Note kid + + + + + + + + + TOCI elem should not contain Code kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + TOCI elem contains Code kid + + + + + + + + + TOCI elem should not contain Hn kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + TOCI elem contains Hn kid + + + + + + + + + TOCI elem should not contain H kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + TOCI elem contains H kid + + + + + + + + + TOCI elem should not contain Title kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + TOCI elem contains Title kid + + + + + + + + + TOCI elem should not contain Sub kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + TOCI elem contains Sub kid + + + + + + + + + TOCI elem should not contain Em kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + TOCI elem contains Em kid + + + + + + + + + TOCI elem should not contain Strong kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + TOCI elem contains Strong kid + + + + + + + + + TOCI elem should not contain Span kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + TOCI elem contains Span kid + + + + + + + + + TOCI elem should not contain Quote kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + TOCI elem contains Quote kid + + + + + + + + + TOCI elem should not contain Link kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + TOCI elem contains Link kid + + + + + + + + + TOCI elem should not contain Annot kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + TOCI elem contains Annot kid + + + + + + + + + TOCI elem should not contain Form kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + TOCI elem contains Form kid + + + + + + + + + TOCI elem should not contain Ruby kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + TOCI elem contains Ruby kid + + + + + + + + + TOCI elem should not contain RB kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TOCI elem contains RB kid + + + + + + + + + TOCI elem should not contain RT kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TOCI elem contains RT kid + + + + + + + + + TOCI elem should not contain RP kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TOCI elem contains RP kid + + + + + + + + + TOCI elem should not contain Warichu kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + TOCI elem contains Warichu kid + + + + + + + + + TOCI elem should not contain WT kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TOCI elem contains WT kid + + + + + + + + + TOCI elem should not contain WP kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TOCI elem contains WP kid + + + + + + + + + TOCI elem should not contain FENote kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + TOCI elem contains FENote kid + + + + + + + + + TOCI elem should not contain Index kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + TOCI elem contains Index kid + + + + + + + + + TOCI elem should not contain L kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + TOCI elem contains L kid + + + + + + + + + TOCI elem should not contain LI kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TOCI elem contains LI kid + + + + + + + + + TOCI elem should not contain LBody kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TOCI elem contains LBody kid + + + + + + + + + TOCI elem should not contain BibEntry kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + TOCI elem contains BibEntry kid + + + + + + + + + TOCI elem should not contain Table kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + TOCI elem contains Table kid + + + + + + + + + TOCI elem should not contain TR kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + TOCI elem contains TR kid + + + + + + + + + TOCI elem should not contain TH kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TOCI elem contains TH kid + + + + + + + + + TOCI elem should not contain TD kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TOCI elem contains TD kid + + + + + + + + + TOCI elem should not contain THead kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TOCI elem contains THead kid + + + + + + + + + TOCI elem should not contain TBody kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TOCI elem contains TBody kid + + + + + + + + + TOCI elem should not contain TFoot kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TOCI elem contains TFoot kid + + + + + + + + + TOCI elem should not contain Caption kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TOCI elem contains Caption kid + + + + + + + + + TOCI elem should not contain Figure kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + TOCI elem contains Figure kid + + + + + + + + + TOCI elem should not contain Formula kid + (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + TOCI elem contains Formula kid + + + + + + + + + TOCI elem should not contain content item kid + (standardType != 'TOCI') || (hasContentItems == false) + + TOCI elem contains content item kid + + + + + + + + + Aside elem should not contain TOCI kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Aside elem contains TOCI kid + + + + + + + + + Aside elem should not contain Aside kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Aside elem contains Aside kid + + + + + + + + + Aside elem should not contain BlockQuote kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Aside elem contains BlockQuote kid + + + + + + + + + Aside elem should contain zero or one H kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Aside contains more than one H kid + + + + + + + + + Aside elem should not contain Title kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Aside elem contains Title kid + + + + + + + + + Aside elem should not contain Sub kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Aside elem contains Sub kid + + + + + + + + + Aside elem should not contain Em kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + Aside elem contains Em kid + + + + + + + + + Aside elem should not contain Strong kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + Aside elem contains Strong kid + + + + + + + + + Aside elem should not contain Span kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Aside elem contains Span kid + + + + + + + + + Aside elem should not contain Quote kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Aside elem contains Quote kid + + + + + + + + + Aside elem should not contain Ruby kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Aside elem contains Ruby kid + + + + + + + + + Aside elem should not contain RB kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Aside elem contains RB kid + + + + + + + + + Aside elem should not contain RT kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Aside elem contains RT kid + + + + + + + + + Aside elem should not contain RP kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Aside elem contains RP kid + + + + + + + + + Aside elem should not contain Warichu kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Aside elem contains Warichu kid + + + + + + + + + Aside elem should not contain WT kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Aside elem contains WT kid + + + + + + + + + Aside elem should not contain WP kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Aside elem contains WP kid + + + + + + + + + Aside elem should not contain LI kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Aside elem contains LI kid + + + + + + + + + Aside elem should not contain LBody kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Aside elem contains LBody kid + + + + + + + + + Aside elem should not contain BibEntry kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Aside elem contains BibEntry kid + + + + + + + + + Aside elem should not contain TR kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Aside elem contains TR kid + + + + + + + + + Aside elem should not contain TH kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Aside elem contains TH kid + + + + + + + + + Aside elem should not contain TD kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Aside elem contains TD kid + + + + + + + + + Aside elem should not contain THead kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Aside elem contains THead kid + + + + + + + + + Aside elem should not contain TBody kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Aside elem contains TBody kid + + + + + + + + + Aside elem should not contain TFoot kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Aside elem contains TFoot kid + + + + + + + + + Aside elem should contain zero or one Caption kid + (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Aside contains more than one Caption kid + + + + + + + + + BlockQuote elem should not contain TOCI kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + BlockQuote elem contains TOCI kid + + + + + + + + + BlockQuote elem should not contain Aside kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + BlockQuote elem contains Aside kid + + + + + + + + + BlockQuote elem should not contain BlockQuote kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + BlockQuote elem contains BlockQuote kid + + + + + + + + + BlockQuote elem should contain zero or one H kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + BlockQuote contains more than one H kid + + + + + + + + + BlockQuote elem should not contain Title kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + BlockQuote elem contains Title kid + + + + + + + + + BlockQuote elem should not contain Sub kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + BlockQuote elem contains Sub kid + + + + + + + + + BlockQuote elem should not contain Em kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + BlockQuote elem contains Em kid + + + + + + + + + BlockQuote elem should not contain Strong kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + BlockQuote elem contains Strong kid + + + + + + + + + BlockQuote elem should not contain Span kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + BlockQuote elem contains Span kid + + + + + + + + + BlockQuote elem should not contain Quote kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + BlockQuote elem contains Quote kid + + + + + + + + + BlockQuote elem should not contain Ruby kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + BlockQuote elem contains Ruby kid + + + + + + + + + BlockQuote elem should not contain RB kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + BlockQuote elem contains RB kid + + + + + + + + + BlockQuote elem should not contain RT kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + BlockQuote elem contains RT kid + + + + + + + + + BlockQuote elem should not contain RP kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + BlockQuote elem contains RP kid + + + + + + + + + BlockQuote elem should not contain Warichu kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + BlockQuote elem contains Warichu kid + + + + + + + + + BlockQuote elem should not contain WT kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + BlockQuote elem contains WT kid + + + + + + + + + BlockQuote elem should not contain WP kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + BlockQuote elem contains WP kid + + + + + + + + + BlockQuote elem should not contain LI kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + BlockQuote elem contains LI kid + + + + + + + + + BlockQuote elem should not contain LBody kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + BlockQuote elem contains LBody kid + + + + + + + + + BlockQuote elem should not contain BibEntry kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + BlockQuote elem contains BibEntry kid + + + + + + + + + BlockQuote elem should not contain TR kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + BlockQuote elem contains TR kid + + + + + + + + + BlockQuote elem should not contain TH kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + BlockQuote elem contains TH kid + + + + + + + + + BlockQuote elem should not contain TD kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + BlockQuote elem contains TD kid + + + + + + + + + BlockQuote elem should not contain THead kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + BlockQuote elem contains THead kid + + + + + + + + + BlockQuote elem should not contain TBody kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + BlockQuote elem contains TBody kid + + + + + + + + + BlockQuote elem should not contain TFoot kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + BlockQuote elem contains TFoot kid + + + + + + + + + BlockQuote elem should contain zero or one Caption kid + (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + BlockQuote contains more than one Caption kid + + + + + + + + + Private elem should contain zero or one H kid + (standardType != 'Private') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Private contains more than one H kid + + + + + + + + + Private elem should contain zero or one Caption kid + (standardType != 'Private') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Private contains more than one Caption kid + + + + + + + + + Title elem should not contain Document kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Title elem contains Document kid + + + + + + + + + Title elem should not contain DocumentFragment kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Title elem contains DocumentFragment kid + + + + + + + + + Title elem should not contain Art kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Title elem contains Art kid + + + + + + + + + Title elem should not contain Sect kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Title elem contains Sect kid + + + + + + + + + Title elem should not contain TOC kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Title elem contains TOC kid + + + + + + + + + Title elem should not contain TOCI kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Title elem contains TOCI kid + + + + + + + + + Title elem should not contain Hn kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Title elem contains Hn kid + + + + + + + + + Title elem should not contain H kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Title elem contains H kid + + + + + + + + + Title elem should not contain Title kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Title elem contains Title kid + + + + + + + + + Title elem should not contain Sub kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Title elem contains Sub kid + + + + + + + + + Title elem should not contain RB kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Title elem contains RB kid + + + + + + + + + Title elem should not contain RT kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Title elem contains RT kid + + + + + + + + + Title elem should not contain RP kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Title elem contains RP kid + + + + + + + + + Title elem should not contain WT kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Title elem contains WT kid + + + + + + + + + Title elem should not contain WP kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Title elem contains WP kid + + + + + + + + + Title elem should not contain Index kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Title elem contains Index kid + + + + + + + + + Title elem should not contain LI kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Title elem contains LI kid + + + + + + + + + Title elem should not contain LBody kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Title elem contains LBody kid + + + + + + + + + Title elem should not contain TR kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Title elem contains TR kid + + + + + + + + + Title elem should not contain TH kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Title elem contains TH kid + + + + + + + + + Title elem should not contain TD kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Title elem contains TD kid + + + + + + + + + Title elem should not contain THead kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Title elem contains THead kid + + + + + + + + + Title elem should not contain TBody kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Title elem contains TBody kid + + + + + + + + + Title elem should not contain TFoot kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Title elem contains TFoot kid + + + + + + + + + Title elem should contain zero or one Caption kid + (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Title contains more than one Caption kid + + + + + + + + + Sub elem should not contain Document kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Sub elem contains Document kid + + + + + + + + + Sub elem should not contain DocumentFragment kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Sub elem contains DocumentFragment kid + + + + + + + + + Sub elem should not contain Part kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Sub elem contains Part kid + + + + + + + + + Sub elem should not contain Art kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Sub elem contains Art kid + + + + + + + + + Sub elem should not contain Div kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Sub elem contains Div kid + + + + + + + + + Sub elem should not contain Sect kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Sub elem contains Sect kid + + + + + + + + + Sub elem should not contain TOC kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Sub elem contains TOC kid + + + + + + + + + Sub elem should not contain TOCI kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Sub elem contains TOCI kid + + + + + + + + + Sub elem should not contain Aside kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Sub elem contains Aside kid + + + + + + + + + Sub elem should not contain BlockQuote kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Sub elem contains BlockQuote kid + + + + + + + + + Sub elem should not contain P kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Sub elem contains P kid + + + + + + + + + Sub elem should not contain Hn kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Sub elem contains Hn kid + + + + + + + + + Sub elem should not contain H kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Sub elem contains H kid + + + + + + + + + Sub elem should not contain Title kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Sub elem contains Title kid + + + + + + + + + Sub elem should not contain Sub kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Sub elem contains Sub kid + + + + + + + + + Sub elem should not contain RB kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Sub elem contains RB kid + + + + + + + + + Sub elem should not contain RT kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Sub elem contains RT kid + + + + + + + + + Sub elem should not contain RP kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Sub elem contains RP kid + + + + + + + + + Sub elem should not contain WT kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Sub elem contains WT kid + + + + + + + + + Sub elem should not contain WP kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Sub elem contains WP kid + + + + + + + + + Sub elem should not contain Index kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Sub elem contains Index kid + + + + + + + + + Sub elem should not contain LI kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Sub elem contains LI kid + + + + + + + + + Sub elem should not contain LBody kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Sub elem contains LBody kid + + + + + + + + + Sub elem should not contain Table kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Sub elem contains Table kid + + + + + + + + + Sub elem should not contain TR kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Sub elem contains TR kid + + + + + + + + + Sub elem should not contain TH kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Sub elem contains TH kid + + + + + + + + + Sub elem should not contain TD kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Sub elem contains TD kid + + + + + + + + + Sub elem should not contain THead kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Sub elem contains THead kid + + + + + + + + + Sub elem should not contain TBody kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Sub elem contains TBody kid + + + + + + + + + Sub elem should not contain TFoot kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Sub elem contains TFoot kid + + + + + + + + + Sub elem should not contain Caption kid + (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Sub elem contains Caption kid + + + + + + + + + P elem should not contain Document kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + P elem contains Document kid + + + + + + + + + P elem should not contain DocumentFragment kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + P elem contains DocumentFragment kid + + + + + + + + + P elem should not contain Part kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + P elem contains Part kid + + + + + + + + + P elem should not contain Art kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + P elem contains Art kid + + + + + + + + + P elem should not contain Div kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + P elem contains Div kid + + + + + + + + + P elem should not contain Sect kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + P elem contains Sect kid + + + + + + + + + P elem should not contain TOC kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + P elem contains TOC kid + + + + + + + + + P elem should not contain TOCI kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + P elem contains TOCI kid + + + + + + + + + P elem should not contain Aside kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + P elem contains Aside kid + + + + + + + + + P elem should not contain BlockQuote kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + P elem contains BlockQuote kid + + + + + + + + + P elem should not contain P kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + P elem contains P kid + + + + + + + + + P elem should not contain Hn kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + P elem contains Hn kid + + + + + + + + + P elem should not contain H kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + P elem contains H kid + + + + + + + + + P elem should not contain Title kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + P elem contains Title kid + + + + + + + + + P elem should not contain RB kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + P elem contains RB kid + + + + + + + + + P elem should not contain RT kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + P elem contains RT kid + + + + + + + + + P elem should not contain RP kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + P elem contains RP kid + + + + + + + + + P elem should not contain WT kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + P elem contains WT kid + + + + + + + + + P elem should not contain WP kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + P elem contains WP kid + + + + + + + + + P elem should not contain Index kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + P elem contains Index kid + + + + + + + + + P elem should not contain LI kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + P elem contains LI kid + + + + + + + + + P elem should not contain LBody kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + P elem contains LBody kid + + + + + + + + + P elem should not contain Table kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + P elem contains Table kid + + + + + + + + + P elem should not contain TR kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + P elem contains TR kid + + + + + + + + + P elem should not contain TH kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + P elem contains TH kid + + + + + + + + + P elem should not contain TD kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + P elem contains TD kid + + + + + + + + + P elem should not contain THead kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + P elem contains THead kid + + + + + + + + + P elem should not contain TBody kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + P elem contains TBody kid + + + + + + + + + P elem should not contain TFoot kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + P elem contains TFoot kid + + + + + + + + + P elem should not contain Caption kid + (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + P elem contains Caption kid + + + + + + + + + Note elem should not contain Document kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Note elem contains Document kid + + + + + + + + + Note elem should not contain TOC kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Note elem contains TOC kid + + + + + + + + + Note elem should not contain TOCI kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Note elem contains TOCI kid + + + + + + + + + Note elem should not contain Hn kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Note elem contains Hn kid + + + + + + + + + Note elem should not contain H kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Note elem contains H kid + + + + + + + + + Note elem should not contain Title kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Note elem contains Title kid + + + + + + + + + Note elem should not contain RB kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Note elem contains RB kid + + + + + + + + + Note elem should not contain RT kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Note elem contains RT kid + + + + + + + + + Note elem should not contain RP kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Note elem contains RP kid + + + + + + + + + Note elem should not contain WT kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Note elem contains WT kid + + + + + + + + + Note elem should not contain WP kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Note elem contains WP kid + + + + + + + + + Note elem should not contain LI kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Note elem contains LI kid + + + + + + + + + Note elem should not contain LBody kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Note elem contains LBody kid + + + + + + + + + Note elem should not contain TR kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Note elem contains TR kid + + + + + + + + + Note elem should not contain TH kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Note elem contains TH kid + + + + + + + + + Note elem should not contain TD kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Note elem contains TD kid + + + + + + + + + Note elem should not contain THead kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Note elem contains THead kid + + + + + + + + + Note elem should not contain TBody kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Note elem contains TBody kid + + + + + + + + + Note elem should not contain TFoot kid + (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Note elem contains TFoot kid + + + + + + + + + Code elem should not contain Document kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Code elem contains Document kid + + + + + + + + + Code elem should not contain Art kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Code elem contains Art kid + + + + + + + + + Code elem should not contain Sect kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Code elem contains Sect kid + + + + + + + + + Code elem should not contain TOC kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Code elem contains TOC kid + + + + + + + + + Code elem should not contain TOCI kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Code elem contains TOCI kid + + + + + + + + + Code elem should not contain Aside kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Code elem contains Aside kid + + + + + + + + + Code elem should not contain BlockQuote kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Code elem contains BlockQuote kid + + + + + + + + + Code elem should not contain P kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Code elem contains P kid + + + + + + + + + Code elem should not contain Code kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Code elem contains Code kid + + + + + + + + + Code elem should not contain Hn kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Code elem contains Hn kid + + + + + + + + + Code elem should not contain H kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Code elem contains H kid + + + + + + + + + Code elem should not contain Title kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Code elem contains Title kid + + + + + + + + + Code elem should not contain Sub kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Code elem contains Sub kid + + + + + + + + + Code elem should not contain Lbl kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Code elem contains Lbl kid + + + + + + + + + Code elem should not contain Quote kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Code elem contains Quote kid + + + + + + + + + Code elem should not contain Form kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Code elem contains Form kid + + + + + + + + + Code elem should not contain Ruby kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Code elem contains Ruby kid + + + + + + + + + Code elem should not contain RB kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Code elem contains RB kid + + + + + + + + + Code elem should not contain RT kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Code elem contains RT kid + + + + + + + + + Code elem should not contain RP kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Code elem contains RP kid + + + + + + + + + Code elem should not contain Warichu kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Code elem contains Warichu kid + + + + + + + + + Code elem should not contain WT kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Code elem contains WT kid + + + + + + + + + Code elem should not contain WP kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Code elem contains WP kid + + + + + + + + + Code elem should not contain Index kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Code elem contains Index kid + + + + + + + + + Code elem should not contain L kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Code elem contains L kid + + + + + + + + + Code elem should not contain LI kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Code elem contains LI kid + + + + + + + + + Code elem should not contain LBody kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Code elem contains LBody kid + + + + + + + + + Code elem should not contain Table kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Code elem contains Table kid + + + + + + + + + Code elem should not contain TR kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Code elem contains TR kid + + + + + + + + + Code elem should not contain TH kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Code elem contains TH kid + + + + + + + + + Code elem should not contain TD kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Code elem contains TD kid + + + + + + + + + Code elem should not contain THead kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Code elem contains THead kid + + + + + + + + + Code elem should not contain TBody kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Code elem contains TBody kid + + + + + + + + + Code elem should not contain TFoot kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Code elem contains TFoot kid + + + + + + + + + Code elem should not contain Caption kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Code elem contains Caption kid + + + + + + + + + Code elem should not contain Figure kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + Code elem contains Figure kid + + + + + + + + + Code elem should not contain Formula kid + (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + Code elem contains Formula kid + + + + + + + + + Hn elem should not contain Document kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Hn elem contains Document kid + + + + + + + + + Hn elem should not contain DocumentFragment kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Hn elem contains DocumentFragment kid + + + + + + + + + Hn elem should not contain Part kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Hn elem contains Part kid + + + + + + + + + Hn elem should contain zero or one Art kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1) + + Hn contains more than one Art kid + + + + + + + + + Hn elem should not contain Div kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Hn elem contains Div kid + + + + + + + + + Hn elem should contain zero or one Sect kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1) + + Hn contains more than one Sect kid + + + + + + + + + Hn elem should not contain TOC kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Hn elem contains TOC kid + + + + + + + + + Hn elem should not contain TOCI kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Hn elem contains TOCI kid + + + + + + + + + Hn elem should not contain Aside kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Hn elem contains Aside kid + + + + + + + + + Hn elem should not contain BlockQuote kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Hn elem contains BlockQuote kid + + + + + + + + + Hn elem should not contain P kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Hn elem contains P kid + + + + + + + + + Hn elem should not contain Hn kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Hn elem contains Hn kid + + + + + + + + + Hn elem should not contain H kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Hn elem contains H kid + + + + + + + + + Hn elem should not contain Title kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Hn elem contains Title kid + + + + + + + + + Hn elem should not contain RB kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Hn elem contains RB kid + + + + + + + + + Hn elem should not contain RT kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Hn elem contains RT kid + + + + + + + + + Hn elem should not contain RP kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Hn elem contains RP kid + + + + + + + + + Hn elem should not contain WT kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Hn elem contains WT kid + + + + + + + + + Hn elem should not contain WP kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Hn elem contains WP kid + + + + + + + + + Hn elem should not contain Index kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Hn elem contains Index kid + + + + + + + + + Hn elem should not contain L kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Hn elem contains L kid + + + + + + + + + Hn elem should not contain LI kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Hn elem contains LI kid + + + + + + + + + Hn elem should not contain LBody kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Hn elem contains LBody kid + + + + + + + + + Hn elem should not contain Table kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Hn elem contains Table kid + + + + + + + + + Hn elem should not contain TR kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Hn elem contains TR kid + + + + + + + + + Hn elem should not contain TH kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Hn elem contains TH kid + + + + + + + + + Hn elem should not contain TD kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Hn elem contains TD kid + + + + + + + + + Hn elem should not contain THead kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Hn elem contains THead kid + + + + + + + + + Hn elem should not contain TBody kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Hn elem contains TBody kid + + + + + + + + + Hn elem should not contain TFoot kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Hn elem contains TFoot kid + + + + + + + + + Hn elem should not contain Caption kid + (/^H[1-9][0-9]*$/.test(standardType) == false) || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Hn elem contains Caption kid + + + + + + + + + H elem should not contain Document kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + H elem contains Document kid + + + + + + + + + H elem should not contain DocumentFragment kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + H elem contains DocumentFragment kid + + + + + + + + + H elem should not contain Part kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + H elem contains Part kid + + + + + + + + + H elem should contain zero or one Art kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1) + + H contains more than one Art kid + + + + + + + + + H elem should not contain Div kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + H elem contains Div kid + + + + + + + + + H elem should contain zero or one Sect kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1) + + H contains more than one Sect kid + + + + + + + + + H elem should not contain TOC kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + H elem contains TOC kid + + + + + + + + + H elem should not contain TOCI kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + H elem contains TOCI kid + + + + + + + + + H elem should not contain Aside kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + H elem contains Aside kid + + + + + + + + + H elem should not contain BlockQuote kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + H elem contains BlockQuote kid + + + + + + + + + H elem should not contain P kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + H elem contains P kid + + + + + + + + + H elem should not contain Hn kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + H elem contains Hn kid + + + + + + + + + H elem should not contain H kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + H elem contains H kid + + + + + + + + + H elem should not contain Title kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + H elem contains Title kid + + + + + + + + + H elem should not contain RB kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + H elem contains RB kid + + + + + + + + + H elem should not contain RT kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + H elem contains RT kid + + + + + + + + + H elem should not contain RP kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + H elem contains RP kid + + + + + + + + + H elem should not contain WT kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + H elem contains WT kid + + + + + + + + + H elem should not contain WP kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + H elem contains WP kid + + + + + + + + + H elem should not contain Index kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + H elem contains Index kid + + + + + + + + + H elem should not contain L kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + H elem contains L kid + + + + + + + + + H elem should not contain LI kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + H elem contains LI kid + + + + + + + + + H elem should not contain LBody kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + H elem contains LBody kid + + + + + + + + + H elem should not contain Table kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + H elem contains Table kid + + + + + + + + + H elem should not contain TR kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + H elem contains TR kid + + + + + + + + + H elem should not contain TH kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + H elem contains TH kid + + + + + + + + + H elem should not contain TD kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + H elem contains TD kid + + + + + + + + + H elem should not contain THead kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + H elem contains THead kid + + + + + + + + + H elem should not contain TBody kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + H elem contains TBody kid + + + + + + + + + H elem should not contain TFoot kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + H elem contains TFoot kid + + + + + + + + + H elem should not contain Caption kid + (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + H elem contains Caption kid + + + + + + + + + Lbl elem should not contain Document kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Lbl elem contains Document kid + + + + + + + + + Lbl elem should not contain DocumentFragment kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Lbl elem contains DocumentFragment kid + + + + + + + + + Lbl elem should not contain Part kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Lbl elem contains Part kid + + + + + + + + + Lbl elem should not contain Art kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Lbl elem contains Art kid + + + + + + + + + Lbl elem should not contain Div kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Lbl elem contains Div kid + + + + + + + + + Lbl elem should not contain Sect kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Lbl elem contains Sect kid + + + + + + + + + Lbl elem should not contain TOC kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Lbl elem contains TOC kid + + + + + + + + + Lbl elem should not contain TOCI kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Lbl elem contains TOCI kid + + + + + + + + + Lbl elem should not contain Aside kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Lbl elem contains Aside kid + + + + + + + + + Lbl elem should not contain BlockQuote kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Lbl elem contains BlockQuote kid + + + + + + + + + Lbl elem should not contain P kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Lbl elem contains P kid + + + + + + + + + Lbl elem should not contain Hn kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Lbl elem contains Hn kid + + + + + + + + + Lbl elem should not contain H kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Lbl elem contains H kid + + + + + + + + + Lbl elem should not contain Title kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Lbl elem contains Title kid + + + + + + + + + Lbl elem should not contain Lbl kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Lbl elem contains Lbl kid + + + + + + + + + Lbl elem should not contain RB kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Lbl elem contains RB kid + + + + + + + + + Lbl elem should not contain RT kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Lbl elem contains RT kid + + + + + + + + + Lbl elem should not contain RP kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Lbl elem contains RP kid + + + + + + + + + Lbl elem should not contain WT kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Lbl elem contains WT kid + + + + + + + + + Lbl elem should not contain WP kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Lbl elem contains WP kid + + + + + + + + + Lbl elem should not contain Index kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Lbl elem contains Index kid + + + + + + + + + Lbl elem should not contain L kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Lbl elem contains L kid + + + + + + + + + Lbl elem should not contain LI kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Lbl elem contains LI kid + + + + + + + + + Lbl elem should not contain LBody kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Lbl elem contains LBody kid + + + + + + + + + Lbl elem should not contain Table kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Lbl elem contains Table kid + + + + + + + + + Lbl elem should not contain TR kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Lbl elem contains TR kid + + + + + + + + + Lbl elem should not contain TH kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Lbl elem contains TH kid + + + + + + + + + Lbl elem should not contain TD kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Lbl elem contains TD kid + + + + + + + + + Lbl elem should not contain THead kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Lbl elem contains THead kid + + + + + + + + + Lbl elem should not contain TBody kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Lbl elem contains TBody kid + + + + + + + + + Lbl elem should not contain TFoot kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Lbl elem contains TFoot kid + + + + + + + + + Lbl elem should not contain Caption kid + (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Lbl elem contains Caption kid + + + + + + + + + Em elem should not contain Document kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Em elem contains Document kid + + + + + + + + + Em elem should not contain DocumentFragment kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Em elem contains DocumentFragment kid + + + + + + + + + Em elem should not contain Part kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Em elem contains Part kid + + + + + + + + + Em elem should not contain Art kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Em elem contains Art kid + + + + + + + + + Em elem should not contain Div kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Em elem contains Div kid + + + + + + + + + Em elem should not contain Sect kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Em elem contains Sect kid + + + + + + + + + Em elem should not contain TOC kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Em elem contains TOC kid + + + + + + + + + Em elem should not contain TOCI kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Em elem contains TOCI kid + + + + + + + + + Em elem should not contain Aside kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Em elem contains Aside kid + + + + + + + + + Em elem should not contain BlockQuote kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Em elem contains BlockQuote kid + + + + + + + + + Em elem should not contain P kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Em elem contains P kid + + + + + + + + + Em elem should not contain Hn kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Em elem contains Hn kid + + + + + + + + + Em elem should not contain H kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Em elem contains H kid + + + + + + + + + Em elem should not contain Title kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Em elem contains Title kid + + + + + + + + + Em elem should not contain RB kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Em elem contains RB kid + + + + + + + + + Em elem should not contain RT kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Em elem contains RT kid + + + + + + + + + Em elem should not contain RP kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Em elem contains RP kid + + + + + + + + + Em elem should not contain WT kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Em elem contains WT kid + + + + + + + + + Em elem should not contain WP kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Em elem contains WP kid + + + + + + + + + Em elem should not contain Index kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Em elem contains Index kid + + + + + + + + + Em elem should not contain L kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Em elem contains L kid + + + + + + + + + Em elem should not contain LI kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Em elem contains LI kid + + + + + + + + + Em elem should not contain LBody kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Em elem contains LBody kid + + + + + + + + + Em elem should not contain Table kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Em elem contains Table kid + + + + + + + + + Em elem should not contain TR kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Em elem contains TR kid + + + + + + + + + Em elem should not contain TH kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Em elem contains TH kid + + + + + + + + + Em elem should not contain TD kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Em elem contains TD kid + + + + + + + + + Em elem should not contain THead kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Em elem contains THead kid + + + + + + + + + Em elem should not contain TBody kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Em elem contains TBody kid + + + + + + + + + Em elem should not contain TFoot kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Em elem contains TFoot kid + + + + + + + + + Em elem should not contain Caption kid + (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Em elem contains Caption kid + + + + + + + + + Strong elem should not contain Document kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Strong elem contains Document kid + + + + + + + + + Strong elem should not contain DocumentFragment kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Strong elem contains DocumentFragment kid + + + + + + + + + Strong elem should not contain Part kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Strong elem contains Part kid + + + + + + + + + Strong elem should not contain Art kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Strong elem contains Art kid + + + + + + + + + Strong elem should not contain Div kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Strong elem contains Div kid + + + + + + + + + Strong elem should not contain Sect kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Strong elem contains Sect kid + + + + + + + + + Strong elem should not contain TOC kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Strong elem contains TOC kid + + + + + + + + + Strong elem should not contain TOCI kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Strong elem contains TOCI kid + + + + + + + + + Strong elem should not contain Aside kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Strong elem contains Aside kid + + + + + + + + + Strong elem should not contain BlockQuote kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Strong elem contains BlockQuote kid + + + + + + + + + Strong elem should not contain P kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Strong elem contains P kid + + + + + + + + + Strong elem should not contain Hn kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Strong elem contains Hn kid + + + + + + + + + Strong elem should not contain H kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Strong elem contains H kid + + + + + + + + + Strong elem should not contain Title kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Strong elem contains Title kid + + + + + + + + + Strong elem should not contain RB kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Strong elem contains RB kid + + + + + + + + + Strong elem should not contain RT kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Strong elem contains RT kid + + + + + + + + + Strong elem should not contain RP kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Strong elem contains RP kid + + + + + + + + + Strong elem should not contain WT kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Strong elem contains WT kid + + + + + + + + + Strong elem should not contain WP kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Strong elem contains WP kid + + + + + + + + + Strong elem should not contain Index kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Strong elem contains Index kid + + + + + + + + + Strong elem should not contain L kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Strong elem contains L kid + + + + + + + + + Strong elem should not contain LI kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Strong elem contains LI kid + + + + + + + + + Strong elem should not contain LBody kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Strong elem contains LBody kid + + + + + + + + + Strong elem should not contain Table kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Strong elem contains Table kid + + + + + + + + + Strong elem should not contain TR kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Strong elem contains TR kid + + + + + + + + + Strong elem should not contain TH kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Strong elem contains TH kid + + + + + + + + + Strong elem should not contain TD kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Strong elem contains TD kid + + + + + + + + + Strong elem should not contain THead kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Strong elem contains THead kid + + + + + + + + + Strong elem should not contain TBody kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Strong elem contains TBody kid + + + + + + + + + Strong elem should not contain TFoot kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Strong elem contains TFoot kid + + + + + + + + + Strong elem should not contain Caption kid + (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Strong elem contains Caption kid + + + + + + + + + Span elem should not contain Document kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Span elem contains Document kid + + + + + + + + + Span elem should not contain DocumentFragment kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Span elem contains DocumentFragment kid + + + + + + + + + Span elem should not contain Part kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Span elem contains Part kid + + + + + + + + + Span elem should not contain Art kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Span elem contains Art kid + + + + + + + + + Span elem should not contain Div kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Span elem contains Div kid + + + + + + + + + Span elem should not contain Sect kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Span elem contains Sect kid + + + + + + + + + Span elem should not contain TOC kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Span elem contains TOC kid + + + + + + + + + Span elem should not contain TOCI kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Span elem contains TOCI kid + + + + + + + + + Span elem should not contain Aside kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Span elem contains Aside kid + + + + + + + + + Span elem should not contain BlockQuote kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Span elem contains BlockQuote kid + + + + + + + + + Span elem should not contain P kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Span elem contains P kid + + + + + + + + + Span elem should not contain Hn kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Span elem contains Hn kid + + + + + + + + + Span elem should not contain H kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Span elem contains H kid + + + + + + + + + Span elem should not contain Title kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Span elem contains Title kid + + + + + + + + + Span elem should not contain RB kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Span elem contains RB kid + + + + + + + + + Span elem should not contain RT kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Span elem contains RT kid + + + + + + + + + Span elem should not contain RP kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Span elem contains RP kid + + + + + + + + + Span elem should not contain WT kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Span elem contains WT kid + + + + + + + + + Span elem should not contain WP kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Span elem contains WP kid + + + + + + + + + Span elem should not contain Index kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Span elem contains Index kid + + + + + + + + + Span elem should not contain L kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Span elem contains L kid + + + + + + + + + Span elem should not contain LI kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Span elem contains LI kid + + + + + + + + + Span elem should not contain LBody kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Span elem contains LBody kid + + + + + + + + + Span elem should not contain Table kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Span elem contains Table kid + + + + + + + + + Span elem should not contain TR kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Span elem contains TR kid + + + + + + + + + Span elem should not contain TH kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Span elem contains TH kid + + + + + + + + + Span elem should not contain TD kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Span elem contains TD kid + + + + + + + + + Span elem should not contain THead kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Span elem contains THead kid + + + + + + + + + Span elem should not contain TBody kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Span elem contains TBody kid + + + + + + + + + Span elem should not contain TFoot kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Span elem contains TFoot kid + + + + + + + + + Span elem should not contain Caption kid + (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Span elem contains Caption kid + + + + + + + + + Quote elem should not contain Document kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Quote elem contains Document kid + + + + + + + + + Quote elem should not contain DocumentFragment kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Quote elem contains DocumentFragment kid + + + + + + + + + Quote elem should not contain Part kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Quote elem contains Part kid + + + + + + + + + Quote elem should not contain Art kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Quote elem contains Art kid + + + + + + + + + Quote elem should not contain Div kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Quote elem contains Div kid + + + + + + + + + Quote elem should not contain Sect kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Quote elem contains Sect kid + + + + + + + + + Quote elem should not contain TOC kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Quote elem contains TOC kid + + + + + + + + + Quote elem should not contain TOCI kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Quote elem contains TOCI kid + + + + + + + + + Quote elem should not contain Aside kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Quote elem contains Aside kid + + + + + + + + + Quote elem should not contain BlockQuote kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Quote elem contains BlockQuote kid + + + + + + + + + Quote elem should not contain P kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Quote elem contains P kid + + + + + + + + + Quote elem should not contain Hn kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Quote elem contains Hn kid + + + + + + + + + Quote elem should not contain H kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Quote elem contains H kid + + + + + + + + + Quote elem should not contain Title kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Quote elem contains Title kid + + + + + + + + + Quote elem should not contain RB kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Quote elem contains RB kid + + + + + + + + + Quote elem should not contain RT kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Quote elem contains RT kid + + + + + + + + + Quote elem should not contain RP kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Quote elem contains RP kid + + + + + + + + + Quote elem should not contain WT kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Quote elem contains WT kid + + + + + + + + + Quote elem should not contain WP kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Quote elem contains WP kid + + + + + + + + + Quote elem should not contain Index kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Quote elem contains Index kid + + + + + + + + + Quote elem should not contain L kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Quote elem contains L kid + + + + + + + + + Quote elem should not contain LI kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Quote elem contains LI kid + + + + + + + + + Quote elem should not contain LBody kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Quote elem contains LBody kid + + + + + + + + + Quote elem should not contain Table kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Quote elem contains Table kid + + + + + + + + + Quote elem should not contain TR kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Quote elem contains TR kid + + + + + + + + + Quote elem should not contain TH kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Quote elem contains TH kid + + + + + + + + + Quote elem should not contain TD kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Quote elem contains TD kid + + + + + + + + + Quote elem should not contain THead kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Quote elem contains THead kid + + + + + + + + + Quote elem should not contain TBody kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Quote elem contains TBody kid + + + + + + + + + Quote elem should not contain TFoot kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Quote elem contains TFoot kid + + + + + + + + + Quote elem should not contain Caption kid + (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Quote elem contains Caption kid + + + + + + + + + Link elem should not contain Document kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Link elem contains Document kid + + + + + + + + + Link elem should not contain TOC kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Link elem contains TOC kid + + + + + + + + + Link elem should not contain TOCI kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Link elem contains TOCI kid + + + + + + + + + Link elem should not contain Link kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Link elem contains Link kid + + + + + + + + + Link elem should not contain RB kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Link elem contains RB kid + + + + + + + + + Link elem should not contain RT kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Link elem contains RT kid + + + + + + + + + Link elem should not contain RP kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Link elem contains RP kid + + + + + + + + + Link elem should not contain WT kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Link elem contains WT kid + + + + + + + + + Link elem should not contain WP kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Link elem contains WP kid + + + + + + + + + Link elem should not contain Index kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Link elem contains Index kid + + + + + + + + + Link elem should not contain LI kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Link elem contains LI kid + + + + + + + + + Link elem should not contain LBody kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Link elem contains LBody kid + + + + + + + + + Link elem should not contain TR kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Link elem contains TR kid + + + + + + + + + Link elem should not contain TH kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Link elem contains TH kid + + + + + + + + + Link elem should not contain TD kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Link elem contains TD kid + + + + + + + + + Link elem should not contain THead kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Link elem contains THead kid + + + + + + + + + Link elem should not contain TBody kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Link elem contains TBody kid + + + + + + + + + Link elem should not contain TFoot kid + (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Link elem contains TFoot kid + + + + + + + + + Reference elem should not contain Document kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Reference elem contains Document kid + + + + + + + + + Reference elem should not contain DocumentFragment kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Reference elem contains DocumentFragment kid + + + + + + + + + Reference elem should not contain Part kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Reference elem contains Part kid + + + + + + + + + Reference elem should not contain Art kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Reference elem contains Art kid + + + + + + + + + Reference elem should not contain Div kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Reference elem contains Div kid + + + + + + + + + Reference elem should not contain Sect kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Reference elem contains Sect kid + + + + + + + + + Reference elem should not contain TOC kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Reference elem contains TOC kid + + + + + + + + + Reference elem should not contain TOCI kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Reference elem contains TOCI kid + + + + + + + + + Reference elem should not contain Aside kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Reference elem contains Aside kid + + + + + + + + + Reference elem should not contain BlockQuote kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Reference elem contains BlockQuote kid + + + + + + + + + Reference elem should not contain P kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Reference elem contains P kid + + + + + + + + + Reference elem should not contain Code kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Reference elem contains Code kid + + + + + + + + + Reference elem should not contain Hn kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Reference elem contains Hn kid + + + + + + + + + Reference elem should not contain H kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Reference elem contains H kid + + + + + + + + + Reference elem should not contain Title kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Reference elem contains Title kid + + + + + + + + + Reference elem should not contain Sub kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Reference elem contains Sub kid + + + + + + + + + Reference elem should not contain Quote kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Reference elem contains Quote kid + + + + + + + + + Reference elem should not contain Reference kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Reference elem contains Reference kid + + + + + + + + + Reference elem should not contain Form kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Reference elem contains Form kid + + + + + + + + + Reference elem should not contain Ruby kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Reference elem contains Ruby kid + + + + + + + + + Reference elem should not contain RB kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Reference elem contains RB kid + + + + + + + + + Reference elem should not contain RT kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Reference elem contains RT kid + + + + + + + + + Reference elem should not contain RP kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Reference elem contains RP kid + + + + + + + + + Reference elem should not contain Warichu kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Reference elem contains Warichu kid + + + + + + + + + Reference elem should not contain WT kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Reference elem contains WT kid + + + + + + + + + Reference elem should not contain WP kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Reference elem contains WP kid + + + + + + + + + Reference elem should not contain Index kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Reference elem contains Index kid + + + + + + + + + Reference elem should not contain L kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Reference elem contains L kid + + + + + + + + + Reference elem should not contain LI kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Reference elem contains LI kid + + + + + + + + + Reference elem should not contain LBody kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Reference elem contains LBody kid + + + + + + + + + Reference elem should not contain Table kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Reference elem contains Table kid + + + + + + + + + Reference elem should not contain TR kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Reference elem contains TR kid + + + + + + + + + Reference elem should not contain TH kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Reference elem contains TH kid + + + + + + + + + Reference elem should not contain TD kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Reference elem contains TD kid + + + + + + + + + Reference elem should not contain THead kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Reference elem contains THead kid + + + + + + + + + Reference elem should not contain TBody kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Reference elem contains TBody kid + + + + + + + + + Reference elem should not contain TFoot kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Reference elem contains TFoot kid + + + + + + + + + Reference elem should not contain Caption kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Reference elem contains Caption kid + + + + + + + + + Reference elem should not contain Formula kid + (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + Reference elem contains Formula kid + + + + + + + + + Annot elem should not contain Document kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Annot elem contains Document kid + + + + + + + + + Annot elem should not contain TOC kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Annot elem contains TOC kid + + + + + + + + + Annot elem should not contain TOCI kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Annot elem contains TOCI kid + + + + + + + + + Annot elem should not contain Private kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0) + + Annot elem contains Private kid + + + + + + + + + Annot elem should not contain RB kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Annot elem contains RB kid + + + + + + + + + Annot elem should not contain RT kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Annot elem contains RT kid + + + + + + + + + Annot elem should not contain RP kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Annot elem contains RP kid + + + + + + + + + Annot elem should not contain WT kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Annot elem contains WT kid + + + + + + + + + Annot elem should not contain WP kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Annot elem contains WP kid + + + + + + + + + Annot elem should not contain Index kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Annot elem contains Index kid + + + + + + + + + Annot elem should not contain LI kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Annot elem contains LI kid + + + + + + + + + Annot elem should not contain LBody kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Annot elem contains LBody kid + + + + + + + + + Annot elem should not contain TR kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Annot elem contains TR kid + + + + + + + + + Annot elem should not contain TH kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Annot elem contains TH kid + + + + + + + + + Annot elem should not contain TD kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Annot elem contains TD kid + + + + + + + + + Annot elem should not contain THead kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Annot elem contains THead kid + + + + + + + + + Annot elem should not contain TBody kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Annot elem contains TBody kid + + + + + + + + + Annot elem should not contain TFoot kid + (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Annot elem contains TFoot kid + + + + + + + + + Form elem should not contain Document kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Form elem contains Document kid + + + + + + + + + Form elem should not contain DocumentFragment kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Form elem contains DocumentFragment kid + + + + + + + + + Form elem should not contain Art kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Form elem contains Art kid + + + + + + + + + Form elem should not contain Sect kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Form elem contains Sect kid + + + + + + + + + Form elem should not contain TOC kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Form elem contains TOC kid + + + + + + + + + Form elem should not contain TOCI kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Form elem contains TOCI kid + + + + + + + + + Form elem should not contain Aside kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Form elem contains Aside kid + + + + + + + + + Form elem should not contain BlockQuote kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Form elem contains BlockQuote kid + + + + + + + + + Form elem should not contain P kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Form elem contains P kid + + + + + + + + + Form elem should not contain Hn kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Form elem contains Hn kid + + + + + + + + + Form elem should not contain H kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Form elem contains H kid + + + + + + + + + Form elem should not contain Title kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Form elem contains Title kid + + + + + + + + + Form elem should not contain Sub kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Form elem contains Sub kid + + + + + + + + + Form elem should not contain Em kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + Form elem contains Em kid + + + + + + + + + Form elem should not contain Strong kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + Form elem contains Strong kid + + + + + + + + + Form elem should not contain Span kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Form elem contains Span kid + + + + + + + + + Form elem should not contain Quote kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Form elem contains Quote kid + + + + + + + + + Form elem should not contain Link kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Form elem contains Link kid + + + + + + + + + Form elem should not contain Annot kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + Form elem contains Annot kid + + + + + + + + + Form elem should not contain Form kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Form elem contains Form kid + + + + + + + + + Form elem should not contain Ruby kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Form elem contains Ruby kid + + + + + + + + + Form elem should not contain RB kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Form elem contains RB kid + + + + + + + + + Form elem should not contain RT kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Form elem contains RT kid + + + + + + + + + Form elem should not contain RP kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Form elem contains RP kid + + + + + + + + + Form elem should not contain Warichu kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Form elem contains Warichu kid + + + + + + + + + Form elem should not contain WT kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Form elem contains WT kid + + + + + + + + + Form elem should not contain WP kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Form elem contains WP kid + + + + + + + + + Form elem should not contain Index kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Form elem contains Index kid + + + + + + + + + Form elem should not contain LI kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Form elem contains LI kid + + + + + + + + + Form elem should not contain LBody kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Form elem contains LBody kid + + + + + + + + + Form elem should not contain TR kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Form elem contains TR kid + + + + + + + + + Form elem should not contain TH kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Form elem contains TH kid + + + + + + + + + Form elem should not contain TD kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Form elem contains TD kid + + + + + + + + + Form elem should not contain THead kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Form elem contains THead kid + + + + + + + + + Form elem should not contain TBody kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Form elem contains TBody kid + + + + + + + + + Form elem should not contain TFoot kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Form elem contains TFoot kid + + + + + + + + + Form elem should contain zero or one Caption kid + (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Form contains more than one Caption kid + + + + + + + + + Ruby elem should not contain Document kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Ruby elem contains Document kid + + + + + + + + + Ruby elem should not contain DocumentFragment kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Ruby elem contains DocumentFragment kid + + + + + + + + + Ruby elem should not contain Part kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Ruby elem contains Part kid + + + + + + + + + Ruby elem should not contain Art kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Ruby elem contains Art kid + + + + + + + + + Ruby elem should not contain Div kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Ruby elem contains Div kid + + + + + + + + + Ruby elem should not contain Sect kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Ruby elem contains Sect kid + + + + + + + + + Ruby elem should not contain TOC kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Ruby elem contains TOC kid + + + + + + + + + Ruby elem should not contain TOCI kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Ruby elem contains TOCI kid + + + + + + + + + Ruby elem should not contain Aside kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Ruby elem contains Aside kid + + + + + + + + + Ruby elem should not contain BlockQuote kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Ruby elem contains BlockQuote kid + + + + + + + + + Ruby elem should not contain P kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Ruby elem contains P kid + + + + + + + + + Ruby elem should not contain Note kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + Ruby elem contains Note kid + + + + + + + + + Ruby elem should not contain Code kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Ruby elem contains Code kid + + + + + + + + + Ruby elem should not contain Hn kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Ruby elem contains Hn kid + + + + + + + + + Ruby elem should not contain H kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Ruby elem contains H kid + + + + + + + + + Ruby elem should not contain Title kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Ruby elem contains Title kid + + + + + + + + + Ruby elem should not contain Sub kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Ruby elem contains Sub kid + + + + + + + + + Ruby elem should not contain Lbl kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Ruby elem contains Lbl kid + + + + + + + + + Ruby elem should not contain Em kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + Ruby elem contains Em kid + + + + + + + + + Ruby elem should not contain Strong kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + Ruby elem contains Strong kid + + + + + + + + + Ruby elem should not contain Span kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Ruby elem contains Span kid + + + + + + + + + Ruby elem should not contain Quote kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Ruby elem contains Quote kid + + + + + + + + + Ruby elem should not contain Link kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Ruby elem contains Link kid + + + + + + + + + Ruby elem should not contain Reference kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Ruby elem contains Reference kid + + + + + + + + + Ruby elem should not contain Annot kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + Ruby elem contains Annot kid + + + + + + + + + Ruby elem should not contain Form kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Ruby elem contains Form kid + + + + + + + + + Ruby elem should not contain Ruby kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Ruby elem contains Ruby kid + + + + + + + + + Ruby elem should not contain Warichu kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Ruby elem contains Warichu kid + + + + + + + + + Ruby elem should not contain WT kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Ruby elem contains WT kid + + + + + + + + + Ruby elem should not contain WP kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Ruby elem contains WP kid + + + + + + + + + Ruby elem should not contain FENote kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + Ruby elem contains FENote kid + + + + + + + + + Ruby elem should not contain Index kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Ruby elem contains Index kid + + + + + + + + + Ruby elem should not contain L kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Ruby elem contains L kid + + + + + + + + + Ruby elem should not contain LI kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Ruby elem contains LI kid + + + + + + + + + Ruby elem should not contain LBody kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Ruby elem contains LBody kid + + + + + + + + + Ruby elem should not contain BibEntry kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Ruby elem contains BibEntry kid + + + + + + + + + Ruby elem should not contain Table kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Ruby elem contains Table kid + + + + + + + + + Ruby elem should not contain TR kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Ruby elem contains TR kid + + + + + + + + + Ruby elem should not contain TH kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Ruby elem contains TH kid + + + + + + + + + Ruby elem should not contain TD kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Ruby elem contains TD kid + + + + + + + + + Ruby elem should not contain THead kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Ruby elem contains THead kid + + + + + + + + + Ruby elem should not contain TBody kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Ruby elem contains TBody kid + + + + + + + + + Ruby elem should not contain TFoot kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Ruby elem contains TFoot kid + + + + + + + + + Ruby elem should not contain Caption kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Ruby elem contains Caption kid + + + + + + + + + Ruby elem should not contain Figure kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + Ruby elem contains Figure kid + + + + + + + + + Ruby elem should not contain Formula kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + Ruby elem contains Formula kid + + + + + + + + + Ruby elem should not contain Artifact kid + (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0) + + Ruby elem contains Artifact kid + + + + + + + + + RB elem should not contain Document kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + RB elem contains Document kid + + + + + + + + + RB elem should not contain DocumentFragment kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + RB elem contains DocumentFragment kid + + + + + + + + + RB elem should not contain Part kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + RB elem contains Part kid + + + + + + + + + RB elem should not contain Art kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + RB elem contains Art kid + + + + + + + + + RB elem should not contain Div kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + RB elem contains Div kid + + + + + + + + + RB elem should not contain Sect kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + RB elem contains Sect kid + + + + + + + + + RB elem should not contain TOC kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + RB elem contains TOC kid + + + + + + + + + RB elem should not contain TOCI kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + RB elem contains TOCI kid + + + + + + + + + RB elem should not contain Aside kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + RB elem contains Aside kid + + + + + + + + + RB elem should not contain BlockQuote kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + RB elem contains BlockQuote kid + + + + + + + + + RB elem should not contain P kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + RB elem contains P kid + + + + + + + + + RB elem should not contain Note kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + RB elem contains Note kid + + + + + + + + + RB elem should not contain Code kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + RB elem contains Code kid + + + + + + + + + RB elem should not contain Hn kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + RB elem contains Hn kid + + + + + + + + + RB elem should not contain H kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + RB elem contains H kid + + + + + + + + + RB elem should not contain Title kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + RB elem contains Title kid + + + + + + + + + RB elem should not contain Lbl kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + RB elem contains Lbl kid + + + + + + + + + RB elem should not contain Ruby kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + RB elem contains Ruby kid + + + + + + + + + RB elem should not contain RB kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + RB elem contains RB kid + + + + + + + + + RB elem should not contain RT kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + RB elem contains RT kid + + + + + + + + + RB elem should not contain RP kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + RB elem contains RP kid + + + + + + + + + RB elem should not contain Warichu kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + RB elem contains Warichu kid + + + + + + + + + RB elem should not contain WT kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + RB elem contains WT kid + + + + + + + + + RB elem should not contain WP kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + RB elem contains WP kid + + + + + + + + + RB elem should not contain FENote kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + RB elem contains FENote kid + + + + + + + + + RB elem should not contain Index kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + RB elem contains Index kid + + + + + + + + + RB elem should not contain L kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + RB elem contains L kid + + + + + + + + + RB elem should not contain LI kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + RB elem contains LI kid + + + + + + + + + RB elem should not contain LBody kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + RB elem contains LBody kid + + + + + + + + + RB elem should not contain BibEntry kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + RB elem contains BibEntry kid + + + + + + + + + RB elem should not contain Table kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + RB elem contains Table kid + + + + + + + + + RB elem should not contain TR kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + RB elem contains TR kid + + + + + + + + + RB elem should not contain TH kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + RB elem contains TH kid + + + + + + + + + RB elem should not contain TD kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + RB elem contains TD kid + + + + + + + + + RB elem should not contain THead kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + RB elem contains THead kid + + + + + + + + + RB elem should not contain TBody kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + RB elem contains TBody kid + + + + + + + + + RB elem should not contain TFoot kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + RB elem contains TFoot kid + + + + + + + + + RB elem should not contain Caption kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + RB elem contains Caption kid + + + + + + + + + RB elem should not contain Figure kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + RB elem contains Figure kid + + + + + + + + + RB elem should not contain Formula kid + (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + RB elem contains Formula kid + + + + + + + + + RT elem should not contain Document kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + RT elem contains Document kid + + + + + + + + + RT elem should not contain DocumentFragment kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + RT elem contains DocumentFragment kid + + + + + + + + + RT elem should not contain Part kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + RT elem contains Part kid + + + + + + + + + RT elem should not contain Art kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + RT elem contains Art kid + + + + + + + + + RT elem should not contain Div kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + RT elem contains Div kid + + + + + + + + + RT elem should not contain Sect kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + RT elem contains Sect kid + + + + + + + + + RT elem should not contain TOC kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + RT elem contains TOC kid + + + + + + + + + RT elem should not contain TOCI kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + RT elem contains TOCI kid + + + + + + + + + RT elem should not contain Aside kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + RT elem contains Aside kid + + + + + + + + + RT elem should not contain BlockQuote kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + RT elem contains BlockQuote kid + + + + + + + + + RT elem should not contain P kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + RT elem contains P kid + + + + + + + + + RT elem should not contain Note kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + RT elem contains Note kid + + + + + + + + + RT elem should not contain Code kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + RT elem contains Code kid + + + + + + + + + RT elem should not contain Hn kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + RT elem contains Hn kid + + + + + + + + + RT elem should not contain H kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + RT elem contains H kid + + + + + + + + + RT elem should not contain Title kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + RT elem contains Title kid + + + + + + + + + RT elem should not contain Lbl kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + RT elem contains Lbl kid + + + + + + + + + RT elem should not contain Ruby kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + RT elem contains Ruby kid + + + + + + + + + RT elem should not contain RB kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + RT elem contains RB kid + + + + + + + + + RT elem should not contain RT kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + RT elem contains RT kid + + + + + + + + + RT elem should not contain RP kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + RT elem contains RP kid + + + + + + + + + RT elem should not contain Warichu kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + RT elem contains Warichu kid + + + + + + + + + RT elem should not contain WT kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + RT elem contains WT kid + + + + + + + + + RT elem should not contain WP kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + RT elem contains WP kid + + + + + + + + + RT elem should not contain FENote kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + RT elem contains FENote kid + + + + + + + + + RT elem should not contain Index kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + RT elem contains Index kid + + + + + + + + + RT elem should not contain L kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + RT elem contains L kid + + + + + + + + + RT elem should not contain LI kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + RT elem contains LI kid + + + + + + + + + RT elem should not contain LBody kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + RT elem contains LBody kid + + + + + + + + + RT elem should not contain BibEntry kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + RT elem contains BibEntry kid + + + + + + + + + RT elem should not contain Table kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + RT elem contains Table kid + + + + + + + + + RT elem should not contain TR kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + RT elem contains TR kid + + + + + + + + + RT elem should not contain TH kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + RT elem contains TH kid + + + + + + + + + RT elem should not contain TD kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + RT elem contains TD kid + + + + + + + + + RT elem should not contain THead kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + RT elem contains THead kid + + + + + + + + + RT elem should not contain TBody kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + RT elem contains TBody kid + + + + + + + + + RT elem should not contain TFoot kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + RT elem contains TFoot kid + + + + + + + + + RT elem should not contain Caption kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + RT elem contains Caption kid + + + + + + + + + RT elem should not contain Figure kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + RT elem contains Figure kid + + + + + + + + + RT elem should not contain Formula kid + (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + RT elem contains Formula kid + + + + + + + + + RP elem should not contain Document kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + RP elem contains Document kid + + + + + + + + + RP elem should not contain DocumentFragment kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + RP elem contains DocumentFragment kid + + + + + + + + + RP elem should not contain Part kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + RP elem contains Part kid + + + + + + + + + RP elem should not contain Art kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + RP elem contains Art kid + + + + + + + + + RP elem should not contain Div kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + RP elem contains Div kid + + + + + + + + + RP elem should not contain Sect kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + RP elem contains Sect kid + + + + + + + + + RP elem should not contain TOC kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + RP elem contains TOC kid + + + + + + + + + RP elem should not contain TOCI kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + RP elem contains TOCI kid + + + + + + + + + RP elem should not contain Aside kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + RP elem contains Aside kid + + + + + + + + + RP elem should not contain BlockQuote kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + RP elem contains BlockQuote kid + + + + + + + + + RP elem should not contain P kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + RP elem contains P kid + + + + + + + + + RP elem should not contain Note kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + RP elem contains Note kid + + + + + + + + + RP elem should not contain Code kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + RP elem contains Code kid + + + + + + + + + RP elem should not contain Hn kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + RP elem contains Hn kid + + + + + + + + + RP elem should not contain H kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + RP elem contains H kid + + + + + + + + + RP elem should not contain Title kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + RP elem contains Title kid + + + + + + + + + RP elem should not contain Lbl kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + RP elem contains Lbl kid + + + + + + + + + RP elem should not contain Ruby kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + RP elem contains Ruby kid + + + + + + + + + RP elem should not contain RB kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + RP elem contains RB kid + + + + + + + + + RP elem should not contain RT kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + RP elem contains RT kid + + + + + + + + + RP elem should not contain RP kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + RP elem contains RP kid + + + + + + + + + RP elem should not contain Warichu kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + RP elem contains Warichu kid + + + + + + + + + RP elem should not contain WT kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + RP elem contains WT kid + + + + + + + + + RP elem should not contain WP kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + RP elem contains WP kid + + + + + + + + + RP elem should not contain FENote kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + RP elem contains FENote kid + + + + + + + + + RP elem should not contain Index kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + RP elem contains Index kid + + + + + + + + + RP elem should not contain L kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + RP elem contains L kid + + + + + + + + + RP elem should not contain LI kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + RP elem contains LI kid + + + + + + + + + RP elem should not contain LBody kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + RP elem contains LBody kid + + + + + + + + + RP elem should not contain BibEntry kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + RP elem contains BibEntry kid + + + + + + + + + RP elem should not contain Table kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + RP elem contains Table kid + + + + + + + + + RP elem should not contain TR kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + RP elem contains TR kid + + + + + + + + + RP elem should not contain TH kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + RP elem contains TH kid + + + + + + + + + RP elem should not contain TD kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + RP elem contains TD kid + + + + + + + + + RP elem should not contain THead kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + RP elem contains THead kid + + + + + + + + + RP elem should not contain TBody kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + RP elem contains TBody kid + + + + + + + + + RP elem should not contain TFoot kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + RP elem contains TFoot kid + + + + + + + + + RP elem should not contain Caption kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + RP elem contains Caption kid + + + + + + + + + RP elem should not contain Figure kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + RP elem contains Figure kid + + + + + + + + + RP elem should not contain Formula kid + (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + RP elem contains Formula kid + + + + + + + + + Warichu elem should not contain Document kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Warichu elem contains Document kid + + + + + + + + + Warichu elem should not contain DocumentFragment kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Warichu elem contains DocumentFragment kid + + + + + + + + + Warichu elem should not contain Part kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Warichu elem contains Part kid + + + + + + + + + Warichu elem should not contain Art kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Warichu elem contains Art kid + + + + + + + + + Warichu elem should not contain Div kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Warichu elem contains Div kid + + + + + + + + + Warichu elem should not contain Sect kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Warichu elem contains Sect kid + + + + + + + + + Warichu elem should not contain TOC kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Warichu elem contains TOC kid + + + + + + + + + Warichu elem should not contain TOCI kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Warichu elem contains TOCI kid + + + + + + + + + Warichu elem should not contain Aside kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Warichu elem contains Aside kid + + + + + + + + + Warichu elem should not contain BlockQuote kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Warichu elem contains BlockQuote kid + + + + + + + + + Warichu elem should not contain P kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Warichu elem contains P kid + + + + + + + + + Warichu elem should not contain Note kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + Warichu elem contains Note kid + + + + + + + + + Warichu elem should not contain Code kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Warichu elem contains Code kid + + + + + + + + + Warichu elem should not contain Hn kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Warichu elem contains Hn kid + + + + + + + + + Warichu elem should not contain H kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Warichu elem contains H kid + + + + + + + + + Warichu elem should not contain Title kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Warichu elem contains Title kid + + + + + + + + + Warichu elem should not contain Sub kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Warichu elem contains Sub kid + + + + + + + + + Warichu elem should not contain Lbl kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Warichu elem contains Lbl kid + + + + + + + + + Warichu elem should not contain Em kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + Warichu elem contains Em kid + + + + + + + + + Warichu elem should not contain Strong kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + Warichu elem contains Strong kid + + + + + + + + + Warichu elem should not contain Span kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Warichu elem contains Span kid + + + + + + + + + Warichu elem should not contain Quote kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Warichu elem contains Quote kid + + + + + + + + + Warichu elem should not contain Link kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Warichu elem contains Link kid + + + + + + + + + Warichu elem should not contain Reference kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Warichu elem contains Reference kid + + + + + + + + + Warichu elem should not contain Annot kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + Warichu elem contains Annot kid + + + + + + + + + Warichu elem should not contain Form kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Warichu elem contains Form kid + + + + + + + + + Warichu elem should not contain Ruby kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Warichu elem contains Ruby kid + + + + + + + + + Warichu elem should not contain RB kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Warichu elem contains RB kid + + + + + + + + + Warichu elem should not contain RT kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Warichu elem contains RT kid + + + + + + + + + Warichu elem should not contain RP kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Warichu elem contains RP kid + + + + + + + + + Warichu elem should not contain Warichu kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Warichu elem contains Warichu kid + + + + + + + + + Warichu elem should not contain FENote kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + Warichu elem contains FENote kid + + + + + + + + + Warichu elem should not contain Index kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Warichu elem contains Index kid + + + + + + + + + Warichu elem should not contain L kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Warichu elem contains L kid + + + + + + + + + Warichu elem should not contain LI kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Warichu elem contains LI kid + + + + + + + + + Warichu elem should not contain LBody kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Warichu elem contains LBody kid + + + + + + + + + Warichu elem should not contain BibEntry kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Warichu elem contains BibEntry kid + + + + + + + + + Warichu elem should not contain Table kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Warichu elem contains Table kid + + + + + + + + + Warichu elem should not contain TR kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Warichu elem contains TR kid + + + + + + + + + Warichu elem should not contain TH kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Warichu elem contains TH kid + + + + + + + + + Warichu elem should not contain TD kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Warichu elem contains TD kid + + + + + + + + + Warichu elem should not contain THead kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Warichu elem contains THead kid + + + + + + + + + Warichu elem should not contain TBody kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Warichu elem contains TBody kid + + + + + + + + + Warichu elem should not contain TFoot kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Warichu elem contains TFoot kid + + + + + + + + + Warichu elem should not contain Caption kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Warichu elem contains Caption kid + + + + + + + + + Warichu elem should not contain Figure kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + Warichu elem contains Figure kid + + + + + + + + + Warichu elem should not contain Formula kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + Warichu elem contains Formula kid + + + + + + + + + Warichu elem should not contain Artifact kid + (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0) + + Warichu elem contains Artifact kid + + + + + + + + + WT elem should not contain Document kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + WT elem contains Document kid + + + + + + + + + WT elem should not contain DocumentFragment kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + WT elem contains DocumentFragment kid + + + + + + + + + WT elem should not contain Part kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + WT elem contains Part kid + + + + + + + + + WT elem should not contain Art kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + WT elem contains Art kid + + + + + + + + + WT elem should not contain Div kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + WT elem contains Div kid + + + + + + + + + WT elem should not contain Sect kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + WT elem contains Sect kid + + + + + + + + + WT elem should not contain TOC kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + WT elem contains TOC kid + + + + + + + + + WT elem should not contain TOCI kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + WT elem contains TOCI kid + + + + + + + + + WT elem should not contain Aside kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + WT elem contains Aside kid + + + + + + + + + WT elem should not contain BlockQuote kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + WT elem contains BlockQuote kid + + + + + + + + + WT elem should not contain P kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + WT elem contains P kid + + + + + + + + + WT elem should not contain Note kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + WT elem contains Note kid + + + + + + + + + WT elem should not contain Code kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + WT elem contains Code kid + + + + + + + + + WT elem should not contain Hn kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + WT elem contains Hn kid + + + + + + + + + WT elem should not contain H kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + WT elem contains H kid + + + + + + + + + WT elem should not contain Title kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + WT elem contains Title kid + + + + + + + + + WT elem should not contain Lbl kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + WT elem contains Lbl kid + + + + + + + + + WT elem should not contain Ruby kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + WT elem contains Ruby kid + + + + + + + + + WT elem should not contain RB kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + WT elem contains RB kid + + + + + + + + + WT elem should not contain RT kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + WT elem contains RT kid + + + + + + + + + WT elem should not contain RP kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + WT elem contains RP kid + + + + + + + + + WT elem should not contain Warichu kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + WT elem contains Warichu kid + + + + + + + + + WT elem should not contain WT kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + WT elem contains WT kid + + + + + + + + + WT elem should not contain WP kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + WT elem contains WP kid + + + + + + + + + WT elem should not contain FENote kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + WT elem contains FENote kid + + + + + + + + + WT elem should not contain Index kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + WT elem contains Index kid + + + + + + + + + WT elem should not contain L kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + WT elem contains L kid + + + + + + + + + WT elem should not contain LI kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + WT elem contains LI kid + + + + + + + + + WT elem should not contain LBody kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + WT elem contains LBody kid + + + + + + + + + WT elem should not contain BibEntry kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + WT elem contains BibEntry kid + + + + + + + + + WT elem should not contain Table kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + WT elem contains Table kid + + + + + + + + + WT elem should not contain TR kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + WT elem contains TR kid + + + + + + + + + WT elem should not contain TH kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + WT elem contains TH kid + + + + + + + + + WT elem should not contain TD kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + WT elem contains TD kid + + + + + + + + + WT elem should not contain THead kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + WT elem contains THead kid + + + + + + + + + WT elem should not contain TBody kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + WT elem contains TBody kid + + + + + + + + + WT elem should not contain TFoot kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + WT elem contains TFoot kid + + + + + + + + + WT elem should not contain Caption kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + WT elem contains Caption kid + + + + + + + + + WT elem should not contain Figure kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + WT elem contains Figure kid + + + + + + + + + WT elem should not contain Formula kid + (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + WT elem contains Formula kid + + + + + + + + + WP elem should not contain Document kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + WP elem contains Document kid + + + + + + + + + WP elem should not contain DocumentFragment kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + WP elem contains DocumentFragment kid + + + + + + + + + WP elem should not contain Part kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + WP elem contains Part kid + + + + + + + + + WP elem should not contain Art kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + WP elem contains Art kid + + + + + + + + + WP elem should not contain Div kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + WP elem contains Div kid + + + + + + + + + WP elem should not contain Sect kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + WP elem contains Sect kid + + + + + + + + + WP elem should not contain TOC kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + WP elem contains TOC kid + + + + + + + + + WP elem should not contain TOCI kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + WP elem contains TOCI kid + + + + + + + + + WP elem should not contain Aside kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + WP elem contains Aside kid + + + + + + + + + WP elem should not contain BlockQuote kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + WP elem contains BlockQuote kid + + + + + + + + + WP elem should not contain P kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + WP elem contains P kid + + + + + + + + + WP elem should not contain Note kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + WP elem contains Note kid + + + + + + + + + WP elem should not contain Code kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + WP elem contains Code kid + + + + + + + + + WP elem should not contain Hn kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + WP elem contains Hn kid + + + + + + + + + WP elem should not contain H kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + WP elem contains H kid + + + + + + + + + WP elem should not contain Title kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + WP elem contains Title kid + + + + + + + + + WP elem should not contain Lbl kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + WP elem contains Lbl kid + + + + + + + + + WP elem should not contain Ruby kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + WP elem contains Ruby kid + + + + + + + + + WP elem should not contain RB kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + WP elem contains RB kid + + + + + + + + + WP elem should not contain RT kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + WP elem contains RT kid + + + + + + + + + WP elem should not contain RP kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + WP elem contains RP kid + + + + + + + + + WP elem should not contain Warichu kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + WP elem contains Warichu kid + + + + + + + + + WP elem should not contain WT kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + WP elem contains WT kid + + + + + + + + + WP elem should not contain WP kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + WP elem contains WP kid + + + + + + + + + WP elem should not contain FENote kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + WP elem contains FENote kid + + + + + + + + + WP elem should not contain Index kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + WP elem contains Index kid + + + + + + + + + WP elem should not contain L kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + WP elem contains L kid + + + + + + + + + WP elem should not contain LI kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + WP elem contains LI kid + + + + + + + + + WP elem should not contain LBody kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + WP elem contains LBody kid + + + + + + + + + WP elem should not contain BibEntry kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + WP elem contains BibEntry kid + + + + + + + + + WP elem should not contain Table kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + WP elem contains Table kid + + + + + + + + + WP elem should not contain TR kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + WP elem contains TR kid + + + + + + + + + WP elem should not contain TH kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + WP elem contains TH kid + + + + + + + + + WP elem should not contain TD kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + WP elem contains TD kid + + + + + + + + + WP elem should not contain THead kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + WP elem contains THead kid + + + + + + + + + WP elem should not contain TBody kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + WP elem contains TBody kid + + + + + + + + + WP elem should not contain TFoot kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + WP elem contains TFoot kid + + + + + + + + + WP elem should not contain Caption kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + WP elem contains Caption kid + + + + + + + + + WP elem should not contain Figure kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + WP elem contains Figure kid + + + + + + + + + WP elem should not contain Formula kid + (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + WP elem contains Formula kid + + + + + + + + + FENote elem should not contain Document kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + FENote elem contains Document kid + + + + + + + + + FENote elem should not contain TOC kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + FENote elem contains TOC kid + + + + + + + + + FENote elem should not contain TOCI kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + FENote elem contains TOCI kid + + + + + + + + + FENote elem should not contain Hn kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + FENote elem contains Hn kid + + + + + + + + + FENote elem should not contain H kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + FENote elem contains H kid + + + + + + + + + FENote elem should not contain Title kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + FENote elem contains Title kid + + + + + + + + + FENote elem should not contain RB kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + FENote elem contains RB kid + + + + + + + + + FENote elem should not contain RT kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + FENote elem contains RT kid + + + + + + + + + FENote elem should not contain RP kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + FENote elem contains RP kid + + + + + + + + + FENote elem should not contain WT kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + FENote elem contains WT kid + + + + + + + + + FENote elem should not contain WP kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + FENote elem contains WP kid + + + + + + + + + FENote elem should not contain Index kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + FENote elem contains Index kid + + + + + + + + + FENote elem should not contain LI kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + FENote elem contains LI kid + + + + + + + + + FENote elem should not contain LBody kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + FENote elem contains LBody kid + + + + + + + + + FENote elem should not contain BibEntry kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + FENote elem contains BibEntry kid + + + + + + + + + FENote elem should not contain TR kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + FENote elem contains TR kid + + + + + + + + + FENote elem should not contain TH kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + FENote elem contains TH kid + + + + + + + + + FENote elem should not contain TD kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + FENote elem contains TD kid + + + + + + + + + FENote elem should not contain THead kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + FENote elem contains THead kid + + + + + + + + + FENote elem should not contain TBody kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + FENote elem contains TBody kid + + + + + + + + + FENote elem should not contain TFoot kid + (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + FENote elem contains TFoot kid + + + + + + + + + Index elem should not contain Document kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Index elem contains Document kid + + + + + + + + + Index elem should not contain DocumentFragment kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Index elem contains DocumentFragment kid + + + + + + + + + Index elem should not contain Art kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Index elem contains Art kid + + + + + + + + + Index elem should not contain TOC kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Index elem contains TOC kid + + + + + + + + + Index elem should not contain TOCI kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Index elem contains TOCI kid + + + + + + + + + Index elem should not contain Aside kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Index elem contains Aside kid + + + + + + + + + Index elem should not contain BlockQuote kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Index elem contains BlockQuote kid + + + + + + + + + Index elem should not contain Code kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Index elem contains Code kid + + + + + + + + + Index elem should not contain Title kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Index elem contains Title kid + + + + + + + + + Index elem should not contain Sub kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Index elem contains Sub kid + + + + + + + + + Index elem should not contain Lbl kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Index elem contains Lbl kid + + + + + + + + + Index elem should not contain Em kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + Index elem contains Em kid + + + + + + + + + Index elem should not contain Strong kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + Index elem contains Strong kid + + + + + + + + + Index elem should not contain Span kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Index elem contains Span kid + + + + + + + + + Index elem should not contain Quote kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Index elem contains Quote kid + + + + + + + + + Index elem should not contain Link kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Index elem contains Link kid + + + + + + + + + Index elem should not contain Form kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Index elem contains Form kid + + + + + + + + + Index elem should not contain Ruby kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Index elem contains Ruby kid + + + + + + + + + Index elem should not contain RB kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Index elem contains RB kid + + + + + + + + + Index elem should not contain RT kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Index elem contains RT kid + + + + + + + + + Index elem should not contain RP kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Index elem contains RP kid + + + + + + + + + Index elem should not contain Warichu kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Index elem contains Warichu kid + + + + + + + + + Index elem should not contain WT kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Index elem contains WT kid + + + + + + + + + Index elem should not contain WP kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Index elem contains WP kid + + + + + + + + + Index elem should not contain Index kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Index elem contains Index kid + + + + + + + + + Index elem should not contain LI kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Index elem contains LI kid + + + + + + + + + Index elem should not contain LBody kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Index elem contains LBody kid + + + + + + + + + Index elem should not contain BibEntry kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Index elem contains BibEntry kid + + + + + + + + + Index elem should not contain TR kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Index elem contains TR kid + + + + + + + + + Index elem should not contain TH kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Index elem contains TH kid + + + + + + + + + Index elem should not contain TD kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Index elem contains TD kid + + + + + + + + + Index elem should not contain THead kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Index elem contains THead kid + + + + + + + + + Index elem should not contain TBody kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Index elem contains TBody kid + + + + + + + + + Index elem should not contain TFoot kid + (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Index elem contains TFoot kid + + + + + + + + + Index elem should not contain content item kid + (standardType != 'Index') || (hasContentItems == false) + + Index elem contains content item kid + + + + + + + + + L elem should not contain Document kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + L elem contains Document kid + + + + + + + + + L elem should not contain DocumentFragment kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + L elem contains DocumentFragment kid + + + + + + + + + L elem should not contain Part kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + L elem contains Part kid + + + + + + + + + L elem should not contain Art kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + L elem contains Art kid + + + + + + + + + L elem should not contain Div kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + L elem contains Div kid + + + + + + + + + L elem should not contain Sect kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + L elem contains Sect kid + + + + + + + + + L elem should not contain TOC kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + L elem contains TOC kid + + + + + + + + + L elem should not contain TOCI kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + L elem contains TOCI kid + + + + + + + + + L elem should not contain Aside kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + L elem contains Aside kid + + + + + + + + + L elem should not contain BlockQuote kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + L elem contains BlockQuote kid + + + + + + + + + L elem should not contain P kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + L elem contains P kid + + + + + + + + + L elem should not contain Note kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + L elem contains Note kid + + + + + + + + + L elem should not contain Code kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + L elem contains Code kid + + + + + + + + + L elem should not contain Hn kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + L elem contains Hn kid + + + + + + + + + L elem should not contain H kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + L elem contains H kid + + + + + + + + + L elem should not contain Title kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + L elem contains Title kid + + + + + + + + + L elem should not contain Sub kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + L elem contains Sub kid + + + + + + + + + L elem should not contain Lbl kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + L elem contains Lbl kid + + + + + + + + + L elem should not contain Em kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + L elem contains Em kid + + + + + + + + + L elem should not contain Strong kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + L elem contains Strong kid + + + + + + + + + L elem should not contain Span kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + L elem contains Span kid + + + + + + + + + L elem should not contain Quote kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + L elem contains Quote kid + + + + + + + + + L elem should not contain Link kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + L elem contains Link kid + + + + + + + + + L elem should not contain Reference kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + L elem contains Reference kid + + + + + + + + + L elem should not contain Annot kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + L elem contains Annot kid + + + + + + + + + L elem should not contain Form kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + L elem contains Form kid + + + + + + + + + L elem should not contain Ruby kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + L elem contains Ruby kid + + + + + + + + + L elem should not contain RB kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + L elem contains RB kid + + + + + + + + + L elem should not contain RT kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + L elem contains RT kid + + + + + + + + + L elem should not contain RP kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + L elem contains RP kid + + + + + + + + + L elem should not contain Warichu kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + L elem contains Warichu kid + + + + + + + + + L elem should not contain WT kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + L elem contains WT kid + + + + + + + + + L elem should not contain WP kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + L elem contains WP kid + + + + + + + + + L elem should not contain FENote kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + L elem contains FENote kid + + + + + + + + + L elem should not contain Index kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + L elem contains Index kid + + + + + + + + + L elem should not contain LBody kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + L elem contains LBody kid + + + + + + + + + L elem should not contain BibEntry kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + L elem contains BibEntry kid + + + + + + + + + L elem should not contain Table kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + L elem contains Table kid + + + + + + + + + L elem should not contain TR kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + L elem contains TR kid + + + + + + + + + L elem should not contain TH kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + L elem contains TH kid + + + + + + + + + L elem should not contain TD kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + L elem contains TD kid + + + + + + + + + L elem should not contain THead kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + L elem contains THead kid + + + + + + + + + L elem should not contain TBody kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + L elem contains TBody kid + + + + + + + + + L elem should not contain TFoot kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + L elem contains TFoot kid + + + + + + + + + L elem should contain zero or one Caption kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + L contains more than one Caption kid + + + + + + + + + L elem should not contain Figure kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + L elem contains Figure kid + + + + + + + + + L elem should not contain Formula kid + (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + L elem contains Formula kid + + + + + + + + + L elem should not contain content item kid + (standardType != 'L') || (hasContentItems == false) + + L elem contains content item kid + + + + + + + + + LI elem should not contain Document kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + LI elem contains Document kid + + + + + + + + + LI elem should not contain DocumentFragment kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + LI elem contains DocumentFragment kid + + + + + + + + + LI elem should not contain Part kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + LI elem contains Part kid + + + + + + + + + LI elem should not contain Art kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + LI elem contains Art kid + + + + + + + + + LI elem should not contain Sect kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + LI elem contains Sect kid + + + + + + + + + LI elem should not contain TOC kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + LI elem contains TOC kid + + + + + + + + + LI elem should not contain TOCI kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + LI elem contains TOCI kid + + + + + + + + + LI elem should not contain Aside kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + LI elem contains Aside kid + + + + + + + + + LI elem should not contain BlockQuote kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + LI elem contains BlockQuote kid + + + + + + + + + LI elem should not contain P kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + LI elem contains P kid + + + + + + + + + LI elem should not contain Note kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + LI elem contains Note kid + + + + + + + + + LI elem should not contain Code kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + LI elem contains Code kid + + + + + + + + + LI elem should not contain Hn kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + LI elem contains Hn kid + + + + + + + + + LI elem should not contain H kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + LI elem contains H kid + + + + + + + + + LI elem should not contain Title kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + LI elem contains Title kid + + + + + + + + + LI elem should not contain Sub kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + LI elem contains Sub kid + + + + + + + + + LI elem should not contain Em kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + LI elem contains Em kid + + + + + + + + + LI elem should not contain Strong kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + LI elem contains Strong kid + + + + + + + + + LI elem should not contain Span kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + LI elem contains Span kid + + + + + + + + + LI elem should not contain Quote kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + LI elem contains Quote kid + + + + + + + + + LI elem should not contain Link kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + LI elem contains Link kid + + + + + + + + + LI elem should not contain Reference kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + LI elem contains Reference kid + + + + + + + + + LI elem should not contain Annot kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + LI elem contains Annot kid + + + + + + + + + LI elem should not contain Form kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + LI elem contains Form kid + + + + + + + + + LI elem should not contain Ruby kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + LI elem contains Ruby kid + + + + + + + + + LI elem should not contain RB kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + LI elem contains RB kid + + + + + + + + + LI elem should not contain RT kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + LI elem contains RT kid + + + + + + + + + LI elem should not contain RP kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + LI elem contains RP kid + + + + + + + + + LI elem should not contain Warichu kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + LI elem contains Warichu kid + + + + + + + + + LI elem should not contain WT kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + LI elem contains WT kid + + + + + + + + + LI elem should not contain WP kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + LI elem contains WP kid + + + + + + + + + LI elem should not contain FENote kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + LI elem contains FENote kid + + + + + + + + + LI elem should not contain Index kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + LI elem contains Index kid + + + + + + + + + LI elem should not contain L kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + LI elem contains L kid + + + + + + + + + LI elem should not contain LI kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + LI elem contains LI kid + + + + + + + + + LI elem should not contain BibEntry kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + LI elem contains BibEntry kid + + + + + + + + + LI elem should not contain Table kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + LI elem contains Table kid + + + + + + + + + LI elem should not contain TR kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + LI elem contains TR kid + + + + + + + + + LI elem should not contain TH kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + LI elem contains TH kid + + + + + + + + + LI elem should not contain TD kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + LI elem contains TD kid + + + + + + + + + LI elem should not contain THead kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + LI elem contains THead kid + + + + + + + + + LI elem should not contain TBody kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + LI elem contains TBody kid + + + + + + + + + LI elem should not contain TFoot kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + LI elem contains TFoot kid + + + + + + + + + LI elem should not contain Caption kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + LI elem contains Caption kid + + + + + + + + + LI elem should not contain Figure kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + LI elem contains Figure kid + + + + + + + + + LI elem should not contain Formula kid + (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + LI elem contains Formula kid + + + + + + + + + LBody elem should not contain Document kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + LBody elem contains Document kid + + + + + + + + + LBody elem should not contain DocumentFragment kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + LBody elem contains DocumentFragment kid + + + + + + + + + LBody elem should not contain TOC kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + LBody elem contains TOC kid + + + + + + + + + LBody elem should not contain TOCI kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + LBody elem contains TOCI kid + + + + + + + + + LBody elem should contain zero or one H kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + LBody contains more than one H kid + + + + + + + + + LBody elem should not contain Title kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + LBody elem contains Title kid + + + + + + + + + LBody elem should not contain Lbl kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + LBody elem contains Lbl kid + + + + + + + + + LBody elem should not contain RB kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + LBody elem contains RB kid + + + + + + + + + LBody elem should not contain RT kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + LBody elem contains RT kid + + + + + + + + + LBody elem should not contain RP kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + LBody elem contains RP kid + + + + + + + + + LBody elem should not contain WT kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + LBody elem contains WT kid + + + + + + + + + LBody elem should not contain WP kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + LBody elem contains WP kid + + + + + + + + + LBody elem should not contain LI kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + LBody elem contains LI kid + + + + + + + + + LBody elem should not contain LBody kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + LBody elem contains LBody kid + + + + + + + + + LBody elem should not contain TR kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + LBody elem contains TR kid + + + + + + + + + LBody elem should not contain TH kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + LBody elem contains TH kid + + + + + + + + + LBody elem should not contain TD kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + LBody elem contains TD kid + + + + + + + + + LBody elem should not contain THead kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + LBody elem contains THead kid + + + + + + + + + LBody elem should not contain TBody kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + LBody elem contains TBody kid + + + + + + + + + LBody elem should not contain TFoot kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + LBody elem contains TFoot kid + + + + + + + + + LBody elem should contain zero or one Caption kid + (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + LBody contains more than one Caption kid + + + + + + + + + BibEntry elem should not contain Document kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + BibEntry elem contains Document kid + + + + + + + + + BibEntry elem should not contain DocumentFragment kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + BibEntry elem contains DocumentFragment kid + + + + + + + + + BibEntry elem should not contain Art kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + BibEntry elem contains Art kid + + + + + + + + + BibEntry elem should not contain Sect kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + BibEntry elem contains Sect kid + + + + + + + + + BibEntry elem should not contain TOC kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + BibEntry elem contains TOC kid + + + + + + + + + BibEntry elem should not contain TOCI kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + BibEntry elem contains TOCI kid + + + + + + + + + BibEntry elem should not contain Aside kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + BibEntry elem contains Aside kid + + + + + + + + + BibEntry elem should not contain BlockQuote kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + BibEntry elem contains BlockQuote kid + + + + + + + + + BibEntry elem should not contain Code kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + BibEntry elem contains Code kid + + + + + + + + + BibEntry elem should not contain Hn kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + BibEntry elem contains Hn kid + + + + + + + + + BibEntry elem should not contain H kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + BibEntry elem contains H kid + + + + + + + + + BibEntry elem should not contain Title kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + BibEntry elem contains Title kid + + + + + + + + + BibEntry elem should not contain Sub kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + BibEntry elem contains Sub kid + + + + + + + + + BibEntry elem should not contain Quote kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + BibEntry elem contains Quote kid + + + + + + + + + BibEntry elem should not contain Form kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + BibEntry elem contains Form kid + + + + + + + + + BibEntry elem should not contain Ruby kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + BibEntry elem contains Ruby kid + + + + + + + + + BibEntry elem should not contain RB kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + BibEntry elem contains RB kid + + + + + + + + + BibEntry elem should not contain RT kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + BibEntry elem contains RT kid + + + + + + + + + BibEntry elem should not contain RP kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + BibEntry elem contains RP kid + + + + + + + + + BibEntry elem should not contain Warichu kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + BibEntry elem contains Warichu kid + + + + + + + + + BibEntry elem should not contain WT kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + BibEntry elem contains WT kid + + + + + + + + + BibEntry elem should not contain WP kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + BibEntry elem contains WP kid + + + + + + + + + BibEntry elem should not contain Index kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + BibEntry elem contains Index kid + + + + + + + + + BibEntry elem should not contain L kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + BibEntry elem contains L kid + + + + + + + + + BibEntry elem should not contain LI kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + BibEntry elem contains LI kid + + + + + + + + + BibEntry elem should not contain LBody kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + BibEntry elem contains LBody kid + + + + + + + + + BibEntry elem should not contain BibEntry kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + BibEntry elem contains BibEntry kid + + + + + + + + + BibEntry elem should not contain Table kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + BibEntry elem contains Table kid + + + + + + + + + BibEntry elem should not contain TR kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + BibEntry elem contains TR kid + + + + + + + + + BibEntry elem should not contain TH kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + BibEntry elem contains TH kid + + + + + + + + + BibEntry elem should not contain TD kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + BibEntry elem contains TD kid + + + + + + + + + BibEntry elem should not contain THead kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + BibEntry elem contains THead kid + + + + + + + + + BibEntry elem should not contain TBody kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + BibEntry elem contains TBody kid + + + + + + + + + BibEntry elem should not contain TFoot kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + BibEntry elem contains TFoot kid + + + + + + + + + BibEntry elem should not contain Caption kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + BibEntry elem contains Caption kid + + + + + + + + + BibEntry elem should not contain Formula kid + (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + BibEntry elem contains Formula kid + + + + + + + + + Table elem should not contain Document kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Table elem contains Document kid + + + + + + + + + Table elem should not contain DocumentFragment kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Table elem contains DocumentFragment kid + + + + + + + + + Table elem should not contain Part kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + Table elem contains Part kid + + + + + + + + + Table elem should not contain Art kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Table elem contains Art kid + + + + + + + + + Table elem should not contain Div kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + Table elem contains Div kid + + + + + + + + + Table elem should not contain Sect kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Table elem contains Sect kid + + + + + + + + + Table elem should not contain TOC kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Table elem contains TOC kid + + + + + + + + + Table elem should not contain TOCI kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Table elem contains TOCI kid + + + + + + + + + Table elem should not contain Aside kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + Table elem contains Aside kid + + + + + + + + + Table elem should not contain BlockQuote kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + Table elem contains BlockQuote kid + + + + + + + + + Table elem should not contain P kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + Table elem contains P kid + + + + + + + + + Table elem should not contain Note kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + Table elem contains Note kid + + + + + + + + + Table elem should not contain Code kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + Table elem contains Code kid + + + + + + + + + Table elem should not contain Hn kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + Table elem contains Hn kid + + + + + + + + + Table elem should not contain H kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + Table elem contains H kid + + + + + + + + + Table elem should not contain Title kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Table elem contains Title kid + + + + + + + + + Table elem should not contain Sub kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + Table elem contains Sub kid + + + + + + + + + Table elem should not contain Lbl kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + Table elem contains Lbl kid + + + + + + + + + Table elem should not contain Em kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + Table elem contains Em kid + + + + + + + + + Table elem should not contain Strong kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + Table elem contains Strong kid + + + + + + + + + Table elem should not contain Span kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + Table elem contains Span kid + + + + + + + + + Table elem should not contain Quote kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + Table elem contains Quote kid + + + + + + + + + Table elem should not contain Link kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + Table elem contains Link kid + + + + + + + + + Table elem should not contain Reference kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + Table elem contains Reference kid + + + + + + + + + Table elem should not contain Annot kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + Table elem contains Annot kid + + + + + + + + + Table elem should not contain Form kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + Table elem contains Form kid + + + + + + + + + Table elem should not contain Ruby kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + Table elem contains Ruby kid + + + + + + + + + Table elem should not contain RB kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Table elem contains RB kid + + + + + + + + + Table elem should not contain RT kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Table elem contains RT kid + + + + + + + + + Table elem should not contain RP kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Table elem contains RP kid + + + + + + + + + Table elem should not contain Warichu kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + Table elem contains Warichu kid + + + + + + + + + Table elem should not contain WT kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Table elem contains WT kid + + + + + + + + + Table elem should not contain WP kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Table elem contains WP kid + + + + + + + + + Table elem should not contain FENote kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + Table elem contains FENote kid + + + + + + + + + Table elem should not contain Index kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + Table elem contains Index kid + + + + + + + + + Table elem should not contain L kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + Table elem contains L kid + + + + + + + + + Table elem should not contain LI kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Table elem contains LI kid + + + + + + + + + Table elem should not contain LBody kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Table elem contains LBody kid + + + + + + + + + Table elem should not contain BibEntry kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + Table elem contains BibEntry kid + + + + + + + + + Table elem should not contain Table kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + Table elem contains Table kid + + + + + + + + + Table elem should not contain TH kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Table elem contains TH kid + + + + + + + + + Table elem should not contain TD kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Table elem contains TD kid + + + + + + + + + Table elem should contain zero or one THead kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) + + Table contains more than one THead kid + + + + + + + + + Table elem should contain zero or one TFoot kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) + + Table contains more than one TFoot kid + + + + + + + + + Table elem should contain zero or one Caption kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Table contains more than one Caption kid + + + + + + + + + Table elem should not contain Figure kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + Table elem contains Figure kid + + + + + + + + + Table elem should not contain Formula kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + Table elem contains Formula kid + + + + + + + + + Table elem should not contain content item kid + (standardType != 'Table') || (hasContentItems == false) + + Table elem contains content item kid + + + + + + + + + TR elem should not contain Document kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TR elem contains Document kid + + + + + + + + + TR elem should not contain DocumentFragment kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + TR elem contains DocumentFragment kid + + + + + + + + + TR elem should not contain Part kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TR elem contains Part kid + + + + + + + + + TR elem should not contain Art kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + TR elem contains Art kid + + + + + + + + + TR elem should not contain Div kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + TR elem contains Div kid + + + + + + + + + TR elem should not contain Sect kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + TR elem contains Sect kid + + + + + + + + + TR elem should not contain TOC kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + TR elem contains TOC kid + + + + + + + + + TR elem should not contain TOCI kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TR elem contains TOCI kid + + + + + + + + + TR elem should not contain Aside kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + TR elem contains Aside kid + + + + + + + + + TR elem should not contain BlockQuote kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TR elem contains BlockQuote kid + + + + + + + + + TR elem should not contain P kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + TR elem contains P kid + + + + + + + + + TR elem should not contain Note kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + TR elem contains Note kid + + + + + + + + + TR elem should not contain Code kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + TR elem contains Code kid + + + + + + + + + TR elem should not contain Hn kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + TR elem contains Hn kid + + + + + + + + + TR elem should not contain H kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + TR elem contains H kid + + + + + + + + + TR elem should not contain Title kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + TR elem contains Title kid + + + + + + + + + TR elem should not contain Sub kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + TR elem contains Sub kid + + + + + + + + + TR elem should not contain Lbl kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + TR elem contains Lbl kid + + + + + + + + + TR elem should not contain Em kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + TR elem contains Em kid + + + + + + + + + TR elem should not contain Strong kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + TR elem contains Strong kid + + + + + + + + + TR elem should not contain Span kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + TR elem contains Span kid + + + + + + + + + TR elem should not contain Quote kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + TR elem contains Quote kid + + + + + + + + + TR elem should not contain Link kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + TR elem contains Link kid + + + + + + + + + TR elem should not contain Reference kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + TR elem contains Reference kid + + + + + + + + + TR elem should not contain Annot kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + TR elem contains Annot kid + + + + + + + + + TR elem should not contain Form kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + TR elem contains Form kid + + + + + + + + + TR elem should not contain Ruby kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + TR elem contains Ruby kid + + + + + + + + + TR elem should not contain RB kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TR elem contains RB kid + + + + + + + + + TR elem should not contain RT kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TR elem contains RT kid + + + + + + + + + TR elem should not contain RP kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TR elem contains RP kid + + + + + + + + + TR elem should not contain Warichu kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + TR elem contains Warichu kid + + + + + + + + + TR elem should not contain WT kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TR elem contains WT kid + + + + + + + + + TR elem should not contain WP kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TR elem contains WP kid + + + + + + + + + TR elem should not contain FENote kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + TR elem contains FENote kid + + + + + + + + + TR elem should not contain Index kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + TR elem contains Index kid + + + + + + + + + TR elem should not contain L kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + TR elem contains L kid + + + + + + + + + TR elem should not contain LI kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TR elem contains LI kid + + + + + + + + + TR elem should not contain LBody kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TR elem contains LBody kid + + + + + + + + + TR elem should not contain BibEntry kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + TR elem contains BibEntry kid + + + + + + + + + TR elem should not contain Table kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + TR elem contains Table kid + + + + + + + + + TR elem should not contain TR kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + TR elem contains TR kid + + + + + + + + + TR elem should not contain THead kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TR elem contains THead kid + + + + + + + + + TR elem should not contain TBody kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TR elem contains TBody kid + + + + + + + + + TR elem should not contain TFoot kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TR elem contains TFoot kid + + + + + + + + + TR elem should not contain Caption kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TR elem contains Caption kid + + + + + + + + + TR elem should not contain Figure kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + TR elem contains Figure kid + + + + + + + + + TR elem should not contain Formula kid + (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + TR elem contains Formula kid + + + + + + + + + TR elem should not contain content item kid + (standardType != 'TR') || (hasContentItems == false) + + TR elem contains content item kid + + + + + + + + + TH elem should not contain Document kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TH elem contains Document kid + + + + + + + + + TH elem should not contain DocumentFragment kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + TH elem contains DocumentFragment kid + + + + + + + + + TH elem should not contain Part kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TH elem contains Part kid + + + + + + + + + TH elem should not contain TOC kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + TH elem contains TOC kid + + + + + + + + + TH elem should not contain TOCI kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TH elem contains TOCI kid + + + + + + + + + TH elem should not contain Aside kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + TH elem contains Aside kid + + + + + + + + + TH elem should not contain BlockQuote kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TH elem contains BlockQuote kid + + + + + + + + + TH elem should contain zero or one H kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + TH contains more than one H kid + + + + + + + + + TH elem should not contain Title kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + TH elem contains Title kid + + + + + + + + + TH elem should not contain Sub kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + TH elem contains Sub kid + + + + + + + + + TH elem should not contain RB kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TH elem contains RB kid + + + + + + + + + TH elem should not contain RT kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TH elem contains RT kid + + + + + + + + + TH elem should not contain RP kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TH elem contains RP kid + + + + + + + + + TH elem should not contain WT kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TH elem contains WT kid + + + + + + + + + TH elem should not contain WP kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TH elem contains WP kid + + + + + + + + + TH elem should not contain LI kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TH elem contains LI kid + + + + + + + + + TH elem should not contain LBody kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TH elem contains LBody kid + + + + + + + + + TH elem should not contain TR kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + TH elem contains TR kid + + + + + + + + + TH elem should not contain TH kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TH elem contains TH kid + + + + + + + + + TH elem should not contain TD kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TH elem contains TD kid + + + + + + + + + TH elem should not contain THead kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TH elem contains THead kid + + + + + + + + + TH elem should not contain TBody kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TH elem contains TBody kid + + + + + + + + + TH elem should not contain TFoot kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TH elem contains TFoot kid + + + + + + + + + TH elem should not contain Caption kid + (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TH elem contains Caption kid + + + + + + + + + TD elem should not contain Document kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TD elem contains Document kid + + + + + + + + + TD elem should not contain DocumentFragment kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + TD elem contains DocumentFragment kid + + + + + + + + + TD elem should not contain Part kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TD elem contains Part kid + + + + + + + + + TD elem should not contain TOC kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + TD elem contains TOC kid + + + + + + + + + TD elem should not contain TOCI kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TD elem contains TOCI kid + + + + + + + + + TD elem should not contain Aside kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + TD elem contains Aside kid + + + + + + + + + TD elem should not contain BlockQuote kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TD elem contains BlockQuote kid + + + + + + + + + TD elem should contain zero or one H kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + TD contains more than one H kid + + + + + + + + + TD elem should not contain Title kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + TD elem contains Title kid + + + + + + + + + TD elem should not contain Sub kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + TD elem contains Sub kid + + + + + + + + + TD elem should not contain RB kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TD elem contains RB kid + + + + + + + + + TD elem should not contain RT kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TD elem contains RT kid + + + + + + + + + TD elem should not contain RP kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TD elem contains RP kid + + + + + + + + + TD elem should not contain WT kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TD elem contains WT kid + + + + + + + + + TD elem should not contain WP kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TD elem contains WP kid + + + + + + + + + TD elem should not contain LI kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TD elem contains LI kid + + + + + + + + + TD elem should not contain LBody kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TD elem contains LBody kid + + + + + + + + + TD elem should not contain TR kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + TD elem contains TR kid + + + + + + + + + TD elem should not contain TH kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TD elem contains TH kid + + + + + + + + + TD elem should not contain TD kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TD elem contains TD kid + + + + + + + + + TD elem should not contain THead kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TD elem contains THead kid + + + + + + + + + TD elem should not contain TBody kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TD elem contains TBody kid + + + + + + + + + TD elem should not contain TFoot kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TD elem contains TFoot kid + + + + + + + + + TD elem should not contain Caption kid + (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TD elem contains Caption kid + + + + + + + + + THead elem should not contain Document kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + THead elem contains Document kid + + + + + + + + + THead elem should not contain DocumentFragment kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + THead elem contains DocumentFragment kid + + + + + + + + + THead elem should not contain Part kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + THead elem contains Part kid + + + + + + + + + THead elem should not contain Art kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + THead elem contains Art kid + + + + + + + + + THead elem should not contain Div kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + THead elem contains Div kid + + + + + + + + + THead elem should not contain Sect kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + THead elem contains Sect kid + + + + + + + + + THead elem should not contain TOC kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + THead elem contains TOC kid + + + + + + + + + THead elem should not contain TOCI kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + THead elem contains TOCI kid + + + + + + + + + THead elem should not contain Aside kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + THead elem contains Aside kid + + + + + + + + + THead elem should not contain BlockQuote kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + THead elem contains BlockQuote kid + + + + + + + + + THead elem should not contain P kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + THead elem contains P kid + + + + + + + + + THead elem should not contain Note kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + THead elem contains Note kid + + + + + + + + + THead elem should not contain Code kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + THead elem contains Code kid + + + + + + + + + THead elem should not contain Hn kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + THead elem contains Hn kid + + + + + + + + + THead elem should not contain H kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + THead elem contains H kid + + + + + + + + + THead elem should not contain Title kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + THead elem contains Title kid + + + + + + + + + THead elem should not contain Sub kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + THead elem contains Sub kid + + + + + + + + + THead elem should not contain Lbl kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + THead elem contains Lbl kid + + + + + + + + + THead elem should not contain Em kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + THead elem contains Em kid + + + + + + + + + THead elem should not contain Strong kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + THead elem contains Strong kid + + + + + + + + + THead elem should not contain Span kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + THead elem contains Span kid + + + + + + + + + THead elem should not contain Quote kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + THead elem contains Quote kid + + + + + + + + + THead elem should not contain Link kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + THead elem contains Link kid + + + + + + + + + THead elem should not contain Reference kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + THead elem contains Reference kid + + + + + + + + + THead elem should not contain Annot kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + THead elem contains Annot kid + + + + + + + + + THead elem should not contain Form kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + THead elem contains Form kid + + + + + + + + + THead elem should not contain Ruby kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + THead elem contains Ruby kid + + + + + + + + + THead elem should not contain RB kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + THead elem contains RB kid + + + + + + + + + THead elem should not contain RT kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + THead elem contains RT kid + + + + + + + + + THead elem should not contain RP kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + THead elem contains RP kid + + + + + + + + + THead elem should not contain Warichu kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + THead elem contains Warichu kid + + + + + + + + + THead elem should not contain WT kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + THead elem contains WT kid + + + + + + + + + THead elem should not contain WP kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + THead elem contains WP kid + + + + + + + + + THead elem should not contain FENote kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + THead elem contains FENote kid + + + + + + + + + THead elem should not contain Index kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + THead elem contains Index kid + + + + + + + + + THead elem should not contain L kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + THead elem contains L kid + + + + + + + + + THead elem should not contain LI kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + THead elem contains LI kid + + + + + + + + + THead elem should not contain LBody kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + THead elem contains LBody kid + + + + + + + + + THead elem should not contain BibEntry kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + THead elem contains BibEntry kid + + + + + + + + + THead elem should not contain Table kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + THead elem contains Table kid + + + + + + + + + THead elem should not contain TH kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + THead elem contains TH kid + + + + + + + + + THead elem should not contain TD kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + THead elem contains TD kid + + + + + + + + + THead elem should not contain THead kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + THead elem contains THead kid + + + + + + + + + THead elem should not contain TBody kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + THead elem contains TBody kid + + + + + + + + + THead elem should not contain TFoot kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + THead elem contains TFoot kid + + + + + + + + + THead elem should not contain Caption kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + THead elem contains Caption kid + + + + + + + + + THead elem should not contain Figure kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + THead elem contains Figure kid + + + + + + + + + THead elem should not contain Formula kid + (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + THead elem contains Formula kid + + + + + + + + + THead elem should not contain content item kid + (standardType != 'THead') || (hasContentItems == false) + + THead elem contains content item kid + + + + + + + + + TBody elem should not contain Document kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TBody elem contains Document kid + + + + + + + + + TBody elem should not contain DocumentFragment kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + TBody elem contains DocumentFragment kid + + + + + + + + + TBody elem should not contain Part kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TBody elem contains Part kid + + + + + + + + + TBody elem should not contain Art kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + TBody elem contains Art kid + + + + + + + + + TBody elem should not contain Div kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + TBody elem contains Div kid + + + + + + + + + TBody elem should not contain Sect kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + TBody elem contains Sect kid + + + + + + + + + TBody elem should not contain TOC kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + TBody elem contains TOC kid + + + + + + + + + TBody elem should not contain TOCI kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TBody elem contains TOCI kid + + + + + + + + + TBody elem should not contain Aside kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + TBody elem contains Aside kid + + + + + + + + + TBody elem should not contain BlockQuote kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TBody elem contains BlockQuote kid + + + + + + + + + TBody elem should not contain P kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + TBody elem contains P kid + + + + + + + + + TBody elem should not contain Note kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + TBody elem contains Note kid + + + + + + + + + TBody elem should not contain Code kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + TBody elem contains Code kid + + + + + + + + + TBody elem should not contain Hn kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + TBody elem contains Hn kid + + + + + + + + + TBody elem should not contain H kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + TBody elem contains H kid + + + + + + + + + TBody elem should not contain Title kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + TBody elem contains Title kid + + + + + + + + + TBody elem should not contain Sub kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + TBody elem contains Sub kid + + + + + + + + + TBody elem should not contain Lbl kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + TBody elem contains Lbl kid + + + + + + + + + TBody elem should not contain Em kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + TBody elem contains Em kid + + + + + + + + + TBody elem should not contain Strong kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + TBody elem contains Strong kid + + + + + + + + + TBody elem should not contain Span kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + TBody elem contains Span kid + + + + + + + + + TBody elem should not contain Quote kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + TBody elem contains Quote kid + + + + + + + + + TBody elem should not contain Link kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + TBody elem contains Link kid + + + + + + + + + TBody elem should not contain Reference kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + TBody elem contains Reference kid + + + + + + + + + TBody elem should not contain Annot kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + TBody elem contains Annot kid + + + + + + + + + TBody elem should not contain Form kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + TBody elem contains Form kid + + + + + + + + + TBody elem should not contain Ruby kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + TBody elem contains Ruby kid + + + + + + + + + TBody elem should not contain RB kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TBody elem contains RB kid + + + + + + + + + TBody elem should not contain RT kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TBody elem contains RT kid + + + + + + + + + TBody elem should not contain RP kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TBody elem contains RP kid + + + + + + + + + TBody elem should not contain Warichu kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + TBody elem contains Warichu kid + + + + + + + + + TBody elem should not contain WT kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TBody elem contains WT kid + + + + + + + + + TBody elem should not contain WP kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TBody elem contains WP kid + + + + + + + + + TBody elem should not contain FENote kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + TBody elem contains FENote kid + + + + + + + + + TBody elem should not contain Index kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + TBody elem contains Index kid + + + + + + + + + TBody elem should not contain L kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + TBody elem contains L kid + + + + + + + + + TBody elem should not contain LI kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TBody elem contains LI kid + + + + + + + + + TBody elem should not contain LBody kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TBody elem contains LBody kid + + + + + + + + + TBody elem should not contain BibEntry kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + TBody elem contains BibEntry kid + + + + + + + + + TBody elem should not contain Table kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + TBody elem contains Table kid + + + + + + + + + TBody elem should not contain TH kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TBody elem contains TH kid + + + + + + + + + TBody elem should not contain TD kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TBody elem contains TD kid + + + + + + + + + TBody elem should not contain THead kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TBody elem contains THead kid + + + + + + + + + TBody elem should not contain TBody kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TBody elem contains TBody kid + + + + + + + + + TBody elem should not contain TFoot kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TBody elem contains TFoot kid + + + + + + + + + TBody elem should not contain Caption kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TBody elem contains Caption kid + + + + + + + + + TBody elem should not contain Figure kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + TBody elem contains Figure kid + + + + + + + + + TBody elem should not contain Formula kid + (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + TBody elem contains Formula kid + + + + + + + + + TBody elem should not contain content item kid + (standardType != 'TBody') || (hasContentItems == false) + + TBody elem contains content item kid + + + + + + + + + TFoot elem should not contain Document kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + TFoot elem contains Document kid + + + + + + + + + TFoot elem should not contain DocumentFragment kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + TFoot elem contains DocumentFragment kid + + + + + + + + + TFoot elem should not contain Part kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + + TFoot elem contains Part kid + + + + + + + + + TFoot elem should not contain Art kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + TFoot elem contains Art kid + + + + + + + + + TFoot elem should not contain Div kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + + TFoot elem contains Div kid + + + + + + + + + TFoot elem should not contain Sect kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + TFoot elem contains Sect kid + + + + + + + + + TFoot elem should not contain TOC kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + TFoot elem contains TOC kid + + + + + + + + + TFoot elem should not contain TOCI kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + TFoot elem contains TOCI kid + + + + + + + + + TFoot elem should not contain Aside kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + + TFoot elem contains Aside kid + + + + + + + + + TFoot elem should not contain BlockQuote kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + + TFoot elem contains BlockQuote kid + + + + + + + + + TFoot elem should not contain P kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + + TFoot elem contains P kid + + + + + + + + + TFoot elem should not contain Note kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + + TFoot elem contains Note kid + + + + + + + + + TFoot elem should not contain Code kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + + TFoot elem contains Code kid + + + + + + + + + TFoot elem should not contain Hn kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + + TFoot elem contains Hn kid + + + + + + + + + TFoot elem should not contain H kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + + TFoot elem contains H kid + + + + + + + + + TFoot elem should not contain Title kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + TFoot elem contains Title kid + + + + + + + + + TFoot elem should not contain Sub kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + + TFoot elem contains Sub kid + + + + + + + + + TFoot elem should not contain Lbl kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + + TFoot elem contains Lbl kid + + + + + + + + + TFoot elem should not contain Em kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + + TFoot elem contains Em kid + + + + + + + + + TFoot elem should not contain Strong kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + + TFoot elem contains Strong kid + + + + + + + + + TFoot elem should not contain Span kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + + TFoot elem contains Span kid + + + + + + + + + TFoot elem should not contain Quote kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + + TFoot elem contains Quote kid + + + + + + + + + TFoot elem should not contain Link kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + + TFoot elem contains Link kid + + + + + + + + + TFoot elem should not contain Reference kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + + TFoot elem contains Reference kid + + + + + + + + + TFoot elem should not contain Annot kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + + TFoot elem contains Annot kid + + + + + + + + + TFoot elem should not contain Form kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + + TFoot elem contains Form kid + + + + + + + + + TFoot elem should not contain Ruby kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + + TFoot elem contains Ruby kid + + + + + + + + + TFoot elem should not contain RB kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + TFoot elem contains RB kid + + + + + + + + + TFoot elem should not contain RT kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + TFoot elem contains RT kid + + + + + + + + + TFoot elem should not contain RP kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + TFoot elem contains RP kid + + + + + + + + + TFoot elem should not contain Warichu kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + + TFoot elem contains Warichu kid + + + + + + + + + TFoot elem should not contain WT kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + TFoot elem contains WT kid + + + + + + + + + TFoot elem should not contain WP kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + TFoot elem contains WP kid + + + + + + + + + TFoot elem should not contain FENote kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + + TFoot elem contains FENote kid + + + + + + + + + TFoot elem should not contain Index kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + + TFoot elem contains Index kid + + + + + + + + + TFoot elem should not contain L kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + + TFoot elem contains L kid + + + + + + + + + TFoot elem should not contain LI kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + TFoot elem contains LI kid + + + + + + + + + TFoot elem should not contain LBody kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + TFoot elem contains LBody kid + + + + + + + + + TFoot elem should not contain BibEntry kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + + TFoot elem contains BibEntry kid + + + + + + + + + TFoot elem should not contain Table kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + + TFoot elem contains Table kid + + + + + + + + + TFoot elem should not contain TH kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + TFoot elem contains TH kid + + + + + + + + + TFoot elem should not contain TD kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + TFoot elem contains TD kid + + + + + + + + + TFoot elem should not contain THead kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + TFoot elem contains THead kid + + + + + + + + + TFoot elem should not contain TBody kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + TFoot elem contains TBody kid + + + + + + + + + TFoot elem should not contain TFoot kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + TFoot elem contains TFoot kid + + + + + + + + + TFoot elem should not contain Caption kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + TFoot elem contains Caption kid + + + + + + + + + TFoot elem should not contain Figure kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + + TFoot elem contains Figure kid + + + + + + + + + TFoot elem should not contain Formula kid + (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + + TFoot elem contains Formula kid + + + + + + + + + TFoot elem should not contain content item kid + (standardType != 'TFoot') || (hasContentItems == false) + + TFoot elem contains content item kid + + + + + + + + + Caption elem should not contain Document kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Caption elem contains Document kid + + + + + + + + + Caption elem should not contain TOC kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Caption elem contains TOC kid + + + + + + + + + Caption elem should not contain TOCI kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Caption elem contains TOCI kid + + + + + + + + + Caption elem should contain zero or one H kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Caption contains more than one H kid + + + + + + + + + Caption elem should not contain Title kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Caption elem contains Title kid + + + + + + + + + Caption elem should not contain RB kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Caption elem contains RB kid + + + + + + + + + Caption elem should not contain RT kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Caption elem contains RT kid + + + + + + + + + Caption elem should not contain RP kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Caption elem contains RP kid + + + + + + + + + Caption elem should not contain WT kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Caption elem contains WT kid + + + + + + + + + Caption elem should not contain WP kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Caption elem contains WP kid + + + + + + + + + Caption elem should not contain LI kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Caption elem contains LI kid + + + + + + + + + Caption elem should not contain LBody kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Caption elem contains LBody kid + + + + + + + + + Caption elem should not contain TR kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Caption elem contains TR kid + + + + + + + + + Caption elem should not contain TH kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Caption elem contains TH kid + + + + + + + + + Caption elem should not contain TD kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Caption elem contains TD kid + + + + + + + + + Caption elem should not contain THead kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Caption elem contains THead kid + + + + + + + + + Caption elem should not contain TBody kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Caption elem contains TBody kid + + + + + + + + + Caption elem should not contain TFoot kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Caption elem contains TFoot kid + + + + + + + + + Caption elem should not contain Caption kid + (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + + Caption elem contains Caption kid + + + + + + + + + Figure elem should not contain Document kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Figure elem contains Document kid + + + + + + + + + Figure elem should not contain DocumentFragment kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Figure elem contains DocumentFragment kid + + + + + + + + + Figure elem should not contain TOC kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Figure elem contains TOC kid + + + + + + + + + Figure elem should not contain TOCI kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Figure elem contains TOCI kid + + + + + + + + + Figure elem should contain zero or one H kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Figure contains more than one H kid + + + + + + + + + Figure elem should not contain Title kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Figure elem contains Title kid + + + + + + + + + Figure elem should not contain RB kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Figure elem contains RB kid + + + + + + + + + Figure elem should not contain RT kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Figure elem contains RT kid + + + + + + + + + Figure elem should not contain RP kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Figure elem contains RP kid + + + + + + + + + Figure elem should not contain WT kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Figure elem contains WT kid + + + + + + + + + Figure elem should not contain WP kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Figure elem contains WP kid + + + + + + + + + Figure elem should not contain LI kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Figure elem contains LI kid + + + + + + + + + Figure elem should not contain LBody kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Figure elem contains LBody kid + + + + + + + + + Figure elem should not contain TR kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Figure elem contains TR kid + + + + + + + + + Figure elem should not contain TH kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Figure elem contains TH kid + + + + + + + + + Figure elem should not contain TD kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Figure elem contains TD kid + + + + + + + + + Figure elem should not contain THead kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Figure elem contains THead kid + + + + + + + + + Figure elem should not contain TBody kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Figure elem contains TBody kid + + + + + + + + + Figure elem should not contain TFoot kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Figure elem contains TFoot kid + + + + + + + + + Figure elem should contain zero or one Caption kid + (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Figure contains more than one Caption kid + + + + + + + + + Formula elem should not contain Document kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + + Formula elem contains Document kid + + + + + + + + + Formula elem should not contain DocumentFragment kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + + Formula elem contains DocumentFragment kid + + + + + + + + + Formula elem should not contain Art kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + + Formula elem contains Art kid + + + + + + + + + Formula elem should not contain Sect kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + + Formula elem contains Sect kid + + + + + + + + + Formula elem should not contain TOC kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + + Formula elem contains TOC kid + + + + + + + + + Formula elem should not contain TOCI kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + + Formula elem contains TOCI kid + + + + + + + + + Formula elem should contain zero or one H kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Formula contains more than one H kid + + + + + + + + + Formula elem should not contain Title kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + + Formula elem contains Title kid + + + + + + + + + Formula elem should not contain RB kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + + Formula elem contains RB kid + + + + + + + + + Formula elem should not contain RT kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + + Formula elem contains RT kid + + + + + + + + + Formula elem should not contain RP kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + + Formula elem contains RP kid + + + + + + + + + Formula elem should not contain WT kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + + Formula elem contains WT kid + + + + + + + + + Formula elem should not contain WP kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + + Formula elem contains WP kid + + + + + + + + + Formula elem should not contain LI kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + + Formula elem contains LI kid + + + + + + + + + Formula elem should not contain LBody kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + + Formula elem contains LBody kid + + + + + + + + + Formula elem should not contain TR kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + + Formula elem contains TR kid + + + + + + + + + Formula elem should not contain TH kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + + Formula elem contains TH kid + + + + + + + + + Formula elem should not contain TD kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + + Formula elem contains TD kid + + + + + + + + + Formula elem should not contain THead kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + + Formula elem contains THead kid + + + + + + + + + Formula elem should not contain TBody kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + + Formula elem contains TBody kid + + + + + + + + + Formula elem should not contain TFoot kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + + Formula elem contains TFoot kid + + + + + + + + + Formula elem should contain zero or one Caption kid + (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Formula contains more than one Caption kid + + + + + + + + + Artifact elem should contain zero or one H kid + (standardType != 'Artifact') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + + Artifact contains more than one H kid + + + + + + + + + Artifact elem should contain zero or one Caption kid + (standardType != 'Artifact') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + + Artifact contains more than one Caption kid + + + + + + + + +
diff --git a/PDF_UA/PDF-UA1-Human.xml b/PDF_UA/PDF-UA1-Human.xml new file mode 100644 index 00000000..ccb731c1 --- /dev/null +++ b/PDF_UA/PDF-UA1-Human.xml @@ -0,0 +1,26 @@ + + +
+ PDF/UA-1 validation profile (Human) + Validation rules against ISO 14289-1:2014 (Matterhorn Human-verifiable checks) +
+ + + + + The structure type and attributes of a structure element shall be semantically appropriate. + (!/^H([1-9][0-9]*)*$/.test(gStructureTag) || suspectRole == 'H') && (gStructureTag != 'P' || suspectRole == 'P') + + The structure type and attributes of a structure element are not semantically appropriate for the structure element. + + + + + + + + null + structureTag + + +
From 1fc9effe1f295d35ac5c3dd2b6c12edb99d3f368 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 17 Apr 2020 23:49:50 +0300 Subject: [PATCH 306/557] PDF/UA validation. Rules 7.1.6, 7.2.2, 7.2.6, 7.2.7, 7.2.8, 7.2.9, 7.2.10 Added profiles. PDF/UA validation. Rules 7.1.13, 7.9.1, 7.9.2, 1.3.4.1(WGAG) Changed profiles. --- .../7.1 General/verapdf-profile-7-1-t13.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t06.xml | 21 ++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml | 26 +++++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml | 26 +++++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml | 26 +++++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml | 26 +++++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml | 29 +++++++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml | 26 +++++++++++++++++ .../verapdf-profile-7-9-t01.xml | 6 ++-- .../verapdf-profile-7-9-t02.xml | 4 +-- PDF_UA/PDF-UA1.xml | 6 ++-- PDF_UA/WCAG-21.xml | 26 +++++++++++++++++ .../verapdf-profile-1-3-4-t01.xml | 26 +++++++++++++++++ 13 files changed, 241 insertions(+), 9 deletions(-) create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml create mode 100644 PDF_UA/WCAG-21.xml create mode 100644 PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml diff --git a/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml b/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml index 35b76e20..2c99def5 100644 --- a/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml +++ b/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml @@ -2,7 +2,7 @@
ISO 14289-1:2014 - 7.1 General - Semantically appropriate structure type and attributes - + The structure type and attributes of a structure element shall be semantically appropriate.
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml new file mode 100644 index 00000000..129a933d --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Circular mapping + A circular mapping shall not exist +
+ + + + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml new file mode 100644 index 00000000..89f2b581 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Lang in Outlines + Natural language in the Outline entries shall be determined +
+ + + + + Natural language in the Outline entries shall be determined + gSizeCatalogLang != 0 + + Natural language in the Outline entries cannot be determined + + + + + + + + 0 + Lang_size + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml new file mode 100644 index 00000000..22b2cba7 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Lang for ActualText + Natural language for text in ActualText attribute shall be determined +
+ + + + + Natural language for text in ActualText attribute shall be determined + ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute cannot be determined + + + + + + + + 0 + Lang_size + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml new file mode 100644 index 00000000..a03ba4e2 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Lang for Alt + Natural language for text in Alt attribute shall be determined +
+ + + + + Natural language for text in Alt attribute shall be determined + Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute cannot be determined + + + + + + + + 0 + Lang_size + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml new file mode 100644 index 00000000..2ca29d9d --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Lang for E + Natural language for text in E attribute shall be determined +
+ + + + + Natural language for text in E attribute shall be determined + E == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in E attribute cannot be determined + + + + + + + + 0 + Lang_size + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml new file mode 100644 index 00000000..5b919786 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml @@ -0,0 +1,29 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Lang in Contents + Natural language in the Contents entry for annotations shall be + determined +
+ + + + + Natural language in the Contents entry for annotations shall be + determined + Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the Contents entry for annotations cannot be + determined + + + + + + + + 0 + Lang_size + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml new file mode 100644 index 00000000..61e04b13 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Lang in TU key + Natural language in the TU key for form fields shall be determined +
+ + + + + Natural language in the TU key for form fields shall be determined + TU == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the TU key for form fields cannot be determined + + + + + + + + 0 + Lang_size + + +
diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml index 567daecb..9da645c3 100644 --- a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml +++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 7.9 Notes and references - ID - Each Note tag shall have a unique entry in the ID key + Note tag shall have ID entry
- Each Note tag shall have a unique entry in the ID key - noteID != null + Note tag shall have ID entry + noteID != null && noteID != '' ID key of the Note tag is not present diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml index 6d47f422..66209189 100644 --- a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml +++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.9 Notes and references - Unique id - Each Note tag shall have a unique entry in the ID key + Each Note tag shall have unique ID key
- Each Note tag shall have a unique entry in the ID key + Each Note tag shall have unique ID key hasDuplicateNoteID == false ID key of the Note tag is non-unique diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index 50626949..cfd99aea 100644 --- a/PDF_UA/PDF-UA1.xml +++ b/PDF_UA/PDF-UA1.xml @@ -208,8 +208,8 @@ - Each Note tag shall have a unique entry in the ID key - noteID != null + Note tag shall have ID entry + noteID != null && noteID != '' ID key of the Note tag is not present @@ -218,7 +218,7 @@ - Each Note tag shall have a unique entry in the ID key + Each Note tag shall have unique ID key hasDuplicateNoteID == false ID key of the Note tag is non-unique diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml new file mode 100644 index 00000000..2a912433 --- /dev/null +++ b/PDF_UA/WCAG-21.xml @@ -0,0 +1,26 @@ + + +
+ WCAG 2.1 validation profile + Extra rules for WCAG 2.1 validation in addition to PDF/UA-1 +
+ + + + + Pages shall have the same orientation + gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation + + Pages are not have the same orientation + + + + + + + + 'Square' + orientation == 'Square' ? gPageOrientation : orientation + + +
diff --git a/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml b/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml new file mode 100644 index 00000000..0187e9d4 --- /dev/null +++ b/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 1.3 Adaptable - 1.3.4 Orientation - Single display orientation + Pages shall have the same orientation +
+ + + + + Pages shall have the same orientation + gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation + + Pages are not have the same orientation + + + + + + + + 'Square' + orientation == 'Square' ? gPageOrientation : orientation + + +
From 2484192094e92c642f5a18f7cb1f093881e3d9b6 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 24 Apr 2020 13:25:50 +0300 Subject: [PATCH 307/557] Update PDF-UA1 profile --- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml | 2 +- .../verapdf-profile-7-21-3-2-t01.xml | 2 +- PDF_UA/PDF-UA1.xml | 364 +++++++++++++++++- 3 files changed, 365 insertions(+), 3 deletions(-) diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml index 89f2b581..8375e935 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml @@ -7,7 +7,7 @@ - + Natural language in the Outline entries shall be determined gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml index bf886c04..8da9ccf0 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml @@ -8,7 +8,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index cfd99aea..501e4d68 100644 --- a/PDF_UA/PDF-UA1.xml +++ b/PDF_UA/PDF-UA1.xml @@ -28,6 +28,26 @@ + + + Content marked as Artifact should not present inside tagged content + tag != 'Artifact' || parentTag == null + + Content marked as Artifact is present inside tagged content + + + + + + + Tagged content should not present inside content marked as Artifact + tag == null || parentTag != 'Artifact' + + Tagged content is present inside content marked as Artifact + + + + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) @@ -55,6 +75,16 @@
+ + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists + + + + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. @@ -115,6 +145,334 @@
+ + + Natural language in the Outline entries shall be determined + gSizeCatalogLang != 0 + + Natural language in the Outline entries cannot be determined + + + + + + + Table element may contain a Caption element as its first or last kid and + Table element may contain only TR, THead, TBody, TFoot and Caption elems + (standardType != 'Table') || /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) + || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) + || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + + Table element contains more than one Caption element or Table element contains a Caption element not as its first or + last kid or Table element contains not a TR, THead, TBody, TFoot or Caption elements + + + + + + + + + TR element should contained in Table element + (standardType != 'TR') || (parentStandardType == 'Table') + + TR element not contained in Table element + + + + + + + + + THead element should contained in Table element + (standardType != 'THead') || (parentStandardType == 'Table') + + THead element not contained in Table element + + + + + + + + + TBody element should contained in Table element + (standardType != 'TBody') || (parentStandardType == 'Table') + + TBody element not contained in Table element + + + + + + + + + TFoot element should contained in Table element + (standardType != 'TFoot') || (parentStandardType == 'Table') + + TFoot element not contained in Table element + + + + + + + + + TH element should contained in TR element + (standardType != 'TH') || (parentStandardType == 'TR') + + TH element not contained in TR element + + + + + + + + + TD element should contained in TR element + (standardType != 'TD') || (parentStandardType == 'TR') + + TD element not contained in TR element + + + + + + + + + TR element may contain only TH and TD elements + (standardType != 'TR') || /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + TR element contains not a TH or TD elements + + + + + + + + + Table element should contain zero or one THead kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) + + Table element contains more than one THead kid + + + + + + + + + Table element should contain zero or one TFoot kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) + + Table element contains more than one TFoot kid + + + + + + + + + If Table element contains TFoot kid, Table element should contain one or more TBody kids + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains TFoot kid, but not contains TBody kids + + + + + + + + + If Table element contains THead kid, Table element should contain one or more TBody kids + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains THead kid, but not contains TBody kids + + + + + + + + + If Table element contains one or more TBody kids, Table element should contain one TFoot kid + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 1 + + Table element contains one or more TBody kids, but not contains one TFoot kid + + + + + + + + + If Table element contains one or more TBody kids, Table element should contain one THead kid + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 1 + + Table element contains one or more TBody kids, but not contains one THead kid + + + + + + + + + LI element should contained in L element + (standardType != 'LI') || (parentStandardType == 'L') + + LI element not contained in L element + + + + + + + + + LBody element should contained in LI element + (standardType != 'LBody') || (parentStandardType == 'LI') + + LBody element not contained in LI element + + + + + + + + + L element may contain a Caption element as its first kid and L element may contain only LI and Caption elements + (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || + kidsStandardTypes == 'Caption' + + L element contains more than one Caption element or L element contains a Caption element not as its first kid or + L element contains not a LI or Caption elements + + + + + + + + + LI element may contain only Lbl and LBody elements + (standardType != 'LI') || /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + LI element contains not a Lbl or LBody elements + + + + + + + + + Natural language for text in ActualText attribute shall be determined + ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute cannot be determined + + + + + + + Natural language for text in Alt attribute shall be determined + Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute cannot be determined + + + + + + + Natural language for text in E attribute shall be determined + E == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in E attribute cannot be determined + + + + + + + Natural language in the Contents entry for annotations shall be + determined + Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the Contents entry for annotations cannot be + determined + + + + + + + Natural language in the TU key for form fields shall be determined + TU == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the TU key for form fields cannot be determined + + + + + + + TOCI element should contained in TOC element + (standardType != 'TOCI') || (parentStandardType == 'TOC') + + TOCI element not contained in TOC element + + + + + + + + + TOC element may contain a Caption element as its first kid and + TOC element may contain only TOC, TOCI and Caption elements + (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || + kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + + TOC element contains more than one Caption element or TOC element contains a Caption element + not as its first kid or TOC elem contains not a TOC, TOCI or Caption elements + + + + + + + + + TOCI element may contain only Reference, P, Lbl, TOC and NonStruct elements + (standardType != 'TOCI') || /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || + kidsStandardTypes == '' + + TOCI element contains not a Reference, P, Lbl, TOC or NonStruct elements + + + + + + If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or @@ -391,7 +749,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null @@ -615,5 +973,9 @@ false true + + 0 + Lang_size +
From 20a31e4e623d55fc3e74a67dd978e1e078f1742a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 29 Apr 2020 14:27:04 +0300 Subject: [PATCH 308/557] PDF/UA validation. Lang in marked content. Added new profiles, fixed profiles. --- .../verapdf-profile-7-16-t01.xml | 2 +- ...03.xml => verapdf-profile-7-2-t03-t16.xml} | 46 ++++---- ...04.xml => verapdf-profile-7-2-t17-t20.xml} | 8 +- ...-2-t06.xml => verapdf-profile-7-2-t21.xml} | 2 +- ...-2-t07.xml => verapdf-profile-7-2-t22.xml} | 2 +- ...-2-t08.xml => verapdf-profile-7-2-t23.xml} | 2 +- ...-2-t09.xml => verapdf-profile-7-2-t24.xml} | 2 +- ...-2-t10.xml => verapdf-profile-7-2-t25.xml} | 2 +- ...11.xml => verapdf-profile-7-2-t26-t28.xml} | 6 +- ...-2-t13.xml => verapdf-profile-7-2-t29.xml} | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml | 26 +++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml | 26 +++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml | 26 +++++ PDF_UA/PDF-UA1.xml | 104 +++++++++++------- 14 files changed, 182 insertions(+), 74 deletions(-) rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t03.xml => verapdf-profile-7-2-t03-t16.xml} (83%) rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t04.xml => verapdf-profile-7-2-t17-t20.xml} (90%) rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t06.xml => verapdf-profile-7-2-t21.xml} (99%) rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t07.xml => verapdf-profile-7-2-t22.xml} (99%) rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t08.xml => verapdf-profile-7-2-t23.xml} (99%) rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t09.xml => verapdf-profile-7-2-t24.xml} (99%) rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t10.xml => verapdf-profile-7-2-t25.xml} (99%) rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t11.xml => verapdf-profile-7-2-t26-t28.xml} (91%) rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t13.xml => verapdf-profile-7-2-t29.xml} (99%) create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml diff --git a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml index ecb1603f..03ab567c 100644 --- a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml +++ b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml @@ -11,7 +11,7 @@ An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. - P != null && (P & (1 << 10)) == 1 + P != null && (P & (1 << 9)) == 1 The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t16.xml similarity index 83% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t16.xml index 4b64ca5c..184a56a2 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t16.xml @@ -7,7 +7,7 @@ - + Table element may contain a Caption element as its first or last kid and Table element may contain only TR, THead, TBody, TFoot and Caption elems (standardType != 'Table') || /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) @@ -23,11 +23,11 @@ - - TR element should contained in Table element - (standardType != 'TR') || (parentStandardType == 'Table') + + TR element should contained in Table, THead, TBody or TFoot element + (standardType != 'TR') || /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) - TR element not contained in Table element + TR element not contained in Table, THead, TBody and TFoot element @@ -35,7 +35,7 @@ - + THead element should contained in Table element (standardType != 'THead') || (parentStandardType == 'Table') @@ -47,7 +47,7 @@ - + TBody element should contained in Table element (standardType != 'TBody') || (parentStandardType == 'Table') @@ -59,7 +59,7 @@ - + TFoot element should contained in Table element (standardType != 'TFoot') || (parentStandardType == 'Table') @@ -71,7 +71,7 @@ - + TH element should contained in TR element (standardType != 'TH') || (parentStandardType == 'TR') @@ -83,7 +83,7 @@ - + TD element should contained in TR element (standardType != 'TD') || (parentStandardType == 'TR') @@ -95,7 +95,7 @@ - + TR element may contain only TH and TD elements (standardType != 'TR') || /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' @@ -107,7 +107,7 @@ - + Table element should contain zero or one THead kid (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) @@ -119,7 +119,7 @@ - + Table element should contain zero or one TFoot kid (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) @@ -131,7 +131,7 @@ - + If Table element contains TFoot kid, Table element should contain one or more TBody kids (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 @@ -144,7 +144,7 @@ - + If Table element contains THead kid, Table element should contain one or more TBody kids (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 @@ -157,12 +157,12 @@ - - If Table element contains one or more TBody kids, Table element should contain one TFoot kid + + If Table element contains one or more TBody kids, Table element should contain TFoot kid (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 1 + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length > 0 - Table element contains one or more TBody kids, but not contains one TFoot kid + Table element contains one or more TBody kids, but not contains TFoot kid @@ -170,12 +170,12 @@ - - If Table element contains one or more TBody kids, Table element should contain one THead kid + + If Table element contains one or more TBody kids, Table element should contain THead kid (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 1 + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length > 0 - Table element contains one or more TBody kids, but not contains one THead kid + Table element contains one or more TBody kids, but not contains THead kid diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml similarity index 90% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml index a457ff8a..c7f51e0b 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml @@ -7,7 +7,7 @@ - + LI element should contained in L element (standardType != 'LI') || (parentStandardType == 'L') @@ -19,7 +19,7 @@ - + LBody element should contained in LI element (standardType != 'LBody') || (parentStandardType == 'LI') @@ -31,7 +31,7 @@ - + L element may contain a Caption element as its first kid and L element may contain only LI and Caption elements (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' @@ -45,7 +45,7 @@ - + LI element may contain only Lbl and LBody elements (standardType != 'LI') || /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml similarity index 99% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml index 22b2cba7..f1c594d2 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml @@ -7,7 +7,7 @@ - + Natural language for text in ActualText attribute shall be determined ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml similarity index 99% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml index a03ba4e2..c90f7d63 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml @@ -7,7 +7,7 @@ - + Natural language for text in Alt attribute shall be determined Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml similarity index 99% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml index 2ca29d9d..c6348e9e 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml @@ -7,7 +7,7 @@ - + Natural language for text in E attribute shall be determined E == null || Lang_size != 0 || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml similarity index 99% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml index 5b919786..7ab99b44 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml @@ -8,7 +8,7 @@ - + Natural language in the Contents entry for annotations shall be determined Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml similarity index 99% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml index 61e04b13..8192ccc7 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml @@ -7,7 +7,7 @@ - + Natural language in the TU key for form fields shall be determined TU == null || Lang_size != 0 || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t28.xml similarity index 91% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t28.xml index 2280557b..2908e46c 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t28.xml @@ -7,7 +7,7 @@ - + TOCI element should contained in TOC element (standardType != 'TOCI') || (parentStandardType == 'TOC') @@ -19,7 +19,7 @@ - + TOC element may contain a Caption element as its first kid and TOC element may contain only TOC, TOCI and Caption elements (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || @@ -34,7 +34,7 @@ - + TOCI element may contain only Reference, P, Lbl, TOC and NonStruct elements (standardType != 'TOCI') || /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml similarity index 99% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml index 3b18f9db..7f4d20a2 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml @@ -9,7 +9,7 @@ - + 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml new file mode 100644 index 00000000..17814e00 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Lang for ActualText + Natural language for text in ActualText attribute shall be determined +
+ + + + + Natural language for text in ActualText attribute shall be determined + tag != 'Span' || ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute cannot be determined + + + + + + + + 0 + Lang_size + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml new file mode 100644 index 00000000..ca78672d --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Lang for Alt + Natural language for text in Alt attribute shall be determined +
+ + + + + Natural language for text in Alt attribute shall be determined + tag != 'Span' || Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute cannot be determined + + + + + + + + 0 + Lang_size + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml new file mode 100644 index 00000000..e2bff14a --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Lang for E + Natural language for text in E attribute shall be determined +
+ + + + + Natural language for text in E attribute shall be determined + tag != 'Span' || E == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in E attribute cannot be determined + + + + + + + + 0 + Lang_size + + +
diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index 501e4d68..2df190f4 100644 --- a/PDF_UA/PDF-UA1.xml +++ b/PDF_UA/PDF-UA1.xml @@ -156,7 +156,7 @@
- + Table element may contain a Caption element as its first or last kid and Table element may contain only TR, THead, TBody, TFoot and Caption elems (standardType != 'Table') || /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) @@ -172,11 +172,11 @@ - - TR element should contained in Table element - (standardType != 'TR') || (parentStandardType == 'Table') + + TR element should contained in Table, THead, TBody or TFoot element + (standardType != 'TR') || /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) - TR element not contained in Table element + TR element not contained in Table, THead, TBody and TFoot element @@ -184,7 +184,7 @@ - + THead element should contained in Table element (standardType != 'THead') || (parentStandardType == 'Table') @@ -196,7 +196,7 @@ - + TBody element should contained in Table element (standardType != 'TBody') || (parentStandardType == 'Table') @@ -208,7 +208,7 @@ - + TFoot element should contained in Table element (standardType != 'TFoot') || (parentStandardType == 'Table') @@ -220,7 +220,7 @@ - + TH element should contained in TR element (standardType != 'TH') || (parentStandardType == 'TR') @@ -232,7 +232,7 @@ - + TD element should contained in TR element (standardType != 'TD') || (parentStandardType == 'TR') @@ -244,7 +244,7 @@ - + TR element may contain only TH and TD elements (standardType != 'TR') || /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' @@ -256,7 +256,7 @@ - + Table element should contain zero or one THead kid (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) @@ -268,7 +268,7 @@ - + Table element should contain zero or one TFoot kid (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) @@ -280,7 +280,7 @@ - + If Table element contains TFoot kid, Table element should contain one or more TBody kids (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 @@ -293,7 +293,7 @@ - + If Table element contains THead kid, Table element should contain one or more TBody kids (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 @@ -306,12 +306,12 @@ - - If Table element contains one or more TBody kids, Table element should contain one TFoot kid + + If Table element contains one or more TBody kids, Table element should contain TFoot kid (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 1 + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length > 0 - Table element contains one or more TBody kids, but not contains one TFoot kid + Table element contains one or more TBody kids, but not contains TFoot kid @@ -319,12 +319,12 @@ - - If Table element contains one or more TBody kids, Table element should contain one THead kid + + If Table element contains one or more TBody kids, Table element should contain THead kid (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 1 + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length > 0 - Table element contains one or more TBody kids, but not contains one THead kid + Table element contains one or more TBody kids, but not contains THead kid @@ -332,7 +332,7 @@ - + LI element should contained in L element (standardType != 'LI') || (parentStandardType == 'L') @@ -344,7 +344,7 @@ - + LBody element should contained in LI element (standardType != 'LBody') || (parentStandardType == 'LI') @@ -356,7 +356,7 @@ - + L element may contain a Caption element as its first kid and L element may contain only LI and Caption elements (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' @@ -370,7 +370,7 @@ - + LI element may contain only Lbl and LBody elements (standardType != 'LI') || /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' @@ -382,7 +382,7 @@ - + Natural language for text in ActualText attribute shall be determined ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 @@ -392,7 +392,7 @@ - + Natural language for text in Alt attribute shall be determined Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 @@ -402,7 +402,7 @@ - + Natural language for text in E attribute shall be determined E == null || Lang_size != 0 || gSizeCatalogLang != 0 @@ -412,7 +412,7 @@ - + Natural language in the Contents entry for annotations shall be determined Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 @@ -424,7 +424,7 @@ - + Natural language in the TU key for form fields shall be determined TU == null || Lang_size != 0 || gSizeCatalogLang != 0 @@ -434,7 +434,7 @@ - + TOCI element should contained in TOC element (standardType != 'TOCI') || (parentStandardType == 'TOC') @@ -446,7 +446,7 @@ - + TOC element may contain a Caption element as its first kid and TOC element may contain only TOC, TOCI and Caption elements (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || @@ -461,7 +461,7 @@ - + TOCI element may contain only Reference, P, Lbl, TOC and NonStruct elements (standardType != 'TOCI') || /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' @@ -474,7 +474,7 @@ - + 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. @@ -488,6 +488,36 @@ + + + Natural language for text in ActualText attribute shall be determined + tag != 'Span' || ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute cannot be determined + + + + + + + Natural language for text in Alt attribute shall be determined + tag != 'Span' || Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute cannot be determined + + + + + + + Natural language for text in E attribute shall be determined + tag != 'Span' || E == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in E attribute cannot be determined + + + + Figure tags shall include an alternative representation or replacement text that represents the contents @@ -619,7 +649,7 @@ An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. - P != null && (P & (1 << 10)) == 1 + P != null && (P & (1 << 9)) == 1 The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false From b670252f6c838bb11c7313920c5936f828ddb47b Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 6 May 2020 21:47:23 +0300 Subject: [PATCH 309/557] PDF/UA validation. Rules 7.2.3.15,7.4.4.1,7.18.1.2,7.18.8.1,7.21.6.2. Added new profiles and fixed profiles. --- .../verapdf-profile-7-18-1-t02.xml | 28 + .../verapdf-profile-7-18-8-t01.xml | 23 + ...16.xml => verapdf-profile-7-2-t03-t15.xml} | 13 - .../verapdf-profile-7-21-6-t02.xml | 4 +- .../verapdf-profile-7-4-4-t01.xml | 2 +- PDF_UA/PDF-UA1.xml | 41 +- PDF_UA/WCAG-21-Complete.xml | 1052 +++++++++++++++++ 7 files changed, 1133 insertions(+), 30 deletions(-) create mode 100644 PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml create mode 100644 PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t03-t16.xml => verapdf-profile-7-2-t03-t15.xml} (92%) create mode 100644 PDF_UA/WCAG-21-Complete.xml diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml new file mode 100644 index 00000000..2660f89e --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml @@ -0,0 +1,28 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotation - 7.18.1 General - Alt in annotation + An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set + and whose rectangle is not outside the crop-box and does not have a Contents key shall have + an alternative description (in the form of an Alt entry in the enclosing structure element) +
+ + + + + An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set + and whose rectangle is not outside the crop-box and does not have a Contents key shall have + an alternative description (in the form of an Alt entry in the enclosing structure element) + structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' + || isOutsideCropBox == true || (F & 2) == 1 || Contents != null || Alt != null + + An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set + and whose rectangle is not outside the crop-box and does not have a Contents key does not have + an alternative description (in the form of an Alt entry in the enclosing structure element) + + + + + + +
diff --git a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml new file mode 100644 index 00000000..64b40060 --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.8 PrinterMark - Logical structure + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page + elements as defined in ISO 32000-1:2008, 14.8.2.2.3. +
+ + + + + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page + elements as defined in ISO 32000-1:2008, 14.8.2.2.3. + Subtype != 'PrinterMark' || structParentType == null + + A PrinterMark annotation is included in logical structure + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t16.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml similarity index 92% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t16.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml index 184a56a2..a5034f01 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t16.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml @@ -158,19 +158,6 @@
- If Table element contains one or more TBody kids, Table element should contain TFoot kid - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length > 0 - - Table element contains one or more TBody kids, but not contains TFoot kid - - - - - - - - If Table element contains one or more TBody kids, Table element should contain THead kid (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length > 0 diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml index c129b022..04591130 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml @@ -12,11 +12,11 @@ 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. + Microsoft Unicode (3,1 - Platform ID=3, Encoding ID=1) encoding in the 'cmap' table.
isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml index 763cf3c3..2ac2aeaf 100644 --- a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - number of H + ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - Number of H Each node in the tag tree shall contain at most one child H tag.
diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index 2df190f4..21006949 100644 --- a/PDF_UA/PDF-UA1.xml +++ b/PDF_UA/PDF-UA1.xml @@ -307,19 +307,6 @@
- If Table element contains one or more TBody kids, Table element should contain TFoot kid - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length > 0 - - Table element contains one or more TBody kids, but not contains TFoot kid - - - - - - - - If Table element contains one or more TBody kids, Table element should contain THead kid (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length > 0 @@ -670,6 +657,21 @@
+ + + An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set + and whose rectangle is not outside the crop-box and does not have a Contents key shall have + an alternative description (in the form of an Alt entry in the enclosing structure element) + structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' + || isOutsideCropBox == true || (F & 2) == 1 || Contents != null || Alt != null + + An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set + and whose rectangle is not outside the crop-box and does not have a Contents key does not have + an alternative description (in the form of an Alt entry in the enclosing structure element) + + + + Annotations of subtype TrapNet shall not be permitted. @@ -753,6 +755,17 @@ + + + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page + elements as defined in ISO 32000-1:2008, 14.8.2.2.3. + Subtype != 'PrinterMark' || structParentType == null + + A PrinterMark annotation is included in logical structure + + + + A conforming file shall not contain any reference XObjects @@ -928,7 +941,7 @@ 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. + Microsoft Unicode (3,1 - Platform ID=3, Encoding ID=1) encoding in the 'cmap' table. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml new file mode 100644 index 00000000..89644d0d --- /dev/null +++ b/PDF_UA/WCAG-21-Complete.xml @@ -0,0 +1,1052 @@ + + +
+ WCAG-2.1-Complete validation profile + Validation rules against WCAG 2.1 and ISO 14289-1:2014 +
+ + + + + Pages shall have the same orientation + gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation + + Pages are not have the same orientation + + + + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + UAIdentification_size == 1 + + The document metadata stream doesn't contains PDF/UA Identification Schema. + + + + + + + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. + part == 1 + + The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA conforming file. + + part + + + + + + + Content marked as Artifact should not present inside tagged content + tag != 'Artifact' || parentTag == null + + Content marked as Artifact is present inside tagged content + + + + + + + Tagged content should not present inside content marked as Artifact + tag == null || parentTag != 'Artifact' + + Tagged content is present inside content marked as Artifact + + + + + + + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) + Suspects != true + + Suspects entry has a value of true + + + + + + + + + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, + as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + This mapping may be indirect; within the role map a non-standard type can map directly to another + non-standard type, but eventually the mapping shall terminate at a standard type. + standardType != null + + Non-standard structure type is not mapped to a standard type or a circular mapping exists + + + + + + + + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists + + + + + + + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. + isRemappedStandardType == false + + Standard type is remapped + + + + + + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the + recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which + clearly identifies the document. + dc_title != null + + Metadata stream does not contain dc:title + + + + + + + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. + DisplayDocTitle == true + + DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true + + + + + + + The structure type and attributes of a structure element shall be semantically appropriate. + (!/^H([1-9][0-9]*)*$/.test(gStructureTag) || suspectRole == 'H') && (gStructureTag != 'P' || suspectRole == 'P') + + The structure type and attributes of a structure element are not semantically appropriate for the structure element. + + + + + + + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, + as described in PDF Reference 5.9, unless the font meets any of the following three conditions: + (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; + (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. + toUnicode != null + + The font does not define Unicode character map + + + + + + + Natural language in the Outline entries shall be determined + gSizeCatalogLang != 0 + + Natural language in the Outline entries cannot be determined + + + + + + + Table element may contain a Caption element as its first or last kid and + Table element may contain only TR, THead, TBody, TFoot and Caption elems + (standardType != 'Table') || /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) + || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) + || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + + Table element contains more than one Caption element or Table element contains a Caption element not as its first or + last kid or Table element contains not a TR, THead, TBody, TFoot or Caption elements + + + + + + + + + TR element should contained in Table, THead, TBody or TFoot element + (standardType != 'TR') || /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) + + TR element not contained in Table, THead, TBody and TFoot element + + + + + + + + + THead element should contained in Table element + (standardType != 'THead') || (parentStandardType == 'Table') + + THead element not contained in Table element + + + + + + + + + TBody element should contained in Table element + (standardType != 'TBody') || (parentStandardType == 'Table') + + TBody element not contained in Table element + + + + + + + + + TFoot element should contained in Table element + (standardType != 'TFoot') || (parentStandardType == 'Table') + + TFoot element not contained in Table element + + + + + + + + + TH element should contained in TR element + (standardType != 'TH') || (parentStandardType == 'TR') + + TH element not contained in TR element + + + + + + + + + TD element should contained in TR element + (standardType != 'TD') || (parentStandardType == 'TR') + + TD element not contained in TR element + + + + + + + + + TR element may contain only TH and TD elements + (standardType != 'TR') || /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + TR element contains not a TH or TD elements + + + + + + + + + Table element should contain zero or one THead kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) + + Table element contains more than one THead kid + + + + + + + + + Table element should contain zero or one TFoot kid + (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) + + Table element contains more than one TFoot kid + + + + + + + + + If Table element contains TFoot kid, Table element should contain one or more TBody kids + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains TFoot kid, but not contains TBody kids + + + + + + + + + If Table element contains THead kid, Table element should contain one or more TBody kids + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains THead kid, but not contains TBody kids + + + + + + + + + If Table element contains one or more TBody kids, Table element should contain THead kid + (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length > 0 + + Table element contains one or more TBody kids, but not contains THead kid + + + + + + + + + LI element should contained in L element + (standardType != 'LI') || (parentStandardType == 'L') + + LI element not contained in L element + + + + + + + + + LBody element should contained in LI element + (standardType != 'LBody') || (parentStandardType == 'LI') + + LBody element not contained in LI element + + + + + + + + + L element may contain a Caption element as its first kid and L element may contain only LI and Caption elements + (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || + kidsStandardTypes == 'Caption' + + L element contains more than one Caption element or L element contains a Caption element not as its first kid or + L element contains not a LI or Caption elements + + + + + + + + + LI element may contain only Lbl and LBody elements + (standardType != 'LI') || /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + LI element contains not a Lbl or LBody elements + + + + + + + + + Natural language for text in ActualText attribute shall be determined + ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute cannot be determined + + + + + + + Natural language for text in Alt attribute shall be determined + Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute cannot be determined + + + + + + + Natural language for text in E attribute shall be determined + E == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in E attribute cannot be determined + + + + + + + Natural language in the Contents entry for annotations shall be + determined + Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the Contents entry for annotations cannot be + determined + + + + + + + Natural language in the TU key for form fields shall be determined + TU == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the TU key for form fields cannot be determined + + + + + + + TOCI element should contained in TOC element + (standardType != 'TOCI') || (parentStandardType == 'TOC') + + TOCI element not contained in TOC element + + + + + + + + + TOC element may contain a Caption element as its first kid and + TOC element may contain only TOC, TOCI and Caption elements + (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || + kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + + TOC element contains more than one Caption element or TOC element contains a Caption element + not as its first kid or TOC elem contains not a TOC, TOCI or Caption elements + + + + + + + + + TOCI element may contain only Reference, P, Lbl, TOC and NonStruct elements + (standardType != 'TOCI') || /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || + kidsStandardTypes == '' + + TOCI element contains not a Reference, P, Lbl, TOC or NonStruct elements + + + + + + + + + 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-1:2008, 14.9.2. + A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. + /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) + + Value of the Lang entry is not Language-Tag + + + + + + + + + + Natural language for text in ActualText attribute shall be determined + tag != 'Span' || ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute cannot be determined + + + + + + + Natural language for text in Alt attribute shall be determined + tag != 'Span' || Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute cannot be determined + + + + + + + Natural language for text in E attribute shall be determined + tag != 'Span' || E == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in E attribute cannot be determined + + + + + + + Figure tags shall include an alternative representation or replacement text that represents the contents + marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 + (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + + Figure tag alternative or replacement text missing + + + + + + + + + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, + heading tags shall be used as follows: + (*) If any heading tags are used, H1 shall be the first. + (*) A document may use more than one instance of any specific tag level. For example, a tag level may + be repeated if document content requires it. + (*) If document semantics require a descending sequence of headers, such a sequence shall proceed + in strict numerical order and shall not skip an intervening heading level. + (*) A document may increment its heading sequence without restarting at H1 if document semantics + require it. + hasCorrectNumberedHeadings == true + + Does use numbered headings, but the first heading tag is not H1 or numbered heading levels in descending sequence are skipped + + + + + + + + + Each node in the tag tree shall contain at most one child H tag. + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + A node contains more than one H tag + + + + + + + All documents shall be either strongly or weakly structured, but not both. + usesHn == false + + Document uses both H and H# tags + + + + + + + All documents shall be either strongly or weakly structured, but not both. + usesH == false + + Document uses both H and H# tags + + + + + + + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, + 14.8.4.5 and shall have Alt or ActualText attributes + (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + + Formula tag is missing Alt or ActualText attributes + + + + + + + + + Note tag shall have ID entry + noteID != null && noteID != '' + + ID key of the Note tag is not present + + + + + + + Each Note tag shall have unique ID key + hasDuplicateNoteID == false + + ID key of the Note tag is non-unique + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + The AS key shall not appear in any optional content configuration dictionary. + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + containsEF == false || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, + 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. + P != null && (P & (1 << 9)) == 1 + + The file is encrypted but does not contain a P entry in its encryption dictionary or + the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false + + + + + + + + + + An annotation, excluding annotations of subtype Widget, Popup or Link, shall nested within an Annot tag + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || structParentType == 'Annot' + + An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag + + + + + + + An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set + and whose rectangle is not outside the crop-box and does not have a Contents key shall have + an alternative description (in the form of an Alt entry in the enclosing structure element) + structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' + || isOutsideCropBox == true || (F & 2) == 1 || Contents != null || Alt != null + + An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set + and whose rectangle is not outside the crop-box and does not have a Contents key does not have + an alternative description (in the form of an Alt entry in the enclosing structure element) + + + + + + + Annotations of subtype TrapNet shall not be permitted. + Subtype != 'TrapNet' + + An annotation of subtype TrapNet exists + + + + + + + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. + annots_size == 0 || Tabs == 'S' + + A page containing an annotation does not contain a Tabs key or has a Tabs key with a value other than S. + + + + + + + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. + Subtype != 'Widget' || structParentType == 'Form' + + A widget annotation is not nested within a Form tag + + + + + + + + + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. + Subtype != 'Link' || structParentType == 'Link' + + A link annotation is not nested within a Link tag + + + + + + + + + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. + Subtype != 'Link' || (Contents != null && Contents != '') + + A link annotation does not include an alternate description in the Contents Key + + + + + + + + + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) + are required. Value of CT should conform to the content type specification described in Internet RFC 2045 + CT != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(CT) + + CT key is missing from the media clip data dictionary or + value of CT not conform to the content type specification described in Internet RFC 2045 + + + + + + + + + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) + are required. + Alt != null && Alt != '' + + Alt key is missing from the media clip data dictionary + + + + + + + + + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page + elements as defined in ISO 32000-1:2008, 14.8.2.2.3. + Subtype != 'PrinterMark' || structParentType == null + + A PrinterMark annotation is included in logical structure + + + + + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + 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" + + A CMap references another non-standard CMap + + + + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 тАУ Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + + 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 ISO 19005-2, 6.2.11.7.2. + toUnicode != null + + The glyph can not be mapped to Unicode + + + + + + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value + + + + + + + A PDF/UA compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + + false + true + + + false + true + + + 0 + Lang_size + + + null + structureTag + + + 'Square' + orientation == 'Square' ? gPageOrientation : orientation + + +
From f074573508ea7b4816a1f1df198595f0973c9b62 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 14 May 2020 10:07:33 +0300 Subject: [PATCH 310/557] PDF/UA validation. Fixed profiles 1.3.4.1, 7.2.15, 7.16.1, 7.18.1.2. --- PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml | 2 +- .../7.18.1 General/verapdf-profile-7-18-1-t02.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml | 7 +++---- PDF_UA/PDF-UA1.xml | 11 +++++------ PDF_UA/WCAG-21-Complete.xml | 13 ++++++------- PDF_UA/WCAG-21.xml | 2 +- .../1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml | 2 +- 7 files changed, 18 insertions(+), 21 deletions(-) diff --git a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml index 03ab567c..65335782 100644 --- a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml +++ b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml @@ -11,7 +11,7 @@ An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. - P != null && (P & (1 << 9)) == 1 + P != null && (P & 512) == 512 The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml index 2660f89e..458c8ce9 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml @@ -14,7 +14,7 @@ and whose rectangle is not outside the crop-box and does not have a Contents key shall have an alternative description (in the form of an Alt entry in the enclosing structure element) structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' - || isOutsideCropBox == true || (F & 2) == 1 || Contents != null || Alt != null + || isOutsideCropBox == true || (F & 2) == 2 || Contents != null || Alt != null An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set and whose rectangle is not outside the crop-box and does not have a Contents key does not have diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml index a5034f01..c86a49c6 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml @@ -158,11 +158,10 @@
- If Table element contains one or more TBody kids, Table element should contain THead kid - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length > 0 + THead, TBody and TFoot element may contain only TR elements + (standardType != 'THead') || (standardType != 'TBody') || (standardType != 'TFoot') || kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - Table element contains one or more TBody kids, but not contains THead kid + THead, TBody or TFoot element contains not a TR elements diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index 21006949..a264e010 100644 --- a/PDF_UA/PDF-UA1.xml +++ b/PDF_UA/PDF-UA1.xml @@ -307,11 +307,10 @@ - If Table element contains one or more TBody kids, Table element should contain THead kid - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length > 0 + THead, TBody and TFoot element may contain only TR elements + (standardType != 'THead') || (standardType != 'TBody') || (standardType != 'TFoot') || kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - Table element contains one or more TBody kids, but not contains THead kid + THead, TBody or TFoot element contains not a TR elements @@ -636,7 +635,7 @@ An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. - P != null && (P & (1 << 9)) == 1 + P != null && (P & 512) == 512 The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false @@ -663,7 +662,7 @@ and whose rectangle is not outside the crop-box and does not have a Contents key shall have an alternative description (in the form of an Alt entry in the enclosing structure element) structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' - || isOutsideCropBox == true || (F & 2) == 1 || Contents != null || Alt != null + || isOutsideCropBox == true || (F & 2) == 2 || Contents != null || Alt != null An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set and whose rectangle is not outside the crop-box and does not have a Contents key does not have diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 89644d0d..75aec069 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -7,7 +7,7 @@ - + Pages shall have the same orientation gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation @@ -327,11 +327,10 @@ - If Table element contains one or more TBody kids, Table element should contain THead kid - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length > 0 + THead, TBody and TFoot element may contain only TR elements + (standardType != 'THead') || (standardType != 'TBody') || (standardType != 'TFoot') || kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - Table element contains one or more TBody kids, but not contains THead kid + THead, TBody or TFoot element contains not a TR elements @@ -656,7 +655,7 @@ An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. - P != null && (P & (1 << 9)) == 1 + P != null && (P & 512) == 512 The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false @@ -683,7 +682,7 @@ and whose rectangle is not outside the crop-box and does not have a Contents key shall have an alternative description (in the form of an Alt entry in the enclosing structure element) structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' - || isOutsideCropBox == true || (F & 2) == 1 || Contents != null || Alt != null + || isOutsideCropBox == true || (F & 2) == 2 || Contents != null || Alt != null An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set and whose rectangle is not outside the crop-box and does not have a Contents key does not have diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 2a912433..f4c0fab3 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -7,7 +7,7 @@ - + Pages shall have the same orientation gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation diff --git a/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml b/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml index 0187e9d4..b86e4a7e 100644 --- a/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml +++ b/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml @@ -7,7 +7,7 @@ - + Pages shall have the same orientation gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation From 32bae216be2d1678b4525628bde3e6d1d6e79655 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 15 May 2020 11:33:28 +0300 Subject: [PATCH 311/557] PDF/UA validation. Added profiles 7.2.33, 7.2.36-7.2.38. --- ...15.xml => verapdf-profile-7-2-t03-t14.xml} | 60 +++----- .../7.2 Text/verapdf-profile-7-2-t17-t20.xml | 17 +-- .../7.2 Text/verapdf-profile-7-2-t26-t28.xml | 15 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml | 26 ++++ .../7.2 Text/verapdf-profile-7-2-t36-t38.xml | 47 ++++++ .../verapdf-profile-7-21-6-t04.xml | 2 +- PDF_UA/PDF-UA1.xml | 140 +++++++++++------- PDF_UA/WCAG-21-Complete.xml | 140 +++++++++++------- 8 files changed, 285 insertions(+), 162 deletions(-) rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t03-t15.xml => verapdf-profile-7-2-t03-t14.xml} (73%) create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t14.xml similarity index 73% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t14.xml index c86a49c6..a173779a 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t14.xml @@ -6,11 +6,11 @@
- + Table element may contain a Caption element as its first or last kid and Table element may contain only TR, THead, TBody, TFoot and Caption elems - (standardType != 'Table') || /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) + /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' @@ -22,10 +22,10 @@
- + TR element should contained in Table, THead, TBody or TFoot element - (standardType != 'TR') || /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) + /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) TR element not contained in Table, THead, TBody and TFoot element @@ -34,10 +34,10 @@
- + THead element should contained in Table element - (standardType != 'THead') || (parentStandardType == 'Table') + parentStandardType == 'Table' THead element not contained in Table element @@ -46,10 +46,10 @@
- + TBody element should contained in Table element - (standardType != 'TBody') || (parentStandardType == 'Table') + parentStandardType == 'Table' TBody element not contained in Table element @@ -58,10 +58,10 @@ - + TFoot element should contained in Table element - (standardType != 'TFoot') || (parentStandardType == 'Table') + parentStandardType == 'Table' TFoot element not contained in Table element @@ -70,10 +70,10 @@ - + TH element should contained in TR element - (standardType != 'TH') || (parentStandardType == 'TR') + parentStandardType == 'TR' TH element not contained in TR element @@ -82,10 +82,10 @@ - + TD element should contained in TR element - (standardType != 'TD') || (parentStandardType == 'TR') + parentStandardType == 'TR' TD element not contained in TR element @@ -94,10 +94,10 @@ - + TR element may contain only TH and TD elements - (standardType != 'TR') || /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' TR element contains not a TH or TD elements @@ -106,10 +106,10 @@ - + Table element should contain zero or one THead kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 Table element contains more than one THead kid @@ -118,10 +118,10 @@ - + Table element should contain zero or one TFoot kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 Table element contains more than one TFoot kid @@ -130,10 +130,10 @@ - + If Table element contains TFoot kid, Table element should contain one or more TBody kids - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains TFoot kid, but not contains TBody kids @@ -143,10 +143,10 @@ - + If Table element contains THead kid, Table element should contain one or more TBody kids - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains THead kid, but not contains TBody kids @@ -156,18 +156,6 @@ - - - THead, TBody and TFoot element may contain only TR elements - (standardType != 'THead') || (standardType != 'TBody') || (standardType != 'TFoot') || kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - - THead, TBody or TFoot element contains not a TR elements - - - - - -
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml index c7f51e0b..082d6c4b 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml @@ -6,10 +6,10 @@
- + LI element should contained in L element - (standardType != 'LI') || (parentStandardType == 'L') + parentStandardType == 'L' LI element not contained in L element @@ -18,10 +18,10 @@ - + LBody element should contained in LI element - (standardType != 'LBody') || (parentStandardType == 'LI') + parentStandardType == 'LI' LBody element not contained in LI element @@ -30,11 +30,10 @@ - + L element may contain a Caption element as its first kid and L element may contain only LI and Caption elements - (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || - kidsStandardTypes == 'Caption' + /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' L element contains more than one Caption element or L element contains a Caption element not as its first kid or L element contains not a LI or Caption elements @@ -44,10 +43,10 @@ - + LI element may contain only Lbl and LBody elements - (standardType != 'LI') || /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' LI element contains not a Lbl or LBody elements diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t28.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t28.xml index 2908e46c..091b30af 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t28.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t28.xml @@ -6,10 +6,10 @@
- + TOCI element should contained in TOC element - (standardType != 'TOCI') || (parentStandardType == 'TOC') + parentStandardType == 'TOC' TOCI element not contained in TOC element @@ -18,12 +18,12 @@
- + TOC element may contain a Caption element as its first kid and TOC element may contain only TOC, TOCI and Caption elements - (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || - kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || + kidsStandardTypes == '' TOC element contains more than one Caption element or TOC element contains a Caption element not as its first kid or TOC elem contains not a TOC, TOCI or Caption elements @@ -33,11 +33,10 @@ - + TOCI element may contain only Reference, P, Lbl, TOC and NonStruct elements - (standardType != 'TOCI') || /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || - kidsStandardTypes == '' + /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' TOCI element contains not a Reference, P, Lbl, TOC or NonStruct elements diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml new file mode 100644 index 00000000..70f6beec --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Lang for metadata + Natural language for document metadata shall be determined +
+ + + + + Natural language for document metadata shall be determined + gSizeCatalogLang != 0 + + Natural language for document metadata cannot be determined + + + + + + + + 0 + Lang_size + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml new file mode 100644 index 00000000..8ca0fe8b --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml @@ -0,0 +1,47 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Table structure + A table-related structure element should used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337. +
+ + + + + THead element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + THead element contains not a TR elements + + + + + + + + + TBody element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + TBody element contains not a TR elements + + + + + + + + + TFoot element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + TFoot element contains not a TR elements + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml index 9635fede..a2077a28 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml @@ -10,7 +10,7 @@ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains more than one cmap subtable diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index a264e010..cd2c8655 100644 --- a/PDF_UA/PDF-UA1.xml +++ b/PDF_UA/PDF-UA1.xml @@ -155,11 +155,11 @@ - + Table element may contain a Caption element as its first or last kid and Table element may contain only TR, THead, TBody, TFoot and Caption elems - (standardType != 'Table') || /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) + /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' @@ -171,10 +171,10 @@ - + TR element should contained in Table, THead, TBody or TFoot element - (standardType != 'TR') || /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) + /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) TR element not contained in Table, THead, TBody and TFoot element @@ -183,10 +183,10 @@ - + THead element should contained in Table element - (standardType != 'THead') || (parentStandardType == 'Table') + parentStandardType == 'Table' THead element not contained in Table element @@ -195,10 +195,10 @@ - + TBody element should contained in Table element - (standardType != 'TBody') || (parentStandardType == 'Table') + parentStandardType == 'Table' TBody element not contained in Table element @@ -207,10 +207,10 @@ - + TFoot element should contained in Table element - (standardType != 'TFoot') || (parentStandardType == 'Table') + parentStandardType == 'Table' TFoot element not contained in Table element @@ -219,10 +219,10 @@ - + TH element should contained in TR element - (standardType != 'TH') || (parentStandardType == 'TR') + parentStandardType == 'TR' TH element not contained in TR element @@ -231,10 +231,10 @@ - + TD element should contained in TR element - (standardType != 'TD') || (parentStandardType == 'TR') + parentStandardType == 'TR' TD element not contained in TR element @@ -243,10 +243,10 @@ - + TR element may contain only TH and TD elements - (standardType != 'TR') || /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' TR element contains not a TH or TD elements @@ -255,10 +255,10 @@ - + Table element should contain zero or one THead kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 Table element contains more than one THead kid @@ -267,10 +267,10 @@ - + Table element should contain zero or one TFoot kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 Table element contains more than one TFoot kid @@ -279,10 +279,10 @@ - + If Table element contains TFoot kid, Table element should contain one or more TBody kids - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains TFoot kid, but not contains TBody kids @@ -292,10 +292,10 @@ - + If Table element contains THead kid, Table element should contain one or more TBody kids - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains THead kid, but not contains TBody kids @@ -305,22 +305,10 @@ - - - THead, TBody and TFoot element may contain only TR elements - (standardType != 'THead') || (standardType != 'TBody') || (standardType != 'TFoot') || kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - - THead, TBody or TFoot element contains not a TR elements - - - - - - - + LI element should contained in L element - (standardType != 'LI') || (parentStandardType == 'L') + parentStandardType == 'L' LI element not contained in L element @@ -329,10 +317,10 @@ - + LBody element should contained in LI element - (standardType != 'LBody') || (parentStandardType == 'LI') + parentStandardType == 'LI' LBody element not contained in LI element @@ -341,11 +329,10 @@ - + L element may contain a Caption element as its first kid and L element may contain only LI and Caption elements - (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || - kidsStandardTypes == 'Caption' + /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' L element contains more than one Caption element or L element contains a Caption element not as its first kid or L element contains not a LI or Caption elements @@ -355,10 +342,10 @@ - + LI element may contain only Lbl and LBody elements - (standardType != 'LI') || /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' LI element contains not a Lbl or LBody elements @@ -419,10 +406,10 @@ - + TOCI element should contained in TOC element - (standardType != 'TOCI') || (parentStandardType == 'TOC') + parentStandardType == 'TOC' TOCI element not contained in TOC element @@ -431,12 +418,12 @@ - + TOC element may contain a Caption element as its first kid and TOC element may contain only TOC, TOCI and Caption elements - (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || - kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || + kidsStandardTypes == '' TOC element contains more than one Caption element or TOC element contains a Caption element not as its first kid or TOC elem contains not a TOC, TOCI or Caption elements @@ -446,11 +433,10 @@ - + TOCI element may contain only Reference, P, Lbl, TOC and NonStruct elements - (standardType != 'TOCI') || /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || - kidsStandardTypes == '' + /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' TOCI element contains not a Reference, P, Lbl, TOC or NonStruct elements @@ -504,6 +490,52 @@ + + + Natural language for document metadata shall be determined + gSizeCatalogLang != 0 + + Natural language for document metadata cannot be determined + + + + + + + THead element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + THead element contains not a TR elements + + + + + + + + + TBody element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + TBody element contains not a TR elements + + + + + + + + + TFoot element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + TFoot element contains not a TR elements + + + + + + Figure tags shall include an alternative representation or replacement text that represents the contents @@ -963,7 +995,7 @@ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 тАУ Platform ID=3, Encoding ID=0) encoding. + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains more than one cmap subtable diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 75aec069..67ba49ea 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -175,11 +175,11 @@ - + Table element may contain a Caption element as its first or last kid and Table element may contain only TR, THead, TBody, TFoot and Caption elems - (standardType != 'Table') || /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) + /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' @@ -191,10 +191,10 @@ - + TR element should contained in Table, THead, TBody or TFoot element - (standardType != 'TR') || /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) + /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) TR element not contained in Table, THead, TBody and TFoot element @@ -203,10 +203,10 @@ - + THead element should contained in Table element - (standardType != 'THead') || (parentStandardType == 'Table') + parentStandardType == 'Table' THead element not contained in Table element @@ -215,10 +215,10 @@ - + TBody element should contained in Table element - (standardType != 'TBody') || (parentStandardType == 'Table') + parentStandardType == 'Table' TBody element not contained in Table element @@ -227,10 +227,10 @@ - + TFoot element should contained in Table element - (standardType != 'TFoot') || (parentStandardType == 'Table') + parentStandardType == 'Table' TFoot element not contained in Table element @@ -239,10 +239,10 @@ - + TH element should contained in TR element - (standardType != 'TH') || (parentStandardType == 'TR') + parentStandardType == 'TR' TH element not contained in TR element @@ -251,10 +251,10 @@ - + TD element should contained in TR element - (standardType != 'TD') || (parentStandardType == 'TR') + parentStandardType == 'TR' TD element not contained in TR element @@ -263,10 +263,10 @@ - + TR element may contain only TH and TD elements - (standardType != 'TR') || /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' TR element contains not a TH or TD elements @@ -275,10 +275,10 @@ - + Table element should contain zero or one THead kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 Table element contains more than one THead kid @@ -287,10 +287,10 @@ - + Table element should contain zero or one TFoot kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 Table element contains more than one TFoot kid @@ -299,10 +299,10 @@ - + If Table element contains TFoot kid, Table element should contain one or more TBody kids - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains TFoot kid, but not contains TBody kids @@ -312,10 +312,10 @@ - + If Table element contains THead kid, Table element should contain one or more TBody kids - (standardType != 'Table') || kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains THead kid, but not contains TBody kids @@ -325,22 +325,10 @@ - - - THead, TBody and TFoot element may contain only TR elements - (standardType != 'THead') || (standardType != 'TBody') || (standardType != 'TFoot') || kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - - THead, TBody or TFoot element contains not a TR elements - - - - - - - + LI element should contained in L element - (standardType != 'LI') || (parentStandardType == 'L') + parentStandardType == 'L' LI element not contained in L element @@ -349,10 +337,10 @@ - + LBody element should contained in LI element - (standardType != 'LBody') || (parentStandardType == 'LI') + parentStandardType == 'LI' LBody element not contained in LI element @@ -361,11 +349,10 @@ - + L element may contain a Caption element as its first kid and L element may contain only LI and Caption elements - (standardType != 'L') || /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || - kidsStandardTypes == 'Caption' + /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' L element contains more than one Caption element or L element contains a Caption element not as its first kid or L element contains not a LI or Caption elements @@ -375,10 +362,10 @@ - + LI element may contain only Lbl and LBody elements - (standardType != 'LI') || /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' LI element contains not a Lbl or LBody elements @@ -439,10 +426,10 @@ - + TOCI element should contained in TOC element - (standardType != 'TOCI') || (parentStandardType == 'TOC') + parentStandardType == 'TOC' TOCI element not contained in TOC element @@ -451,12 +438,12 @@ - + TOC element may contain a Caption element as its first kid and TOC element may contain only TOC, TOCI and Caption elements - (standardType != 'TOC') || /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || - kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || + kidsStandardTypes == '' TOC element contains more than one Caption element or TOC element contains a Caption element not as its first kid or TOC elem contains not a TOC, TOCI or Caption elements @@ -466,11 +453,10 @@ - + TOCI element may contain only Reference, P, Lbl, TOC and NonStruct elements - (standardType != 'TOCI') || /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || - kidsStandardTypes == '' + /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' TOCI element contains not a Reference, P, Lbl, TOC or NonStruct elements @@ -524,6 +510,52 @@ + + + Natural language for document metadata shall be determined + gSizeCatalogLang != 0 + + Natural language for document metadata cannot be determined + + + + + + + THead element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + THead element contains not a TR elements + + + + + + + + + TBody element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + TBody element contains not a TR elements + + + + + + + + + TFoot element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + TFoot element contains not a TR elements + + + + + + Figure tags shall include an alternative representation or replacement text that represents the contents @@ -983,7 +1015,7 @@ Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 тАУ Platform ID=3, Encoding ID=0) encoding. + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains more than one cmap subtable From 339d926679cd1232fdce1928045fd855e00300f4 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Sat, 23 May 2020 21:43:18 +0300 Subject: [PATCH 312/557] PDF/UA validation. Fixed profiles 7.2.4, 7.11.1 Fixed profiles 7.2.19, 7.2.28. --- .../verapdf-profile-7-11-t01.xml | 8 +++--- .../verapdf-profile-7-18-8-t01.xml | 2 +- .../7.2 Text/verapdf-profile-7-2-t17-t20.xml | 6 ++-- ...28.xml => verapdf-profile-7-2-t26-t27.xml} | 12 -------- PDF_UA/PDF-UA1.xml | 28 ++++++------------- PDF_UA/WCAG-21-Complete.xml | 28 ++++++------------- 6 files changed, 24 insertions(+), 60 deletions(-) rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t26-t28.xml => verapdf-profile-7-2-t26-t27.xml} (73%) diff --git a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml index b92db74e..ef091c7e 100644 --- a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml +++ b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml @@ -2,16 +2,16 @@
ISO 14289-1:2014 - 7.11 Embedded files - F and UF keys - The file specification dictionary for an embedded file shall contain the F and UF keys + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys
- The file specification dictionary for an embedded file shall contain the F and UF keys - containsEF == false || (F != null && UF != null) + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys + containsEF == false || (F != null && F != '' && UF != null && UF != '') - The file specification dictionary for an embedded file does not contain either F or EF key + The file specification dictionary for an embedded file does not contain either F or EF key or at least one of the keys is empty diff --git a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml index 64b40060..d09bca4a 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml @@ -11,7 +11,7 @@ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. - Subtype != 'PrinterMark' || structParentType == null + Subtype != 'PrinterMark' || structParentType == null A PrinterMark annotation is included in logical structure diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml index 082d6c4b..f27851f9 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml @@ -32,11 +32,11 @@ - L element may contain a Caption element as its first kid and L element may contain only LI and Caption elements - /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' + L element may contain a Caption element as its first kid and L element may contain only L, LI and Caption elements + /^(Caption&)?(L|LI)(&(L|LI))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' L element contains more than one Caption element or L element contains a Caption element not as its first kid or - L element contains not a LI or Caption elements + L element contains not a L, LI or Caption elements diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t28.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml similarity index 73% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t28.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml index 091b30af..480efac5 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t28.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml @@ -33,18 +33,6 @@ - - - TOCI element may contain only Reference, P, Lbl, TOC and NonStruct elements - /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - - TOCI element contains not a Reference, P, Lbl, TOC or NonStruct elements - - - - - -
diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDF-UA1.xml index cd2c8655..f38ed301 100644 --- a/PDF_UA/PDF-UA1.xml +++ b/PDF_UA/PDF-UA1.xml @@ -174,7 +174,7 @@ TR element should contained in Table, THead, TBody or TFoot element - /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) + /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) TR element not contained in Table, THead, TBody and TFoot element @@ -331,11 +331,11 @@ - L element may contain a Caption element as its first kid and L element may contain only LI and Caption elements - /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' + L element may contain a Caption element as its first kid and L element may contain only L, LI and Caption elements + /^(Caption&)?(L|LI)(&(L|LI))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' L element contains more than one Caption element or L element contains a Caption element not as its first kid or - L element contains not a LI or Caption elements + L element contains not a L, LI or Caption elements @@ -433,18 +433,6 @@ - - - TOCI element may contain only Reference, P, Lbl, TOC and NonStruct elements - /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - - TOCI element contains not a Reference, P, Lbl, TOC or NonStruct elements - - - - - - If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or @@ -655,10 +643,10 @@ - The file specification dictionary for an embedded file shall contain the F and UF keys - containsEF == false || (F != null && UF != null) + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys + containsEF == false || (F != null && F != '' && UF != null && UF != '') - The file specification dictionary for an embedded file does not contain either F or EF key + The file specification dictionary for an embedded file does not contain either F or EF key or at least one of the keys is empty @@ -790,7 +778,7 @@ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. - Subtype != 'PrinterMark' || structParentType == null + Subtype != 'PrinterMark' || structParentType == null A PrinterMark annotation is included in logical structure diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 67ba49ea..26cbf08f 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -194,7 +194,7 @@ TR element should contained in Table, THead, TBody or TFoot element - /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) + /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) TR element not contained in Table, THead, TBody and TFoot element @@ -351,11 +351,11 @@ - L element may contain a Caption element as its first kid and L element may contain only LI and Caption elements - /^(Caption&)?(LI)(&LI)*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' + L element may contain a Caption element as its first kid and L element may contain only L, LI and Caption elements + /^(Caption&)?(L|LI)(&(L|LI))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' L element contains more than one Caption element or L element contains a Caption element not as its first kid or - L element contains not a LI or Caption elements + L element contains not a L, LI or Caption elements @@ -453,18 +453,6 @@ - - - TOCI element may contain only Reference, P, Lbl, TOC and NonStruct elements - /^(Reference|P|Lbl|TOC|NonStruct)(&(Reference|P|Lbl|TOC|NonStruct))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - - TOCI element contains not a Reference, P, Lbl, TOC or NonStruct elements - - - - - - If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or @@ -675,10 +663,10 @@ - The file specification dictionary for an embedded file shall contain the F and UF keys - containsEF == false || (F != null && UF != null) + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys + containsEF == false || (F != null && F != '' && UF != null && UF != '') - The file specification dictionary for an embedded file does not contain either F or EF key + The file specification dictionary for an embedded file does not contain either F or EF key or at least one of the keys is empty @@ -810,7 +798,7 @@ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. - Subtype != 'PrinterMark' || structParentType == null + Subtype != 'PrinterMark' || structParentType == null A PrinterMark annotation is included in logical structure From 3ecfc14126f2ab62e1f87b264d67834c51d4349e Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 29 May 2020 18:37:30 +0300 Subject: [PATCH 313/557] Fix validation profiles --- .../{PDF-UA1-Human.xml => PDFUA-1-Human.xml} | 0 PDF_UA/{PDF-UA1.xml => PDFUA-1.xml} | 2086 ++++++++--------- PDF_UA/WCAG-21-Complete.xml | 2 +- PDF_UA/WCAG-21.xml | 2 +- 4 files changed, 1045 insertions(+), 1045 deletions(-) rename PDF_UA/{PDF-UA1-Human.xml => PDFUA-1-Human.xml} (100%) rename PDF_UA/{PDF-UA1.xml => PDFUA-1.xml} (98%) diff --git a/PDF_UA/PDF-UA1-Human.xml b/PDF_UA/PDFUA-1-Human.xml similarity index 100% rename from PDF_UA/PDF-UA1-Human.xml rename to PDF_UA/PDFUA-1-Human.xml diff --git a/PDF_UA/PDF-UA1.xml b/PDF_UA/PDFUA-1.xml similarity index 98% rename from PDF_UA/PDF-UA1.xml rename to PDF_UA/PDFUA-1.xml index f38ed301..9ec221c9 100644 --- a/PDF_UA/PDF-UA1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -1,1043 +1,1043 @@ - - -
- PDF/UA-1 validation profile - Validation rules against ISO 14289-1:2014 -
- - - - - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. - UAIdentification_size == 1 - - The document metadata stream doesn't contains PDF/UA Identification Schema. - - - - - - - The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. - part == 1 - - The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA conforming file. - - part - - - - - - - Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || parentTag == null - - Content marked as Artifact is present inside tagged content - - - - - - - Tagged content should not present inside content marked as Artifact - tag == null || parentTag != 'Artifact' - - Tagged content is present inside content marked as Artifact - - - - - - - Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) - Suspects != true - - Suspects entry has a value of true - - - - - - - - - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, - as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. - This mapping may be indirect; within the role map a non-standard type can map directly to another - non-standard type, but eventually the mapping shall terminate at a standard type. - standardType != null - - Non-standard structure type is not mapped to a standard type or a circular mapping exists - - - - - - - - - A circular mapping shall not exist - circularMappingExist != true - - A circular mapping exists - - - - - - - Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. - isRemappedStandardType == false - - Standard type is remapped - - - - - - - - - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. - metadata_size == 1 - - The document catalog dictionary doesn't contain metadata key. - - - - - - - - - The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the - recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which - clearly identifies the document. - dc_title != null - - Metadata stream does not contain dc:title - - - - - - - The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. - DisplayDocTitle == true - - DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true - - - - - - - The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, - as described in PDF Reference 5.9, unless the font meets any of the following three conditions: - (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; - (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. - toUnicode != null - - The font does not define Unicode character map - - - - - - - Natural language in the Outline entries shall be determined - gSizeCatalogLang != 0 - - Natural language in the Outline entries cannot be determined - - - - - - - Table element may contain a Caption element as its first or last kid and - Table element may contain only TR, THead, TBody, TFoot and Caption elems - /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) - || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) - || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' - - Table element contains more than one Caption element or Table element contains a Caption element not as its first or - last kid or Table element contains not a TR, THead, TBody, TFoot or Caption elements - - - - - - - - - TR element should contained in Table, THead, TBody or TFoot element - /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) - - TR element not contained in Table, THead, TBody and TFoot element - - - - - - - - - THead element should contained in Table element - parentStandardType == 'Table' - - THead element not contained in Table element - - - - - - - - - TBody element should contained in Table element - parentStandardType == 'Table' - - TBody element not contained in Table element - - - - - - - - - TFoot element should contained in Table element - parentStandardType == 'Table' - - TFoot element not contained in Table element - - - - - - - - - TH element should contained in TR element - parentStandardType == 'TR' - - TH element not contained in TR element - - - - - - - - - TD element should contained in TR element - parentStandardType == 'TR' - - TD element not contained in TR element - - - - - - - - - TR element may contain only TH and TD elements - /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - - TR element contains not a TH or TD elements - - - - - - - - - Table element should contain zero or one THead kid - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 - - Table element contains more than one THead kid - - - - - - - - - Table element should contain zero or one TFoot kid - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 - - Table element contains more than one TFoot kid - - - - - - - - - If Table element contains TFoot kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - - Table element contains TFoot kid, but not contains TBody kids - - - - - - - - - If Table element contains THead kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - - Table element contains THead kid, but not contains TBody kids - - - - - - - - - LI element should contained in L element - parentStandardType == 'L' - - LI element not contained in L element - - - - - - - - - LBody element should contained in LI element - parentStandardType == 'LI' - - LBody element not contained in LI element - - - - - - - - - L element may contain a Caption element as its first kid and L element may contain only L, LI and Caption elements - /^(Caption&)?(L|LI)(&(L|LI))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' - - L element contains more than one Caption element or L element contains a Caption element not as its first kid or - L element contains not a L, LI or Caption elements - - - - - - - - - LI element may contain only Lbl and LBody elements - /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - - LI element contains not a Lbl or LBody elements - - - - - - - - - Natural language for text in ActualText attribute shall be determined - ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language for text in ActualText attribute cannot be determined - - - - - - - Natural language for text in Alt attribute shall be determined - Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language for text in Alt attribute cannot be determined - - - - - - - Natural language for text in E attribute shall be determined - E == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language for text in E attribute cannot be determined - - - - - - - Natural language in the Contents entry for annotations shall be - determined - Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language in the Contents entry for annotations cannot be - determined - - - - - - - Natural language in the TU key for form fields shall be determined - TU == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language in the TU key for form fields cannot be determined - - - - - - - TOCI element should contained in TOC element - parentStandardType == 'TOC' - - TOCI element not contained in TOC element - - - - - - - - - TOC element may contain a Caption element as its first kid and - TOC element may contain only TOC, TOCI and Caption elements - /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || - kidsStandardTypes == '' - - TOC element contains more than one Caption element or TOC element contains a Caption element - not as its first kid or TOC elem contains not a TOC, TOCI or Caption elements - - - - - - - - - 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-1:2008, 14.9.2. - A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. - /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - - Value of the Lang entry is not Language-Tag - - - - - - - - - - Natural language for text in ActualText attribute shall be determined - tag != 'Span' || ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language for text in ActualText attribute cannot be determined - - - - - - - Natural language for text in Alt attribute shall be determined - tag != 'Span' || Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language for text in Alt attribute cannot be determined - - - - - - - Natural language for text in E attribute shall be determined - tag != 'Span' || E == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language for text in E attribute cannot be determined - - - - - - - Natural language for document metadata shall be determined - gSizeCatalogLang != 0 - - Natural language for document metadata cannot be determined - - - - - - - THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - - THead element contains not a TR elements - - - - - - - - - TBody element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - - TBody element contains not a TR elements - - - - - - - - - TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - - TFoot element contains not a TR elements - - - - - - - - - Figure tags shall include an alternative representation or replacement text that represents the contents - marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') - - Figure tag alternative or replacement text missing - - - - - - - - - For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, - heading tags shall be used as follows: - (*) If any heading tags are used, H1 shall be the first. - (*) A document may use more than one instance of any specific tag level. For example, a tag level may - be repeated if document content requires it. - (*) If document semantics require a descending sequence of headers, such a sequence shall proceed - in strict numerical order and shall not skip an intervening heading level. - (*) A document may increment its heading sequence without restarting at H1 if document semantics - require it. - hasCorrectNumberedHeadings == true - - Does use numbered headings, but the first heading tag is not H1 or numbered heading levels in descending sequence are skipped - - - - - - - - - Each node in the tag tree shall contain at most one child H tag. - kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 - - A node contains more than one H tag - - - - - - - All documents shall be either strongly or weakly structured, but not both. - usesHn == false - - Document uses both H and H# tags - - - - - - - All documents shall be either strongly or weakly structured, but not both. - usesH == false - - Document uses both H and H# tags - - - - - - - All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, - 14.8.4.5 and shall have Alt or ActualText attributes - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') - - Formula tag is missing Alt or ActualText attributes - - - - - - - - - Note tag shall have ID entry - noteID != null && noteID != '' - - ID key of the Note tag is not present - - - - - - - Each Note tag shall have unique ID key - hasDuplicateNoteID == false - - ID key of the Note tag is non-unique - - - - - - - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. - Name != null && Name.length() > 0 - - Missing or empty Name entry of the optional content configuration dictionary - - - - - - - The AS key shall not appear in any optional content configuration dictionary. - AS == null - - AS key is present in the optional content configuration dictionary - - - - - - - The file specification dictionary for an embedded file shall contain the non-empty F and UF keys - containsEF == false || (F != null && F != '' && UF != null && UF != '') - - The file specification dictionary for an embedded file does not contain either F or EF key or at least one of the keys is empty - - - - - - - An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, - 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. - P != null && (P & 512) == 512 - - The file is encrypted but does not contain a P entry in its encryption dictionary or - the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false - - - - - - - - - - An annotation, excluding annotations of subtype Widget, Popup or Link, shall nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || structParentType == 'Annot' - - An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag - - - - - - - An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set - and whose rectangle is not outside the crop-box and does not have a Contents key shall have - an alternative description (in the form of an Alt entry in the enclosing structure element) - structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' - || isOutsideCropBox == true || (F & 2) == 2 || Contents != null || Alt != null - - An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set - and whose rectangle is not outside the crop-box and does not have a Contents key does not have - an alternative description (in the form of an Alt entry in the enclosing structure element) - - - - - - - Annotations of subtype TrapNet shall not be permitted. - Subtype != 'TrapNet' - - An annotation of subtype TrapNet exists - - - - - - - Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. - annots_size == 0 || Tabs == 'S' - - A page containing an annotation does not contain a Tabs key or has a Tabs key with a value other than S. - - - - - - - A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. - Subtype != 'Widget' || structParentType == 'Form' - - A widget annotation is not nested within a Form tag - - - - - - - - - Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - Subtype != 'Link' || structParentType == 'Link' - - A link annotation is not nested within a Link tag - - - - - - - - - Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. - Subtype != 'Link' || (Contents != null && Contents != '') - - A link annotation does not include an alternate description in the Contents Key - - - - - - - - - In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) - are required. Value of CT should conform to the content type specification described in Internet RFC 2045 - CT != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(CT) - - CT key is missing from the media clip data dictionary or - value of CT not conform to the content type specification described in Internet RFC 2045 - - - - - - - - - In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) - are required. - Alt != null && Alt != '' - - Alt key is missing from the media clip data dictionary - - - - - - - - - PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page - elements as defined in ISO 32000-1:2008, 14.8.2.2.3. - Subtype != 'PrinterMark' || structParentType == null - - A PrinterMark annotation is included in logical structure - - - - - - - A conforming file shall not contain any reference XObjects - containsRef == false - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - - - - - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - - - - - - - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - - - - - - - All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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" || - embeddedFile_size == 1 - - A non-standard CMap is not embedded - - - - - - - - - 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. - WMode == dictWMode - - WMode entry in the embedded CMap and in the CMap dictionary are not identical - - - - - - - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. - 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" - - A CMap references another non-standard CMap - - - - - - - - - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 - - The font program is not embedded - - - - - - - - - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. - renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - - - - - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true - - A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program - - - - - - - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - - A CID Font subset does not define CIDSet entry in its Descriptor dictionary - - - - - - - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true - - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - - - - - - - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true - - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - - - - - - - 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) - - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - - - - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding. - isSymbolic == false || nrCmaps == 1 || cmap30Present == true - - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - - - - - - - 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 ISO 19005-2, 6.2.11.7.2. - toUnicode != null - - The glyph can not be mapped to Unicode - - - - - - - - - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - - The glyph has an invalid Unicode value - - - - - - - A PDF/UA compliant document 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. - name != ".notdef" - - The document contains a reference to the .notdef glyph - - - - - - - - false - true - - - false - true - - - 0 - Lang_size - - -
+ + +
+ PDF/UA-1 validation profile + Validation rules against ISO 14289-1:2014 +
+ + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + UAIdentification_size == 1 + + The document metadata stream doesn't contains PDF/UA Identification Schema. + + + + + + + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. + part == 1 + + The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA conforming file. + + part + + + + + + + Content marked as Artifact should not present inside tagged content + tag != 'Artifact' || parentTag == null + + Content marked as Artifact is present inside tagged content + + + + + + + Tagged content should not present inside content marked as Artifact + tag == null || parentTag != 'Artifact' + + Tagged content is present inside content marked as Artifact + + + + + + + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) + Suspects != true + + Suspects entry has a value of true + + + + + + + + + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, + as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + This mapping may be indirect; within the role map a non-standard type can map directly to another + non-standard type, but eventually the mapping shall terminate at a standard type. + standardType != null + + Non-standard structure type is not mapped to a standard type or a circular mapping exists + + + + + + + + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists + + + + + + + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. + isRemappedStandardType == false + + Standard type is remapped + + + + + + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the + recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which + clearly identifies the document. + dc_title != null + + Metadata stream does not contain dc:title + + + + + + + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. + DisplayDocTitle == true + + DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true + + + + + + + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, + as described in PDF Reference 5.9, unless the font meets any of the following three conditions: + (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; + (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. + toUnicode != null + + The font does not define Unicode character map + + + + + + + Natural language in the Outline entries shall be determined + gSizeCatalogLang != 0 + + Natural language in the Outline entries cannot be determined + + + + + + + Table element may contain a Caption element as its first or last kid and + Table element may contain only TR, THead, TBody, TFoot and Caption elems + /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) + || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) + || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + + Table element contains more than one Caption element or Table element contains a Caption element not as its first or + last kid or Table element contains not a TR, THead, TBody, TFoot or Caption elements + + + + + + + + + TR element should contained in Table, THead, TBody or TFoot element + /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) + + TR element not contained in Table, THead, TBody and TFoot element + + + + + + + + + THead element should contained in Table element + parentStandardType == 'Table' + + THead element not contained in Table element + + + + + + + + + TBody element should contained in Table element + parentStandardType == 'Table' + + TBody element not contained in Table element + + + + + + + + + TFoot element should contained in Table element + parentStandardType == 'Table' + + TFoot element not contained in Table element + + + + + + + + + TH element should contained in TR element + parentStandardType == 'TR' + + TH element not contained in TR element + + + + + + + + + TD element should contained in TR element + parentStandardType == 'TR' + + TD element not contained in TR element + + + + + + + + + TR element may contain only TH and TD elements + /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + TR element contains not a TH or TD elements + + + + + + + + + Table element should contain zero or one THead kid + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 + + Table element contains more than one THead kid + + + + + + + + + Table element should contain zero or one TFoot kid + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 + + Table element contains more than one TFoot kid + + + + + + + + + If Table element contains TFoot kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains TFoot kid, but not contains TBody kids + + + + + + + + + If Table element contains THead kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains THead kid, but not contains TBody kids + + + + + + + + + LI element should contained in L element + parentStandardType == 'L' + + LI element not contained in L element + + + + + + + + + LBody element should contained in LI element + parentStandardType == 'LI' + + LBody element not contained in LI element + + + + + + + + + L element may contain a Caption element as its first kid and L element may contain only L, LI and Caption elements + /^(Caption&)?(L|LI)(&(L|LI))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' + + L element contains more than one Caption element or L element contains a Caption element not as its first kid or + L element contains not a L, LI or Caption elements + + + + + + + + + LI element may contain only Lbl and LBody elements + /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + LI element contains not a Lbl or LBody elements + + + + + + + + + Natural language for text in ActualText attribute shall be determined + ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute cannot be determined + + + + + + + Natural language for text in Alt attribute shall be determined + Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute cannot be determined + + + + + + + Natural language for text in E attribute shall be determined + E == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in E attribute cannot be determined + + + + + + + Natural language in the Contents entry for annotations shall be + determined + Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the Contents entry for annotations cannot be + determined + + + + + + + Natural language in the TU key for form fields shall be determined + TU == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the TU key for form fields cannot be determined + + + + + + + TOCI element should contained in TOC element + parentStandardType == 'TOC' + + TOCI element not contained in TOC element + + + + + + + + + TOC element may contain a Caption element as its first kid and + TOC element may contain only TOC, TOCI and Caption elements + /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || + kidsStandardTypes == '' + + TOC element contains more than one Caption element or TOC element contains a Caption element + not as its first kid or TOC elem contains not a TOC, TOCI or Caption elements + + + + + + + + + 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-1:2008, 14.9.2. + A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. + /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) + + Value of the Lang entry is not Language-Tag + + + + + + + + + + Natural language for text in ActualText attribute shall be determined + tag != 'Span' || ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute cannot be determined + + + + + + + Natural language for text in Alt attribute shall be determined + tag != 'Span' || Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute cannot be determined + + + + + + + Natural language for text in E attribute shall be determined + tag != 'Span' || E == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language for text in E attribute cannot be determined + + + + + + + Natural language for document metadata shall be determined + gSizeCatalogLang != 0 + + Natural language for document metadata cannot be determined + + + + + + + THead element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + THead element contains not a TR elements + + + + + + + + + TBody element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + TBody element contains not a TR elements + + + + + + + + + TFoot element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + + TFoot element contains not a TR elements + + + + + + + + + Figure tags shall include an alternative representation or replacement text that represents the contents + marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 + (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + + Figure tag alternative or replacement text missing + + + + + + + + + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, + heading tags shall be used as follows: + (*) If any heading tags are used, H1 shall be the first. + (*) A document may use more than one instance of any specific tag level. For example, a tag level may + be repeated if document content requires it. + (*) If document semantics require a descending sequence of headers, such a sequence shall proceed + in strict numerical order and shall not skip an intervening heading level. + (*) A document may increment its heading sequence without restarting at H1 if document semantics + require it. + hasCorrectNumberedHeadings == true + + Does use numbered headings, but the first heading tag is not H1 or numbered heading levels in descending sequence are skipped + + + + + + + + + Each node in the tag tree shall contain at most one child H tag. + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + A node contains more than one H tag + + + + + + + All documents shall be either strongly or weakly structured, but not both. + usesHn == false + + Document uses both H and H# tags + + + + + + + All documents shall be either strongly or weakly structured, but not both. + usesH == false + + Document uses both H and H# tags + + + + + + + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, + 14.8.4.5 and shall have Alt or ActualText attributes + (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + + Formula tag is missing Alt or ActualText attributes + + + + + + + + + Note tag shall have ID entry + noteID != null && noteID != '' + + ID key of the Note tag is not present + + + + + + + Each Note tag shall have unique ID key + hasDuplicateNoteID == false + + ID key of the Note tag is non-unique + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + The AS key shall not appear in any optional content configuration dictionary. + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys + containsEF == false || (F != null && F != '' && UF != null && UF != '') + + The file specification dictionary for an embedded file does not contain either F or EF key or at least one of the keys is empty + + + + + + + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, + 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. + P != null && (P & 512) == 512 + + The file is encrypted but does not contain a P entry in its encryption dictionary or + the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false + + + + + + + + + + An annotation, excluding annotations of subtype Widget, Popup or Link, shall nested within an Annot tag + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || structParentType == 'Annot' + + An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag + + + + + + + An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set + and whose rectangle is not outside the crop-box and does not have a Contents key shall have + an alternative description (in the form of an Alt entry in the enclosing structure element) + structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' + || isOutsideCropBox == true || (F & 2) == 2 || Contents != null || Alt != null + + An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set + and whose rectangle is not outside the crop-box and does not have a Contents key does not have + an alternative description (in the form of an Alt entry in the enclosing structure element) + + + + + + + Annotations of subtype TrapNet shall not be permitted. + Subtype != 'TrapNet' + + An annotation of subtype TrapNet exists + + + + + + + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. + annots_size == 0 || Tabs == 'S' + + A page containing an annotation does not contain a Tabs key or has a Tabs key with a value other than S. + + + + + + + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. + Subtype != 'Widget' || structParentType == 'Form' + + A widget annotation is not nested within a Form tag + + + + + + + + + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. + Subtype != 'Link' || structParentType == 'Link' + + A link annotation is not nested within a Link tag + + + + + + + + + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. + Subtype != 'Link' || (Contents != null && Contents != '') + + A link annotation does not include an alternate description in the Contents Key + + + + + + + + + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) + are required. Value of CT should conform to the content type specification described in Internet RFC 2045 + CT != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(CT) + + CT key is missing from the media clip data dictionary or + value of CT not conform to the content type specification described in Internet RFC 2045 + + + + + + + + + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) + are required. + Alt != null && Alt != '' + + Alt key is missing from the media clip data dictionary + + + + + + + + + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page + elements as defined in ISO 32000-1:2008, 14.8.2.2.3. + Subtype != 'PrinterMark' || structParentType == null + + A PrinterMark annotation is included in logical structure + + + + + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, + and Supplement may be used in the CIDSystemInfo entry of the CIDFont. + - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in + the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + in ISO 32000-1:2008, 9.7.5. + 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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + 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" + + A CMap references another non-standard CMap + + + + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, + regardless of whether a CID in the font is referenced or used by the PDF or not. + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + + A CID Font subset does not define CIDSet entry in its Descriptor dictionary + + + + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded + font program shall be consistent. + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + + The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables + + + + + + + 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. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program + shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding. + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains more than one cmap subtable + + + + + + + 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 ISO 19005-2, 6.2.11.7.2. + toUnicode != null + + The glyph can not be mapped to Unicode + + + + + + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value + + + + + + + A PDF/UA compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + + false + true + + + false + true + + + 0 + Lang_size + + +
diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 26cbf08f..313e2089 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -7,7 +7,7 @@ - + Pages shall have the same orientation gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index f4c0fab3..80eaadca 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -7,7 +7,7 @@ - + Pages shall have the same orientation gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation From a15bd68cdfcbdbb76fef00bde2b2aceda5953888 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 1 Jun 2020 21:49:53 +0300 Subject: [PATCH 314/557] Fix PDFUA-1 profile --- PDF_UA/PDFUA-1.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 9ec221c9..2bf17b0c 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -1,5 +1,5 @@ - +
PDF/UA-1 validation profile Validation rules against ISO 14289-1:2014 From 87a2459e2359d37deed86ff40d15eb5b6bbb7eb4 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 2 Jun 2020 14:33:32 +0300 Subject: [PATCH 315/557] PDF/UA validation. Fix profiles 7.1.1, 7.1.2, 7.2.33, 7.4.2.1 --- PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml | 2 +- PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml | 2 +- .../verapdf-profile-7-4-2-t01.xml | 4 ++-- PDF_UA/PDFUA-1.xml | 10 +++++----- PDF_UA/WCAG-21-Complete.xml | 10 +++++----- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml index 9388070b..971fffed 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml @@ -9,7 +9,7 @@ Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || parentTag == null + tag != 'Artifact' || parentStructureTag == null Content marked as Artifact is present inside tagged content diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml index c95c4878..11155dda 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml @@ -9,7 +9,7 @@ Tagged content should not present inside content marked as Artifact - tag == null || parentTag != 'Artifact' + structureTag == null || parentTag != 'Artifact' Tagged content is present inside content marked as Artifact diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml index 70f6beec..fdd271ab 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml @@ -6,7 +6,7 @@
- + Natural language for document metadata shall be determined gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml index 822f851b..a5952140 100644 --- a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml +++ b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml @@ -14,7 +14,7 @@
- + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: @@ -25,7 +25,7 @@ in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it. - hasCorrectNumberedHeadings == true + hasCorrectNestingLevel == true Does use numbered headings, but the first heading tag is not H1 or numbered heading levels in descending sequence are skipped diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 2bf17b0c..6f24f32a 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -31,7 +31,7 @@ Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || parentTag == null + tag != 'Artifact' || parentStructureTag == null Content marked as Artifact is present inside tagged content @@ -41,7 +41,7 @@ Tagged content should not present inside content marked as Artifact - tag == null || parentTag != 'Artifact' + structureTag == null || parentTag != 'Artifact' Tagged content is present inside content marked as Artifact @@ -478,7 +478,7 @@ - + Natural language for document metadata shall be determined gSizeCatalogLang != 0 @@ -537,7 +537,7 @@
- + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: @@ -548,7 +548,7 @@ in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it. - hasCorrectNumberedHeadings == true + hasCorrectNestingLevel == true Does use numbered headings, but the first heading tag is not H1 or numbered heading levels in descending sequence are skipped diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 313e2089..e290b9dc 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -41,7 +41,7 @@ Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || parentTag == null + tag != 'Artifact' || parentStructureTag == null Content marked as Artifact is present inside tagged content @@ -51,7 +51,7 @@ Tagged content should not present inside content marked as Artifact - tag == null || parentTag != 'Artifact' + structureTag == null || parentTag != 'Artifact' Tagged content is present inside content marked as Artifact @@ -498,7 +498,7 @@ - + Natural language for document metadata shall be determined gSizeCatalogLang != 0 @@ -557,7 +557,7 @@ - + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: @@ -568,7 +568,7 @@ in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it. - hasCorrectNumberedHeadings == true + hasCorrectNestingLevel == true Does use numbered headings, but the first heading tag is not H1 or numbered heading levels in descending sequence are skipped From 1ab95550bf8e766a9bc5bf2b1219bf377fd6dc85 Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Fri, 5 Jun 2020 11:05:23 +0300 Subject: [PATCH 316/557] PDF/UA validation. Change flavour in profiles (#197) --- PDF_UA/PDFUA-1-Human.xml | 2 +- PDF_UA/WCAG-21-Complete.xml | 2 +- PDF_UA/WCAG-21.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_UA/PDFUA-1-Human.xml b/PDF_UA/PDFUA-1-Human.xml index ccb731c1..3fb650b3 100644 --- a/PDF_UA/PDFUA-1-Human.xml +++ b/PDF_UA/PDFUA-1-Human.xml @@ -1,5 +1,5 @@ - +
PDF/UA-1 validation profile (Human) Validation rules against ISO 14289-1:2014 (Matterhorn Human-verifiable checks) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index e290b9dc..94e22fb2 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1,5 +1,5 @@ - +
WCAG-2.1-Complete validation profile Validation rules against WCAG 2.1 and ISO 14289-1:2014 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 80eaadca..135cee19 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -1,5 +1,5 @@ - +
WCAG 2.1 validation profile Extra rules for WCAG 2.1 validation in addition to PDF/UA-1 From 02b41e4a454e237ec89d39fe4775235ed9dc756b Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Mon, 22 Jun 2020 11:07:30 +0300 Subject: [PATCH 317/557] PDF/UA validation. Add rules 7.1.3, 7.2.34, 7.5.1 (#198) PDF/UA validation. Fix profiles 7.2.36,7.2.38. PDF/UA validation. Fixed profiles 7.2.1,7.2.27,7.3.1,7.7.1,7.18.1.2 --- .../verapdf-profile-5-t01.xml | 2 +- .../verapdf-profile-5-t02.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t01.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t02.xml | 4 +- .../1/7.1 General/verapdf-profile-7-1-t03.xml | 23 ++++++++++ .../1/7.1 General/verapdf-profile-7-1-t04.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t05.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t06.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t07.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t08.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t09.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t10.xml | 2 +- .../verapdf-profile-7-10-t01.xml | 2 +- .../verapdf-profile-7-10-t02.xml | 2 +- .../verapdf-profile-7-11-t01.xml | 2 +- .../verapdf-profile-7-16-t01.xml | 2 +- .../verapdf-profile-7-18-1-t01.xml | 2 +- .../verapdf-profile-7-18-1-t02.xml | 5 ++- ...t02.xml => verapdf-profile-7-18-2-t01.xml} | 4 +- .../verapdf-profile-7-18-3-t01.xml | 2 +- .../verapdf-profile-7-18-4-t01.xml | 2 +- .../verapdf-profile-7-18-5-t01.xml | 2 +- .../verapdf-profile-7-18-5-t02.xml | 2 +- .../verapdf-profile-7-18-6-2-t01.xml | 2 +- .../verapdf-profile-7-18-6-2-t02.xml | 2 +- .../verapdf-profile-7-18-8-t01.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml | 4 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml | 2 +- .../7.2 Text/verapdf-profile-7-2-t17-t20.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml | 2 +- .../7.2 Text/verapdf-profile-7-2-t26-t27.xml | 4 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml | 26 ++++++++++++ .../7.2 Text/verapdf-profile-7-2-t36-t38.xml | 6 +-- .../verapdf-profile-7-20-t01.xml | 2 +- .../verapdf-profile-7-21-3-1-t01.xml | 2 +- .../verapdf-profile-7-21-3-2-t01.xml | 2 +- .../verapdf-profile-7-21-3-3-t01.xml | 2 +- .../verapdf-profile-7-21-3-3-t02.xml | 2 +- .../verapdf-profile-7-21-3-3-t03.xml | 2 +- .../verapdf-profile-7-21-4-1-t01.xml | 2 +- ...3.xml => verapdf-profile-7-21-4-1-t02.xml} | 4 +- .../verapdf-profile-7-21-4-2-t01.xml | 2 +- .../verapdf-profile-7-21-4-2-t02.xml | 2 +- .../verapdf-profile-7-21-5-t01.xml | 2 +- .../verapdf-profile-7-21-6-t01.xml | 2 +- .../verapdf-profile-7-21-6-t02.xml | 2 +- .../verapdf-profile-7-21-6-t03.xml | 2 +- .../verapdf-profile-7-21-6-t04.xml | 2 +- .../verapdf-profile-7-21-7-t01.xml | 2 +- .../verapdf-profile-7-21-7-t02.xml | 2 +- .../verapdf-profile-7-21-8-t01.xml | 2 +- .../7.3 Graphics/verapdf-profile-7-3-t01.xml | 4 +- .../verapdf-profile-7-4-2-t01.xml | 2 +- .../verapdf-profile-7-4-4-t01.xml | 2 +- .../verapdf-profile-7-4-4-t02.xml | 2 +- .../verapdf-profile-7-4-4-t03.xml | 2 +- .../1/7.5 Tables/verapdf-profile-7-5-t01.xml | 22 ++++++++++ .../verapdf-profile-7-7-t01.xml | 4 +- .../verapdf-profile-7-9-t01.xml | 2 +- .../verapdf-profile-7-9-t02.xml | 2 +- PDF_UA/PDFUA-1.xml | 42 ++++++++++++++----- PDF_UA/WCAG-21-Complete.xml | 40 ++++++++++++++---- 71 files changed, 211 insertions(+), 95 deletions(-) create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml rename PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/{verapdf-profile-7-18-2-t02.xml => verapdf-profile-7-18-2-t01.xml} (97%) create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml rename PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/{verapdf-profile-7-21-4-1-t03.xml => verapdf-profile-7-21-4-1-t02.xml} (97%) create mode 100644 PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml index 79ac6acb..0ac0cf87 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 5 Version identification - PDF/UA Identification Schema The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml index ab6cf06d..2fdc963b 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 5 Version identification - Part number The value of pdfuaid:part shall be the part number of the International Standard to which the file diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml index 971fffed..6d373506 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.1 General - Artifact inside tagged content Content marked as Artifact should not present inside tagged content diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml index 11155dda..2aa1ee2d 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.1 General - Tagged content inside Artifact Tagged content should not present inside content marked as Artifact @@ -9,7 +9,7 @@ Tagged content should not present inside content marked as Artifact - structureTag == null || parentTag != 'Artifact' + structureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 Tagged content is present inside content marked as Artifact diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml new file mode 100644 index 00000000..a8dd660c --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Artifact or real content + Content shall be marked in the structure tree with semantically appropriate tags in a logical reading + order. Content that does not render and does not have a rendered equivalent shall be marked as an artifact. +
+ + + + + Content shall be marked in the structure tree with semantically appropriate tags in a logical reading + order. Content that does not render and does not have a rendered equivalent shall be marked as an artifact. + parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + + Content is neither marked as Artifact nor tagged as real content + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml index b71c9052..d40d16a1 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.1 General - Suspects Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml index c330dadd..d8ea465e 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.1 General - Standard roles All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml index 129a933d..2941806b 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.1 General - Circular mapping A circular mapping shall not exist diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml index b369b73d..bb5202b3 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.1 General - Remapped standard types Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml index 8f0a8bb1..c2ff019d 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.1 General - Metadata key in the Catalog The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml index e8e1de8e..e6afc406 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.1 General - Dc title The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml index 52305c08..e685a0e7 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.1 General - DisplayDocTitle The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml index 523af616..cfe55690 100644 --- a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml +++ b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.10 Optional content - Name key present Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml index fae049d6..e88cb746 100644 --- a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml +++ b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.10 Optional content - Order key The AS key shall not appear in any optional content configuration dictionary. diff --git a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml index ef091c7e..3c85afc0 100644 --- a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml +++ b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.11 Embedded files - F and UF keys The file specification dictionary for an embedded file shall contain the non-empty F and UF keys diff --git a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml index 65335782..2194ab8f 100644 --- a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml +++ b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.16 Security - P key An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml index 58c1c991..48705b38 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.18 Annotations - 7.18.1 General - Annot tag An annotation, excluding annotations of subtype Widget, Popup or Link, shall nested within an Annot tag diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml index 458c8ce9..99bcc57b 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.18 Annotation - 7.18.1 General - Alt in annotation An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set @@ -14,7 +14,8 @@ and whose rectangle is not outside the crop-box and does not have a Contents key shall have an alternative description (in the form of an Alt entry in the enclosing structure element) structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' - || isOutsideCropBox == true || (F & 2) == 2 || Contents != null || Alt != null + || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || + (Alt != null && Alt != '') An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set and whose rectangle is not outside the crop-box and does not have a Contents key does not have diff --git a/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml similarity index 97% rename from PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t02.xml rename to PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml index 6eec49d5..a9ccf82e 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.18 Annotations - 7.18.2 Annotation types - TrapNext Annotations of subtype TrapNet shall not be permitted. @@ -7,7 +7,7 @@ - + Annotations of subtype TrapNet shall not be permitted. Subtype != 'TrapNet' diff --git a/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml index da74cd30..1bfaf124 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.18 Annotations - 7.18.3 Tab order - Tabs in page with annotations Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml index cb667b97..a171d4d6 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.18 Annotations - 7.18.4 Forms - Widget annotation A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml index 9935f358..75139067 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.18 Annotations - 7.18.5 Links - Link annotation Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml index ebf333f5..82152137 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.18 Annotations - 7.18.5 Links - Contents key Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml index 7636a9fd..5691dedd 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.18 Annotations - 7.18.6.2 Media clip data - CT in media clip dictionary In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml index 38d419c6..a21b81b7 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.18 Annotations - 7.18.6.2 Media clip data - Alt in media clip dictionary In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) diff --git a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml index d09bca4a..6ea5dbc2 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.18 Annotations - 7.18.8 PrinterMark - Logical structure PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml index 0021ebd0..b60ddb37 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml @@ -1,12 +1,12 @@ - +
ISO 14289-1:2014 - 7.2 Text - Unicode character maps The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections.
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml index 8375e935..9c5aecf3 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Lang in Outlines Natural language in the Outline entries shall be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml index f27851f9..dfd5eb48 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - List structure A list-related structure element should used in a way that conform to Table 336 in ISO 32000-1. diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml index f1c594d2..9afe55c0 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Lang for ActualText Natural language for text in ActualText attribute shall be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml index c90f7d63..8c17d3f3 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Lang for Alt Natural language for text in Alt attribute shall be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml index c6348e9e..0ea33a96 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Lang for E Natural language for text in E attribute shall be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml index 7ab99b44..97e390cd 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Lang in Contents Natural language in the Contents entry for annotations shall be diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml index 8192ccc7..37219f61 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Lang in TU key Natural language in the TU key for form fields shall be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml index 480efac5..7c4c4bc0 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - TOC structure A TOC-related structure element should used in a way that conform to Table 333 in ISO 32000-1. @@ -26,7 +26,7 @@ kidsStandardTypes == '' TOC element contains more than one Caption element or TOC element contains a Caption element - not as its first kid or TOC elem contains not a TOC, TOCI or Caption elements + not as its first kid or TOC element contains not a TOC, TOCI or Caption elements diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml index 7f4d20a2..137ea908 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Natural language specification If the Lang entry is present in the document's Catalog dictionary or in a structure element dictionary or diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml index 17814e00..4878969d 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Lang for ActualText Natural language for text in ActualText attribute shall be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml index ca78672d..0a1937d7 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Lang for Alt Natural language for text in Alt attribute shall be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml index e2bff14a..539e96c9 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Lang for E Natural language for text in E attribute shall be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml index fdd271ab..ad3c7c8b 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Lang for metadata Natural language for document metadata shall be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml new file mode 100644 index 00000000..0ad7852d --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Lang for text + Natural language for text in page content shall be determined +
+ + + + + Natural language for text in page content shall be determined + gSizeCatalogLang != 0 || Lang != null + + Natural language for text in page content cannot be determined + + + + + + + + 0 + Lang_size + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml index 8ca0fe8b..f1fcd4af 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Table structure A table-related structure element should used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337. @@ -9,7 +9,7 @@ THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' THead element contains not a TR elements @@ -33,7 +33,7 @@ TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' TFoot element contains not a TR elements diff --git a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml index 7426059f..75659ea1 100644 --- a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml +++ b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.20 XObjects - Reference XObjects A conforming file shall not contain any reference XObjects diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml index bdbfb3c3..e95d723c 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CIDSystemInfo For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml index 8da9ccf0..e633324d 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CIDToGIDMap ISO 32000-1:2008, 9.7.4, Table 117 requires that all embedded Type 2 CIDFonts in the CIDFont dictionary shall contain a diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml index e08a0f39..ce835db2 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml index 12a0c8bb..d1f0f54b 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - WMode For those CMaps that are embedded, the integer value of the WMode entry in the CMap dictionary shall be identical to the WMode diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml index 0a4aa788..3cb3ac35 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml index eb31414d..ed412c0a 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - General The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml similarity index 97% rename from PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml rename to PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml index 444701d7..867fdf1c 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t03.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - Glyphs Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely @@ -8,7 +8,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml index 3b63b378..250a11d7 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CharSet entry in Type1 fonts If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml index f79f0a03..f8baface 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CIDSet entry in CID Fonts If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, diff --git a/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml index c78e9f24..fa4a7b5f 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.5 Font metrics - Font metrics For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml index 92e5c867..3de3a7f9 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps for non-symbolic TrueType fonts For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml index 04591130..8d41469c 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - Non-symbolic TrueType fonts No non-symbolic TrueType font shall define a Differences array unless all of the glyph names in diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml index 3e012c0e..681038de 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - Symbolic TrueType fonts Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml index a2077a28..34c97998 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps in the symbolic TrueType font program Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml index 69efc87c..3eb576a7 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Unicode mapping The Font dictionary of all fonts shall define the map of all used character codes to Unicode values, either via a ToUnicode entry, diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml index 6c90500c..b4014309 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Valid Unicode values The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. diff --git a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml index 8c52283d..f824fa90 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.21 Fonts - 7.21.8 Use of .notdef glyph - Use of .notdef glyph A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, diff --git a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml index 189283bf..675bc06f 100644 --- a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml +++ b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.3 Graphics - Figure alternative and replacement text Figure tags shall include an alternative representation or replacement text that represents the contents @@ -11,7 +11,7 @@ Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + (Alt != null && Alt != '') || ActualText != null Figure tag alternative or replacement text missing diff --git a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml index a5952140..9ff3d856 100644 --- a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml +++ b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.4 Headings - 7.4.2 Numbered headings - Numbered heading tags For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml index 2ac2aeaf..834ffe7f 100644 --- a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - Number of H Each node in the tag tree shall contain at most one child H tag. diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml index d75e512e..a1e4b35e 100644 --- a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn All documents shall be either strongly or weakly structured, but not both. diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml index f81cb84e..a2efb70c 100644 --- a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn All documents shall be either strongly or weakly structured, but not both. diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml new file mode 100644 index 00000000..d8bb621a --- /dev/null +++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml @@ -0,0 +1,22 @@ + + +
+ ISO 14289-1:2014 - 7.5 Tables - Headers, IDs and Scope + If the table's structure is not determinable via Headers and IDs, + then structure elements of type TH shall have a Scope attribute +
+ + + + + If the table's structure is not determinable via Headers and IDs, + then structure elements of type TH shall have a Scope attribute + useHeadersAndIdOrScope == true + + In a table not organized with Headers attributes and IDs, a TH cell does not contain a Scope attribute + + + + + +
diff --git a/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml index 46c94897..ba30ec71 100644 --- a/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml +++ b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.7 Mathematical expressions - Alt and ActualText in Formula All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, @@ -11,7 +11,7 @@ All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + (Alt != null && Alt != '') || ActualText != null Formula tag is missing Alt or ActualText attributes diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml index 9da645c3..12eae633 100644 --- a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml +++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.9 Notes and references - ID Note tag shall have ID entry diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml index 66209189..bc799ab7 100644 --- a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml +++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.9 Notes and references - Unique id Each Note tag shall have unique ID key diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 6f24f32a..ad2aab2f 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -41,13 +41,24 @@ Tagged content should not present inside content marked as Artifact - structureTag == null || parentTag != 'Artifact' + structureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 Tagged content is present inside content marked as Artifact + + + Content shall be marked in the structure tree with semantically appropriate tags in a logical reading + order. Content that does not render and does not have a rendered equivalent shall be marked as an artifact. + parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + + Content is neither marked as Artifact nor tagged as real content + + + + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) @@ -137,7 +148,7 @@ as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections. toUnicode != null The font does not define Unicode character map @@ -426,7 +437,7 @@ kidsStandardTypes == '' TOC element contains more than one Caption element or TOC element contains a Caption element - not as its first kid or TOC elem contains not a TOC, TOCI or Caption elements + not as its first kid or TOC element contains not a TOC, TOCI or Caption elements @@ -488,10 +499,20 @@ + + + Natural language for text in page content shall be determined + gSizeCatalogLang != 0 || Lang != null + + Natural language for text in page content cannot be determined + + + + THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' THead element contains not a TR elements @@ -515,7 +536,7 @@ TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' TFoot element contains not a TR elements @@ -528,7 +549,7 @@ Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + (Alt != null && Alt != '') || ActualText != null Figure tag alternative or replacement text missing @@ -591,7 +612,7 @@ All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + (Alt != null && Alt != '') || ActualText != null Formula tag is missing Alt or ActualText attributes @@ -682,7 +703,8 @@ and whose rectangle is not outside the crop-box and does not have a Contents key shall have an alternative description (in the form of an Alt entry in the enclosing structure element) structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' - || isOutsideCropBox == true || (F & 2) == 2 || Contents != null || Alt != null + || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || + (Alt != null && Alt != '') An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set and whose rectangle is not outside the crop-box and does not have a Contents key does not have @@ -692,7 +714,7 @@ - + Annotations of subtype TrapNet shall not be permitted. Subtype != 'TrapNet' @@ -902,7 +924,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 94e22fb2..5072660f 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -51,13 +51,24 @@ Tagged content should not present inside content marked as Artifact - structureTag == null || parentTag != 'Artifact' + structureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 Tagged content is present inside content marked as Artifact + + + Content shall be marked in the structure tree with semantically appropriate tags in a logical reading + order. Content that does not render and does not have a rendered equivalent shall be marked as an artifact. + parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + + Content is neither marked as Artifact nor tagged as real content + + + + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) @@ -157,7 +168,7 @@ as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections. toUnicode != null The font does not define Unicode character map @@ -446,7 +457,7 @@ kidsStandardTypes == '' TOC element contains more than one Caption element or TOC element contains a Caption element - not as its first kid or TOC elem contains not a TOC, TOCI or Caption elements + not as its first kid or TOC element contains not a TOC, TOCI or Caption elements @@ -508,10 +519,20 @@ + + + Natural language for text in page content shall be determined + gSizeCatalogLang != 0 || Lang != null + + Natural language for text in page content cannot be determined + + + + THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' THead element contains not a TR elements @@ -535,7 +556,7 @@ TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' TFoot element contains not a TR elements @@ -548,7 +569,7 @@ Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + (Alt != null && Alt != '') || ActualText != null Figure tag alternative or replacement text missing @@ -611,7 +632,7 @@ All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes - (Alt != null && Alt != '') || (ActualText != null && ActualText != '') + (Alt != null && Alt != '') || ActualText != null Formula tag is missing Alt or ActualText attributes @@ -702,7 +723,8 @@ and whose rectangle is not outside the crop-box and does not have a Contents key shall have an alternative description (in the form of an Alt entry in the enclosing structure element) structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' - || isOutsideCropBox == true || (F & 2) == 2 || Contents != null || Alt != null + || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || + (Alt != null && Alt != '') An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set and whose rectangle is not outside the crop-box and does not have a Contents key does not have @@ -922,7 +944,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true From 7bf608717af4d928bf0e19598937860f388fc0be Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Tue, 23 Jun 2020 15:52:37 +0300 Subject: [PATCH 318/557] PDF/UA validation. Fix rules 7.2.3,7.2.4. Add rule 7.5.1 (#199) --- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t14.xml | 4 ++-- PDF_UA/PDFUA-1.xml | 12 +++++++++++- PDF_UA/WCAG-21-Complete.xml | 12 +++++++++++- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t14.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t14.xml index a173779a..0b5ad109 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t14.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t14.xml @@ -9,7 +9,7 @@ Table element may contain a Caption element as its first or last kid and - Table element may contain only TR, THead, TBody, TFoot and Caption elems + Table element may contain only TR, THead, TBody, TFoot and Caption elements /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' @@ -25,7 +25,7 @@ TR element should contained in Table, THead, TBody or TFoot element - /^(Table|THead|TBody|TFoot)*$/.test(parentStandardType) + /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) TR element not contained in Table, THead, TBody and TFoot element diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index ad2aab2f..5539bf68 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -169,7 +169,7 @@ Table element may contain a Caption element as its first or last kid and - Table element may contain only TR, THead, TBody, TFoot and Caption elems + Table element may contain only TR, THead, TBody, TFoot and Caption elements /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' @@ -608,6 +608,16 @@ + + + If the table's structure is not determinable via Headers and IDs, + then structure elements of type TH shall have a Scope attribute + useHeadersAndIdOrScope == true + + In a table not organized with Headers attributes and IDs, a TH cell does not contain a Scope attribute + + + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 5072660f..09a4b393 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -189,7 +189,7 @@ Table element may contain a Caption element as its first or last kid and - Table element may contain only TR, THead, TBody, TFoot and Caption elems + Table element may contain only TR, THead, TBody, TFoot and Caption elements /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' @@ -628,6 +628,16 @@ + + + If the table's structure is not determinable via Headers and IDs, + then structure elements of type TH shall have a Scope attribute + useHeadersAndIdOrScope == true + + In a table not organized with Headers attributes and IDs, a TH cell does not contain a Scope attribute + + + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, From 8c9ec0d98d9d650afded3792b68bfaac531e0344 Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Fri, 26 Jun 2020 12:30:55 +0300 Subject: [PATCH 319/557] PDF/UA validation. Fix rules 7.1.3,7.18.2.1. Add rule 7.18.1.3 (#200) --- .../1/7.1 General/verapdf-profile-7-1-t03.xml | 6 ++---- PDF_UA/PDFUA-1.xml | 17 +++++++++++++++-- PDF_UA/WCAG-21-Complete.xml | 19 ++++++++++++++++--- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml index a8dd660c..a494844c 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml @@ -2,15 +2,13 @@
ISO 14289-1:2014 - 7.1 General - Artifact or real content - Content shall be marked in the structure tree with semantically appropriate tags in a logical reading - order. Content that does not render and does not have a rendered equivalent shall be marked as an artifact. + Content shall be marked as Artifact or tagged as real content
- Content shall be marked in the structure tree with semantically appropriate tags in a logical reading - order. Content that does not render and does not have a rendered equivalent shall be marked as an artifact. + Content shall be marked as Artifact or tagged as real content parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 Content is neither marked as Artifact nor tagged as real content diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 5539bf68..13a38582 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -50,8 +50,7 @@ - Content shall be marked in the structure tree with semantically appropriate tags in a logical reading - order. Content that does not render and does not have a rendered equivalent shall be marked as an artifact. + Content shall be marked as Artifact or tagged as real content parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 Content is neither marked as Artifact nor tagged as real content @@ -723,6 +722,20 @@ + + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box + shall have a TU key present or all its Widget annotations shall have alternative descriptions + (in the form of an Alt entry in the enclosing structure elements) + Subtype != 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box + and does not have a TU key and its Widget annotations do not have alternative descriptions + (in the form of an Alt entry in the enclosing structure element) + + + + Annotations of subtype TrapNet shall not be permitted. diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 09a4b393..83289ec6 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -60,8 +60,7 @@ - Content shall be marked in the structure tree with semantically appropriate tags in a logical reading - order. Content that does not render and does not have a rendered equivalent shall be marked as an artifact. + Content shall be marked as Artifact or tagged as real content parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 Content is neither marked as Artifact nor tagged as real content @@ -744,7 +743,21 @@ - + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box + shall have a TU key present or all its Widget annotations shall have alternative descriptions + (in the form of an Alt entry in the enclosing structure elements) + Subtype != 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box + and does not have a TU key and its Widget annotations do not have alternative descriptions + (in the form of an Alt entry in the enclosing structure element) + + + + + + Annotations of subtype TrapNet shall not be permitted. Subtype != 'TrapNet' From d1671bb4e9e3d561b3e14b0c3014511820a09c59 Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Thu, 2 Jul 2020 17:43:48 +0300 Subject: [PATCH 320/557] PDF/UA validation. Add rules 7.2.15,7.15.1. Delete rule 7.2.1 (#201) --- .../1/7.15 XFA/verapdf-profile-7-15-t01.xml | 21 +++++++++++ .../verapdf-profile-7-18-1-t03.xml | 27 ++++++++++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml | 29 --------------- ...14.xml => verapdf-profile-7-2-t03-t15.xml} | 13 +++++++ PDF_UA/PDFUA-1.xml | 37 ++++++++++++------- PDF_UA/WCAG-21-Complete.xml | 37 ++++++++++++------- 6 files changed, 107 insertions(+), 57 deletions(-) create mode 100644 PDF_UA/1/7.15 XFA/verapdf-profile-7-15-t01.xml create mode 100644 PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml delete mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t03-t14.xml => verapdf-profile-7-2-t03-t15.xml} (93%) diff --git a/PDF_UA/1/7.15 XFA/verapdf-profile-7-15-t01.xml b/PDF_UA/1/7.15 XFA/verapdf-profile-7-15-t01.xml new file mode 100644 index 00000000..56befbb1 --- /dev/null +++ b/PDF_UA/1/7.15 XFA/verapdf-profile-7-15-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.15 XFA - DynamicRender + Dynamic XFA forms shall not be used +
+ + + + + Dynamic XFA forms shall not be used + dynamicRender != 'required' + + Dynamic XFA forms is present + + + + + + +
diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml new file mode 100644 index 00000000..57520289 --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotation - 7.18.1 General - Alt in form field + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box + shall have a TU key present or all its Widget annotations shall have alternative descriptions + (in the form of an Alt entry in the enclosing structure elements) +
+ + + + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box + shall have a TU key present or all its Widget annotations shall have alternative descriptions + (in the form of an Alt entry in the enclosing structure elements) + Subtype != 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box + and does not have a TU key and its Widget annotations do not have alternative descriptions + (in the form of an Alt entry in the enclosing structure element) + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml deleted file mode 100644 index b60ddb37..00000000 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t01.xml +++ /dev/null @@ -1,29 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.2 Text - Unicode character maps - The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, - as described in PDF Reference 5.9, unless the font meets any of the following three conditions: - (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; - (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections. -
- - - - - The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, - as described in PDF Reference 5.9, unless the font meets any of the following three conditions: - (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; - (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. - toUnicode != null - - The font does not define Unicode character map - - - - - - -
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t14.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml similarity index 93% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t14.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml index 0b5ad109..719e1358 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t14.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml @@ -156,6 +156,19 @@
+ + + Tables shall be regular, that is have the same number of cells in each row after accounting + for rowspan and colspan attributes. + isRegular == true + + Irregular table found + + + + + +
diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 13a38582..26fe493b 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -141,20 +141,6 @@
- - - The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, - as described in PDF Reference 5.9, unless the font meets any of the following three conditions: - (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; - (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections. - toUnicode != null - - The font does not define Unicode character map - - - - Natural language in the Outline entries shall be determined @@ -315,6 +301,19 @@ + + + Tables shall be regular, that is have the same number of cells in each row after accounting + for rowspan and colspan attributes. + isRegular == true + + Irregular table found + + + + + + LI element should contained in L element @@ -681,6 +680,16 @@ + + + Dynamic XFA forms shall not be used + dynamicRender != 'required' + + Dynamic XFA forms is present + + + + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 83289ec6..9140474f 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -161,20 +161,6 @@ - - - The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, - as described in PDF Reference 5.9, unless the font meets any of the following three conditions: - (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; - (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections. - toUnicode != null - - The font does not define Unicode character map - - - - Natural language in the Outline entries shall be determined @@ -335,6 +321,19 @@ + + + Tables shall be regular, that is have the same number of cells in each row after accounting + for rowspan and colspan attributes. + isRegular == true + + Irregular table found + + + + + + LI element should contained in L element @@ -701,6 +700,16 @@ + + + Dynamic XFA forms shall not be used + dynamicRender != 'required' + + Dynamic XFA forms is present + + + + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, From b8c342183d21dbdd4aca26540a44f761eba5ea58 Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Fri, 17 Jul 2020 13:04:54 +0300 Subject: [PATCH 321/557] PDF/UA validation. Fix rules 7.1.13,7.18.1.2. (#202) --- .../7.1 General/verapdf-profile-7-1-t13.xml | 9 ++------- .../verapdf-profile-7-18-1-t02.xml | 18 +++++++++--------- PDF_UA/PDFUA-1-Human.xml | 9 ++------- PDF_UA/PDFUA-1.xml | 12 ++++++------ PDF_UA/WCAG-21-Complete.xml | 12 ++++++------ 5 files changed, 25 insertions(+), 35 deletions(-) diff --git a/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml b/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml index 2c99def5..521eb191 100644 --- a/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml +++ b/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml @@ -9,7 +9,7 @@ The structure type and attributes of a structure element shall be semantically appropriate. - (!/^H([1-9][0-9]*)*$/.test(gStructureTag) || suspectRole == 'H') && (gStructureTag != 'P' || suspectRole == 'P') + (!/^H([1-9][0-9]*)*$/.test(standardTag) || suspectRole == 'H') && (standardTag != 'P' || suspectRole == 'P') The structure type and attributes of a structure element are not semantically appropriate for the structure element. @@ -17,10 +17,5 @@ - - - null - structureTag - - + diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml index 99bcc57b..604fecf3 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml @@ -2,24 +2,24 @@
ISO 14289-1:2014 - 7.18 Annotation - 7.18.1 General - Alt in annotation - An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set - and whose rectangle is not outside the crop-box and does not have a Contents key shall have - an alternative description (in the form of an Alt entry in the enclosing structure element) + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, + or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry + in the enclosing structure element
- An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set - and whose rectangle is not outside the crop-box and does not have a Contents key shall have - an alternative description (in the form of an Alt entry in the enclosing structure element) + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, + or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry + in the enclosing structure element structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') - An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set - and whose rectangle is not outside the crop-box and does not have a Contents key does not have - an alternative description (in the form of an Alt entry in the enclosing structure element) + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, + or those having rectangle outside the crop-box) has neither Contents key nor an Alt entry + in the enclosing structure element diff --git a/PDF_UA/PDFUA-1-Human.xml b/PDF_UA/PDFUA-1-Human.xml index 3fb650b3..09a4ce3e 100644 --- a/PDF_UA/PDFUA-1-Human.xml +++ b/PDF_UA/PDFUA-1-Human.xml @@ -9,7 +9,7 @@ The structure type and attributes of a structure element shall be semantically appropriate. - (!/^H([1-9][0-9]*)*$/.test(gStructureTag) || suspectRole == 'H') && (gStructureTag != 'P' || suspectRole == 'P') + (!/^H([1-9][0-9]*)*$/.test(standardTag) || suspectRole == 'H') && (standardTag != 'P' || suspectRole == 'P') The structure type and attributes of a structure element are not semantically appropriate for the structure element. @@ -17,10 +17,5 @@ - - - null - structureTag - - +
diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 26fe493b..4a0b969e 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -717,16 +717,16 @@
- An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set - and whose rectangle is not outside the crop-box and does not have a Contents key shall have - an alternative description (in the form of an Alt entry in the enclosing structure element) + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, + or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry + in the enclosing structure element structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') - An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set - and whose rectangle is not outside the crop-box and does not have a Contents key does not have - an alternative description (in the form of an Alt entry in the enclosing structure element) + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, + or those having rectangle outside the crop-box) has neither Contents key nor an Alt entry + in the enclosing structure element diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 9140474f..f215d161 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -737,16 +737,16 @@ - An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set - and whose rectangle is not outside the crop-box and does not have a Contents key shall have - an alternative description (in the form of an Alt entry in the enclosing structure element) + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, + or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry + in the enclosing structure element structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') - An annotation other than annotations of type Link, Widget or Popup whose hidden flag is not set - and whose rectangle is not outside the crop-box and does not have a Contents key does not have - an alternative description (in the form of an Alt entry in the enclosing structure element) + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, + or those having rectangle outside the crop-box) has neither Contents key nor an Alt entry + in the enclosing structure element From fce9aa9b57be5cee034031f3e932be3f9855a953 Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Fri, 17 Jul 2020 16:43:32 +0300 Subject: [PATCH 322/557] PDF/UA validation. Fix rule 7.1.13 (#203) --- PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml | 2 +- PDF_UA/PDFUA-1-Human.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml b/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml index 521eb191..9d017e14 100644 --- a/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml +++ b/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml @@ -9,7 +9,7 @@ The structure type and attributes of a structure element shall be semantically appropriate. - (!/^H([1-9][0-9]*)*$/.test(standardTag) || suspectRole == 'H') && (standardTag != 'P' || suspectRole == 'P') + (!/^H([1-9][0-9]*)*$/.test(parentStandardTag) || suspectRole == 'H') && (parentStandardTag != 'P' || suspectRole == 'P') The structure type and attributes of a structure element are not semantically appropriate for the structure element. diff --git a/PDF_UA/PDFUA-1-Human.xml b/PDF_UA/PDFUA-1-Human.xml index 09a4ce3e..15ccad9c 100644 --- a/PDF_UA/PDFUA-1-Human.xml +++ b/PDF_UA/PDFUA-1-Human.xml @@ -9,7 +9,7 @@ The structure type and attributes of a structure element shall be semantically appropriate. - (!/^H([1-9][0-9]*)*$/.test(standardTag) || suspectRole == 'H') && (standardTag != 'P' || suspectRole == 'P') + (!/^H([1-9][0-9]*)*$/.test(parentStandardTag) || suspectRole == 'H') && (parentStandardTag != 'P' || suspectRole == 'P') The structure type and attributes of a structure element are not semantically appropriate for the structure element. From 74501e0bee4781a31f46f4774072c8f1cdaff531 Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Tue, 28 Jul 2020 15:36:49 +0300 Subject: [PATCH 323/557] PDF/UA validation. Fix lang hierarchy (#205) --- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml | 2 +- .../verapdf-profile-7-21-6-t01.xml | 4 ++-- PDF_UA/PDFUA-1.xml | 12 ++++++------ PDF_UA/WCAG-21-Complete.xml | 12 ++++++------ 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml index 4878969d..c65600f7 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml @@ -9,7 +9,7 @@ Natural language for text in ActualText attribute shall be determined - tag != 'Span' || ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in ActualText attribute cannot be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml index 0a1937d7..e963b30f 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml @@ -9,7 +9,7 @@ Natural language for text in Alt attribute shall be determined - tag != 'Span' || Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in Alt attribute cannot be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml index 539e96c9..678ebf55 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml @@ -9,7 +9,7 @@ Natural language for text in E attribute shall be determined - tag != 'Span' || E == null || Lang_size != 0 || gSizeCatalogLang != 0 + tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in E attribute cannot be determined diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml index 3de3a7f9..d2a5bb60 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml @@ -10,8 +10,8 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 4a0b969e..2d32c82c 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -460,7 +460,7 @@ Natural language for text in ActualText attribute shall be determined - tag != 'Span' || ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in ActualText attribute cannot be determined @@ -470,7 +470,7 @@ Natural language for text in Alt attribute shall be determined - tag != 'Span' || Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in Alt attribute cannot be determined @@ -480,7 +480,7 @@ Natural language for text in E attribute shall be determined - tag != 'Span' || E == null || Lang_size != 0 || gSizeCatalogLang != 0 + tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in E attribute cannot be determined @@ -1001,9 +1001,9 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index f215d161..16389ca6 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -480,7 +480,7 @@ Natural language for text in ActualText attribute shall be determined - tag != 'Span' || ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in ActualText attribute cannot be determined @@ -490,7 +490,7 @@ Natural language for text in Alt attribute shall be determined - tag != 'Span' || Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in Alt attribute cannot be determined @@ -500,7 +500,7 @@ Natural language for text in E attribute shall be determined - tag != 'Span' || E == null || Lang_size != 0 || gSizeCatalogLang != 0 + tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in E attribute cannot be determined @@ -1021,9 +1021,9 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || renderingMode == 3 || cmap10Present == true || cmap31Present == true + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic + cmap entries such that all necessary glyph lookups can be carried out. + isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables From 99d9594fcdc46f37cf0ffc66358cb15eea0db68c Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Fri, 7 Aug 2020 11:16:37 +0300 Subject: [PATCH 324/557] PDF/UA validation. Add rule 7.20.2 (#206) PDF/UA validation. Fix rule 7.21.7.1 PDF/UA validation. Fix rule 7.2.33 --- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml | 4 +-- .../verapdf-profile-7-20-t02.xml | 25 +++++++++++++++++++ .../verapdf-profile-7-21-7-t01.xml | 4 +-- PDF_UA/PDFUA-1.xml | 21 +++++++++++++--- PDF_UA/WCAG-21-Complete.xml | 21 +++++++++++++--- 5 files changed, 63 insertions(+), 12 deletions(-) create mode 100644 PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml index ad3c7c8b..5e59b92f 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml @@ -6,10 +6,10 @@
- + Natural language for document metadata shall be determined - gSizeCatalogLang != 0 + xDefault == false || gSizeCatalogLang != 0 Natural language for document metadata cannot be determined diff --git a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml new file mode 100644 index 00000000..151fe1c6 --- /dev/null +++ b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.20 XObjects - MCID + The content of Form XObjects shall be incorporated into structure elements according to + ISO 32000-1:2008, 14.7.2. +
+ + + + + The content of Form XObjects shall be incorporated into structure elements according to + ISO 32000-1:2008, 14.7.2. + isUniqueSemanticParent == true + + Form XObject contains MCIDs and is referenced more than once + + + + + + + + +
diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml index 3eb576a7..f1fe344d 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml @@ -10,14 +10,14 @@ 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 ISO 19005-2, 6.2.11.7.2. + or other mechanisms as defined in ISO 14289-1, 7.21.7. toUnicode != null The glyph can not be mapped to Unicode - +
diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 2d32c82c..f8fa4a05 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -487,10 +487,10 @@ - + Natural language for document metadata shall be determined - gSizeCatalogLang != 0 + xDefault == false || gSizeCatalogLang != 0 Natural language for document metadata cannot be determined @@ -849,6 +849,19 @@ + + + The content of Form XObjects shall be incorporated into structure elements according to + ISO 32000-1:2008, 14.7.2. + isUniqueSemanticParent == true + + Form XObject contains MCIDs and is referenced more than once + + + + + + For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary @@ -1048,14 +1061,14 @@ 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 ISO 19005-2, 6.2.11.7.2. + or other mechanisms as defined in ISO 14289-1, 7.21.7. toUnicode != null The glyph can not be mapped to Unicode - + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 16389ca6..aeed5f93 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -507,10 +507,10 @@ - + Natural language for document metadata shall be determined - gSizeCatalogLang != 0 + xDefault == false || gSizeCatalogLang != 0 Natural language for document metadata cannot be determined @@ -869,6 +869,19 @@ + + + The content of Form XObjects shall be incorporated into structure elements according to + ISO 32000-1:2008, 14.7.2. + isUniqueSemanticParent == true + + Form XObject contains MCIDs and is referenced more than once + + + + + + For any given composite (Type 0) font within a conforming file, the CIDSystemInfo entry in its CIDFont dictionary and its Encoding dictionary @@ -1068,14 +1081,14 @@ 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 ISO 19005-2, 6.2.11.7.2. + or other mechanisms as defined in ISO 14289-1, 7.21.7. toUnicode != null The glyph can not be mapped to Unicode - + From ba471a1cd2b840ec85485b10d734560e13a6924a Mon Sep 17 00:00:00 2001 From: MaximPlusov <36183885+MaximPlusov@users.noreply.github.com> Date: Fri, 21 Aug 2020 11:53:40 +0300 Subject: [PATCH 325/557] PDF/UA validation. Fix tagged profiles (#208) --- .../7.1 General/verapdf-profile-7-1-t13.xml | 2 +- .../verapdf-profile-7-18-1-t01.xml | 4 +- .../verapdf-profile-7-18-1-t03.xml | 4 +- .../verapdf-profile-7-18-2-t01.xml | 4 +- .../verapdf-profile-7-18-4-t01.xml | 4 +- .../verapdf-profile-7-18-5-t01.xml | 4 +- .../verapdf-profile-7-18-5-t02.xml | 4 +- .../verapdf-profile-7-18-8-t01.xml | 8 +- .../7.2 Text/verapdf-profile-7-2-t03-t15.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml | 6 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml | 6 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml | 6 +- .../verapdf-profile-7-21-3-3-t01.xml | 2 +- .../verapdf-profile-7-21-6-t02.xml | 9 +- .../verapdf-profile-7-21-7-t01.xml | 2 +- .../verapdf-profile-7-21-8-t01.xml | 2 +- PDF_UA/ISO-32000-1-Tagged.xml | 4840 ++++++------- PDF_UA/ISO-32000-2-Tagged.xml | 6296 ++++++++--------- PDF_UA/PDFUA-1.xml | 59 +- PDF_UA/WCAG-21-Complete.xml | 48 +- .../verapdf-profile-1-3-4-t01.xml | 2 +- 24 files changed, 5666 insertions(+), 5654 deletions(-) diff --git a/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml b/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml index 9d017e14..6a7ca82e 100644 --- a/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml +++ b/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.1 General - Semantically appropriate structure type and attributes The structure type and attributes of a structure element shall be semantically appropriate. diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml index 48705b38..94779f1a 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.1 General - Annot tag - An annotation, excluding annotations of subtype Widget, Popup or Link, shall nested within an Annot tag + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag
- An annotation, excluding annotations of subtype Widget, Popup or Link, shall nested within an Annot tag + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || structParentType == 'Annot' An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml index 57520289..ac37207b 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml @@ -8,12 +8,12 @@
- + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) - Subtype != 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') + isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') A form field whose hidden flag is not set and whose rectangle is not outside the crop-box and does not have a TU key and its Widget annotations do not have alternative descriptions diff --git a/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml index a9ccf82e..34fdcd5c 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml @@ -6,10 +6,10 @@
- + Annotations of subtype TrapNet shall not be permitted. - Subtype != 'TrapNet' + false An annotation of subtype TrapNet exists diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml index a171d4d6..7d84d466 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml @@ -6,10 +6,10 @@
- + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. - Subtype != 'Widget' || structParentType == 'Form' + structParentType == 'Form' A widget annotation is not nested within a Form tag diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml index 75139067..8e7f0f8e 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml @@ -6,10 +6,10 @@
- + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - Subtype != 'Link' || structParentType == 'Link' + structParentType == 'Link' A link annotation is not nested within a Link tag diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml index 82152137..55e734d4 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml @@ -6,10 +6,10 @@
- + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. - Subtype != 'Link' || (Contents != null && Contents != '') + Contents != null && Contents != '' A link annotation does not include an alternate description in the Contents Key diff --git a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml index 6ea5dbc2..ea3dba9c 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml @@ -7,16 +7,18 @@
- + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. - Subtype != 'PrinterMark' || structParentType == null + structParentType == null A PrinterMark annotation is included in logical structure - + + + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml index 719e1358..6b1d668a 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 7.2 Text - Table structure A table-related structure element should used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337. diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml index 9afe55c0..e9fbc8f6 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml @@ -9,7 +9,7 @@ Natural language for text in ActualText attribute shall be determined - ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 Natural language for text in ActualText attribute cannot be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml index 8c17d3f3..8571c78d 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml @@ -9,7 +9,7 @@ Natural language for text in Alt attribute shall be determined - Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 Natural language for text in Alt attribute cannot be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml index 0ea33a96..518fb4f0 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml @@ -9,7 +9,7 @@ Natural language for text in E attribute shall be determined - E == null || Lang_size != 0 || gSizeCatalogLang != 0 + E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 Natural language for text in E attribute cannot be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml index c65600f7..ff38c512 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml @@ -1,17 +1,17 @@
- ISO 14289-1:2014 - 7.2 Text - Lang for ActualText + ISO 14289-1:2014 - 7.2 Text - Lang for ActualText in Span Natural language for text in ActualText attribute shall be determined
- Natural language for text in ActualText attribute shall be determined + Natural language for text in ActualText attribute in Span Marked Content shall be determined tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - Natural language for text in ActualText attribute cannot be determined + Natural language for text in ActualText attribute in Span Marked Content cannot be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml index e963b30f..42c2f8c8 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml @@ -1,17 +1,17 @@
- ISO 14289-1:2014 - 7.2 Text - Lang for Alt + ISO 14289-1:2014 - 7.2 Text - Lang for Alt in Span Natural language for text in Alt attribute shall be determined
- Natural language for text in Alt attribute shall be determined + Natural language for text in Alt attribute in Span Marked Content shall be determined tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - Natural language for text in Alt attribute cannot be determined + Natural language for text in Alt attribute in Span Marked Content cannot be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml index 678ebf55..8400d438 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml @@ -1,17 +1,17 @@
- ISO 14289-1:2014 - 7.2 Text - Lang for E + ISO 14289-1:2014 - 7.2 Text - Lang for E in Span Natural language for text in E attribute shall be determined
- Natural language for text in E attribute shall be determined + Natural language for text in E attribute in Span Marked Content shall be determined tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - Natural language for text in E attribute cannot be determined + Natural language for text in E attribute in Span Marked Content cannot be determined diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml index ce835db2..ad1cdec7 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml @@ -2,7 +2,7 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5.
diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml index 8d41469c..1da493ee 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml @@ -10,9 +10,12 @@ - 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. + 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml index f1fe344d..390dee57 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml @@ -3,7 +3,7 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Unicode mapping 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 ISO 19005-2:2011, 6.2.11.7.2. + or other mechanisms as defined in ISO 14289-1, 7.21.7.
diff --git a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml index f824fa90..195eeca3 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml @@ -2,7 +2,7 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.8 Use of .notdef glyph - Use of .notdef glyph - A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing operators, + A PDF/UA compliant document 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.
diff --git a/PDF_UA/ISO-32000-1-Tagged.xml b/PDF_UA/ISO-32000-1-Tagged.xml index cc650f2c..e8846bf1 100644 --- a/PDF_UA/ISO-32000-1-Tagged.xml +++ b/PDF_UA/ISO-32000-1-Tagged.xml @@ -534,10 +534,10 @@
- + Document elem should not contain TOCI kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Document elem contains TOCI kid @@ -546,10 +546,10 @@
- + Document elem should contain zero or one H kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Document contains more than one H kid @@ -558,10 +558,10 @@
- + Document elem should not contain Lbl kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Document elem contains Lbl kid @@ -570,10 +570,10 @@ - + Document elem should not contain Span kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Document elem contains Span kid @@ -582,10 +582,10 @@ - + Document elem should not contain Quote kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Document elem contains Quote kid @@ -594,10 +594,10 @@ - + Document elem should not contain Reference kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Document elem contains Reference kid @@ -606,10 +606,10 @@ - + Document elem should not contain Ruby kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Document elem contains Ruby kid @@ -618,10 +618,10 @@ - + Document elem should not contain RB kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Document elem contains RB kid @@ -630,10 +630,10 @@ - + Document elem should not contain RT kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Document elem contains RT kid @@ -642,10 +642,10 @@ - + Document elem should not contain RP kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Document elem contains RP kid @@ -654,10 +654,10 @@ - + Document elem should not contain Warichu kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Document elem contains Warichu kid @@ -666,10 +666,10 @@ - + Document elem should not contain WT kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Document elem contains WT kid @@ -678,10 +678,10 @@ - + Document elem should not contain WP kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Document elem contains WP kid @@ -690,10 +690,10 @@ - + Document elem should not contain LI kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Document elem contains LI kid @@ -702,10 +702,10 @@ - + Document elem should not contain LBody kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Document elem contains LBody kid @@ -714,10 +714,10 @@ - + Document elem should not contain BibEntry kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Document elem contains BibEntry kid @@ -726,10 +726,10 @@ - + Document elem should not contain TR kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Document elem contains TR kid @@ -738,10 +738,10 @@ - + Document elem should not contain TH kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Document elem contains TH kid @@ -750,10 +750,10 @@ - + Document elem should not contain TD kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Document elem contains TD kid @@ -762,10 +762,10 @@ - + Document elem should not contain THead kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Document elem contains THead kid @@ -774,10 +774,10 @@ - + Document elem should not contain TBody kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Document elem contains TBody kid @@ -786,10 +786,10 @@ - + Document elem should not contain TFoot kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Document elem contains TFoot kid @@ -798,10 +798,10 @@ - + Document elem should not contain Caption kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Document elem contains Caption kid @@ -810,10 +810,10 @@ - + Document elem should not contain content item kid - (standardType != 'Document') || (hasContentItems == false) + hasContentItems == false Document elem contains content item kid @@ -822,10 +822,10 @@ - + Part elem should not contain Span kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Part elem contains Span kid @@ -834,10 +834,10 @@ - + Part elem should not contain Quote kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Part elem contains Quote kid @@ -846,10 +846,10 @@ - + Part elem should not contain Ruby kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Part elem contains Ruby kid @@ -858,10 +858,10 @@ - + Part elem should not contain RB kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Part elem contains RB kid @@ -870,10 +870,10 @@ - + Part elem should not contain RT kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Part elem contains RT kid @@ -882,10 +882,10 @@ - + Part elem should not contain RP kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Part elem contains RP kid @@ -894,10 +894,10 @@ - + Part elem should not contain Warichu kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Part elem contains Warichu kid @@ -906,10 +906,10 @@ - + Part elem should not contain WT kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Part elem contains WT kid @@ -918,10 +918,10 @@ - + Part elem should not contain WP kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Part elem contains WP kid @@ -930,10 +930,10 @@ - + Part elem should not contain LI kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Part elem contains LI kid @@ -942,10 +942,10 @@ - + Part elem should not contain LBody kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Part elem contains LBody kid @@ -954,10 +954,10 @@ - + Part elem should not contain TR kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Part elem contains TR kid @@ -966,10 +966,10 @@ - + Part elem should not contain TH kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Part elem contains TH kid @@ -978,10 +978,10 @@ - + Part elem should not contain TD kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Part elem contains TD kid @@ -990,10 +990,10 @@ - + Part elem should not contain THead kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Part elem contains THead kid @@ -1002,10 +1002,10 @@ - + Part elem should not contain TBody kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Part elem contains TBody kid @@ -1014,10 +1014,10 @@ - + Part elem should not contain TFoot kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Part elem contains TFoot kid @@ -1026,10 +1026,10 @@ - + Part elem should not contain content item kid - (standardType != 'Part') || (hasContentItems == false) + hasContentItems == false Part elem contains content item kid @@ -1038,10 +1038,10 @@ - + Div elem should not contain content item kid - (standardType != 'Div') || (hasContentItems == false) + hasContentItems == false Div elem contains content item kid @@ -1050,10 +1050,10 @@ - + Art elem should not contain Document kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Art elem contains Document kid @@ -1062,10 +1062,10 @@ - + Art elem should not contain Art kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Art elem contains Art kid @@ -1074,10 +1074,10 @@ - + Art elem should not contain TOCI kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Art elem contains TOCI kid @@ -1086,10 +1086,10 @@ - + Art elem should contain zero or one H kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Art contains more than one H kid @@ -1098,10 +1098,10 @@ - + Art elem should not contain Span kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Art elem contains Span kid @@ -1110,10 +1110,10 @@ - + Art elem should not contain Quote kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Art elem contains Quote kid @@ -1122,10 +1122,10 @@ - + Art elem should not contain Reference kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Art elem contains Reference kid @@ -1134,10 +1134,10 @@ - + Art elem should not contain Ruby kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Art elem contains Ruby kid @@ -1146,10 +1146,10 @@ - + Art elem should not contain RB kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Art elem contains RB kid @@ -1158,10 +1158,10 @@ - + Art elem should not contain RT kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Art elem contains RT kid @@ -1170,10 +1170,10 @@ - + Art elem should not contain RP kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Art elem contains RP kid @@ -1182,10 +1182,10 @@ - + Art elem should not contain Warichu kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Art elem contains Warichu kid @@ -1194,10 +1194,10 @@ - + Art elem should not contain WT kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Art elem contains WT kid @@ -1206,10 +1206,10 @@ - + Art elem should not contain WP kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Art elem contains WP kid @@ -1218,10 +1218,10 @@ - + Art elem should not contain LI kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Art elem contains LI kid @@ -1230,10 +1230,10 @@ - + Art elem should not contain LBody kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Art elem contains LBody kid @@ -1242,10 +1242,10 @@ - + Art elem should not contain BibEntry kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Art elem contains BibEntry kid @@ -1254,10 +1254,10 @@ - + Art elem should not contain TR kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Art elem contains TR kid @@ -1266,10 +1266,10 @@ - + Art elem should not contain TH kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Art elem contains TH kid @@ -1278,10 +1278,10 @@ - + Art elem should not contain TD kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Art elem contains TD kid @@ -1290,10 +1290,10 @@ - + Art elem should not contain THead kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Art elem contains THead kid @@ -1302,10 +1302,10 @@ - + Art elem should not contain TBody kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Art elem contains TBody kid @@ -1314,10 +1314,10 @@ - + Art elem should not contain TFoot kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Art elem contains TFoot kid @@ -1326,10 +1326,10 @@ - + Art elem should not contain content item kid - (standardType != 'Art') || (hasContentItems == false) + hasContentItems == false Art elem contains content item kid @@ -1338,10 +1338,10 @@ - + Sect elem should not contain Document kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Sect elem contains Document kid @@ -1350,10 +1350,10 @@ - + Sect elem should not contain TOCI kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Sect elem contains TOCI kid @@ -1362,10 +1362,10 @@ - + Sect elem should contain zero or one H kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Sect contains more than one H kid @@ -1374,10 +1374,10 @@ - + Sect elem should not contain Span kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Sect elem contains Span kid @@ -1386,10 +1386,10 @@ - + Sect elem should not contain Quote kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Sect elem contains Quote kid @@ -1398,10 +1398,10 @@ - + Sect elem should not contain Reference kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Sect elem contains Reference kid @@ -1410,10 +1410,10 @@ - + Sect elem should not contain Ruby kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Sect elem contains Ruby kid @@ -1422,10 +1422,10 @@ - + Sect elem should not contain RB kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Sect elem contains RB kid @@ -1434,10 +1434,10 @@ - + Sect elem should not contain RT kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Sect elem contains RT kid @@ -1446,10 +1446,10 @@ - + Sect elem should not contain RP kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Sect elem contains RP kid @@ -1458,10 +1458,10 @@ - + Sect elem should not contain Warichu kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Sect elem contains Warichu kid @@ -1470,10 +1470,10 @@ - + Sect elem should not contain WT kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Sect elem contains WT kid @@ -1482,10 +1482,10 @@ - + Sect elem should not contain WP kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Sect elem contains WP kid @@ -1494,10 +1494,10 @@ - + Sect elem should not contain LI kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Sect elem contains LI kid @@ -1506,10 +1506,10 @@ - + Sect elem should not contain LBody kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Sect elem contains LBody kid @@ -1518,10 +1518,10 @@ - + Sect elem should not contain BibEntry kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Sect elem contains BibEntry kid @@ -1530,10 +1530,10 @@ - + Sect elem should not contain TR kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Sect elem contains TR kid @@ -1542,10 +1542,10 @@ - + Sect elem should not contain TH kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Sect elem contains TH kid @@ -1554,10 +1554,10 @@ - + Sect elem should not contain TD kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Sect elem contains TD kid @@ -1566,10 +1566,10 @@ - + Sect elem should not contain THead kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Sect elem contains THead kid @@ -1578,10 +1578,10 @@ - + Sect elem should not contain TBody kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Sect elem contains TBody kid @@ -1590,10 +1590,10 @@ - + Sect elem should not contain TFoot kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Sect elem contains TFoot kid @@ -1602,10 +1602,10 @@ - + Sect elem should not contain content item kid - (standardType != 'Sect') || (hasContentItems == false) + hasContentItems == false Sect elem contains content item kid @@ -1614,10 +1614,10 @@ - + TOC elem should not contain Document kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TOC elem contains Document kid @@ -1626,10 +1626,10 @@ - + TOC elem should not contain Part kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TOC elem contains Part kid @@ -1638,10 +1638,10 @@ - + TOC elem should not contain Art kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 TOC elem contains Art kid @@ -1650,10 +1650,10 @@ - + TOC elem should not contain Div kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 TOC elem contains Div kid @@ -1662,10 +1662,10 @@ - + TOC elem should not contain Sect kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 TOC elem contains Sect kid @@ -1674,10 +1674,10 @@ - + TOC elem should not contain BlockQuote kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TOC elem contains BlockQuote kid @@ -1686,10 +1686,10 @@ - + TOC elem should not contain P kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 TOC elem contains P kid @@ -1698,10 +1698,10 @@ - + TOC elem should not contain Note kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 TOC elem contains Note kid @@ -1710,10 +1710,10 @@ - + TOC elem should not contain Code kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 TOC elem contains Code kid @@ -1722,10 +1722,10 @@ - + TOC elem should not contain Hn kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 TOC elem contains Hn kid @@ -1734,10 +1734,10 @@ - + TOC elem should not contain H kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 TOC elem contains H kid @@ -1746,10 +1746,10 @@ - + TOC elem should not contain Lbl kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 TOC elem contains Lbl kid @@ -1758,10 +1758,10 @@ - + TOC elem should not contain Span kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 TOC elem contains Span kid @@ -1770,10 +1770,10 @@ - + TOC elem should not contain Quote kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 TOC elem contains Quote kid @@ -1782,10 +1782,10 @@ - + TOC elem should not contain Link kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 TOC elem contains Link kid @@ -1794,10 +1794,10 @@ - + TOC elem should not contain Reference kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 TOC elem contains Reference kid @@ -1806,10 +1806,10 @@ - + TOC elem should not contain Annot kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 TOC elem contains Annot kid @@ -1818,10 +1818,10 @@ - + TOC elem should not contain Form kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 TOC elem contains Form kid @@ -1830,10 +1830,10 @@ - + TOC elem should not contain Ruby kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 TOC elem contains Ruby kid @@ -1842,10 +1842,10 @@ - + TOC elem should not contain RB kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TOC elem contains RB kid @@ -1854,10 +1854,10 @@ - + TOC elem should not contain RT kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TOC elem contains RT kid @@ -1866,10 +1866,10 @@ - + TOC elem should not contain RP kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TOC elem contains RP kid @@ -1878,10 +1878,10 @@ - + TOC elem should not contain Warichu kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 TOC elem contains Warichu kid @@ -1890,10 +1890,10 @@ - + TOC elem should not contain WT kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TOC elem contains WT kid @@ -1902,10 +1902,10 @@ - + TOC elem should not contain WP kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TOC elem contains WP kid @@ -1914,10 +1914,10 @@ - + TOC elem should not contain Index kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 TOC elem contains Index kid @@ -1926,10 +1926,10 @@ - + TOC elem should not contain L kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 TOC elem contains L kid @@ -1938,10 +1938,10 @@ - + TOC elem should not contain LI kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TOC elem contains LI kid @@ -1950,10 +1950,10 @@ - + TOC elem should not contain LBody kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TOC elem contains LBody kid @@ -1962,10 +1962,10 @@ - + TOC elem should not contain BibEntry kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 TOC elem contains BibEntry kid @@ -1974,10 +1974,10 @@ - + TOC elem should not contain Table kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 TOC elem contains Table kid @@ -1986,10 +1986,10 @@ - + TOC elem should not contain TR kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 TOC elem contains TR kid @@ -1998,10 +1998,10 @@ - + TOC elem should not contain TH kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TOC elem contains TH kid @@ -2010,10 +2010,10 @@ - + TOC elem should not contain TD kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TOC elem contains TD kid @@ -2022,10 +2022,10 @@ - + TOC elem should not contain THead kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TOC elem contains THead kid @@ -2034,10 +2034,10 @@ - + TOC elem should not contain TBody kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TOC elem contains TBody kid @@ -2046,10 +2046,10 @@ - + TOC elem should not contain TFoot kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TOC elem contains TFoot kid @@ -2058,10 +2058,10 @@ - + TOC elem should not contain Caption kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TOC elem contains Caption kid @@ -2070,10 +2070,10 @@ - + TOC elem should not contain Figure kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 TOC elem contains Figure kid @@ -2082,10 +2082,10 @@ - + TOC elem should not contain Formula kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 TOC elem contains Formula kid @@ -2094,10 +2094,10 @@ - + TOC elem should not contain content item kid - (standardType != 'TOC') || (hasContentItems == false) + hasContentItems == false TOC elem contains content item kid @@ -2106,10 +2106,10 @@ - + TOCI elem should not contain Document kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TOCI elem contains Document kid @@ -2118,10 +2118,10 @@ - + TOCI elem should not contain Part kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TOCI elem contains Part kid @@ -2130,10 +2130,10 @@ - + TOCI elem should not contain Art kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 TOCI elem contains Art kid @@ -2142,10 +2142,10 @@ - + TOCI elem should not contain Sect kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 TOCI elem contains Sect kid @@ -2154,10 +2154,10 @@ - + TOCI elem should not contain TOCI kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TOCI elem contains TOCI kid @@ -2166,10 +2166,10 @@ - + TOCI elem should not contain BlockQuote kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TOCI elem contains BlockQuote kid @@ -2178,10 +2178,10 @@ - + TOCI elem should not contain Note kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 TOCI elem contains Note kid @@ -2190,10 +2190,10 @@ - + TOCI elem should not contain Code kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 TOCI elem contains Code kid @@ -2202,10 +2202,10 @@ - + TOCI elem should not contain Hn kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 TOCI elem contains Hn kid @@ -2214,10 +2214,10 @@ - + TOCI elem should not contain H kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 TOCI elem contains H kid @@ -2226,10 +2226,10 @@ - + TOCI elem should not contain Span kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 TOCI elem contains Span kid @@ -2238,10 +2238,10 @@ - + TOCI elem should not contain Quote kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 TOCI elem contains Quote kid @@ -2250,10 +2250,10 @@ - + TOCI elem should not contain Link kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 TOCI elem contains Link kid @@ -2262,10 +2262,10 @@ - + TOCI elem should not contain Annot kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 TOCI elem contains Annot kid @@ -2274,10 +2274,10 @@ - + TOCI elem should not contain Form kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 TOCI elem contains Form kid @@ -2286,10 +2286,10 @@ - + TOCI elem should not contain Ruby kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 TOCI elem contains Ruby kid @@ -2298,10 +2298,10 @@ - + TOCI elem should not contain RB kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TOCI elem contains RB kid @@ -2310,10 +2310,10 @@ - + TOCI elem should not contain RT kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TOCI elem contains RT kid @@ -2322,10 +2322,10 @@ - + TOCI elem should not contain RP kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TOCI elem contains RP kid @@ -2334,10 +2334,10 @@ - + TOCI elem should not contain Warichu kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 TOCI elem contains Warichu kid @@ -2346,10 +2346,10 @@ - + TOCI elem should not contain WT kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TOCI elem contains WT kid @@ -2358,10 +2358,10 @@ - + TOCI elem should not contain WP kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TOCI elem contains WP kid @@ -2370,10 +2370,10 @@ - + TOCI elem should not contain Index kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 TOCI elem contains Index kid @@ -2382,10 +2382,10 @@ - + TOCI elem should not contain L kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 TOCI elem contains L kid @@ -2394,10 +2394,10 @@ - + TOCI elem should not contain LI kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TOCI elem contains LI kid @@ -2406,10 +2406,10 @@ - + TOCI elem should not contain LBody kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TOCI elem contains LBody kid @@ -2418,10 +2418,10 @@ - + TOCI elem should not contain BibEntry kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 TOCI elem contains BibEntry kid @@ -2430,10 +2430,10 @@ - + TOCI elem should not contain Table kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 TOCI elem contains Table kid @@ -2442,10 +2442,10 @@ - + TOCI elem should not contain TR kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 TOCI elem contains TR kid @@ -2454,10 +2454,10 @@ - + TOCI elem should not contain TH kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TOCI elem contains TH kid @@ -2466,10 +2466,10 @@ - + TOCI elem should not contain TD kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TOCI elem contains TD kid @@ -2478,10 +2478,10 @@ - + TOCI elem should not contain THead kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TOCI elem contains THead kid @@ -2490,10 +2490,10 @@ - + TOCI elem should not contain TBody kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TOCI elem contains TBody kid @@ -2502,10 +2502,10 @@ - + TOCI elem should not contain TFoot kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TOCI elem contains TFoot kid @@ -2514,10 +2514,10 @@ - + TOCI elem should not contain Caption kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TOCI elem contains Caption kid @@ -2526,10 +2526,10 @@ - + TOCI elem should not contain Figure kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 TOCI elem contains Figure kid @@ -2538,10 +2538,10 @@ - + TOCI elem should not contain Formula kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 TOCI elem contains Formula kid @@ -2550,10 +2550,10 @@ - + TOCI elem should not contain content item kid - (standardType != 'TOCI') || (hasContentItems == false) + hasContentItems == false TOCI elem contains content item kid @@ -2562,10 +2562,10 @@ - + BlockQuote elem should not contain TOCI kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 BlockQuote elem contains TOCI kid @@ -2574,10 +2574,10 @@ - + BlockQuote elem should not contain BlockQuote kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 BlockQuote elem contains BlockQuote kid @@ -2586,10 +2586,10 @@ - + BlockQuote elem should contain zero or one H kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 BlockQuote contains more than one H kid @@ -2598,10 +2598,10 @@ - + BlockQuote elem should not contain Span kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 BlockQuote elem contains Span kid @@ -2610,10 +2610,10 @@ - + BlockQuote elem should not contain Quote kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 BlockQuote elem contains Quote kid @@ -2622,10 +2622,10 @@ - + BlockQuote elem should not contain Ruby kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 BlockQuote elem contains Ruby kid @@ -2634,10 +2634,10 @@ - + BlockQuote elem should not contain RB kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 BlockQuote elem contains RB kid @@ -2646,10 +2646,10 @@ - + BlockQuote elem should not contain RT kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 BlockQuote elem contains RT kid @@ -2658,10 +2658,10 @@ - + BlockQuote elem should not contain RP kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 BlockQuote elem contains RP kid @@ -2670,10 +2670,10 @@ - + BlockQuote elem should not contain Warichu kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 BlockQuote elem contains Warichu kid @@ -2682,10 +2682,10 @@ - + BlockQuote elem should not contain WT kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 BlockQuote elem contains WT kid @@ -2694,10 +2694,10 @@ - + BlockQuote elem should not contain WP kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 BlockQuote elem contains WP kid @@ -2706,10 +2706,10 @@ - + BlockQuote elem should not contain LI kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 BlockQuote elem contains LI kid @@ -2718,10 +2718,10 @@ - + BlockQuote elem should not contain LBody kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 BlockQuote elem contains LBody kid @@ -2730,10 +2730,10 @@ - + BlockQuote elem should not contain BibEntry kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 BlockQuote elem contains BibEntry kid @@ -2742,10 +2742,10 @@ - + BlockQuote elem should not contain TR kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 BlockQuote elem contains TR kid @@ -2754,10 +2754,10 @@ - + BlockQuote elem should not contain TH kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 BlockQuote elem contains TH kid @@ -2766,10 +2766,10 @@ - + BlockQuote elem should not contain TD kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 BlockQuote elem contains TD kid @@ -2778,10 +2778,10 @@ - + BlockQuote elem should not contain THead kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 BlockQuote elem contains THead kid @@ -2790,10 +2790,10 @@ - + BlockQuote elem should not contain TBody kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 BlockQuote elem contains TBody kid @@ -2802,10 +2802,10 @@ - + BlockQuote elem should not contain TFoot kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 BlockQuote elem contains TFoot kid @@ -2814,10 +2814,10 @@ - + BlockQuote elem should contain zero or one Caption kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 BlockQuote contains more than one Caption kid @@ -2826,10 +2826,10 @@ - + Private elem should contain zero or one H kid - (standardType != 'Private') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Private contains more than one H kid @@ -2838,10 +2838,10 @@ - + Private elem should contain zero or one Caption kid - (standardType != 'Private') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Private contains more than one Caption kid @@ -2850,10 +2850,10 @@ - + P elem should not contain Document kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 P elem contains Document kid @@ -2862,10 +2862,10 @@ - + P elem should not contain Part kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 P elem contains Part kid @@ -2874,10 +2874,10 @@ - + P elem should not contain Art kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 P elem contains Art kid @@ -2886,10 +2886,10 @@ - + P elem should not contain Div kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 P elem contains Div kid @@ -2898,10 +2898,10 @@ - + P elem should not contain Sect kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 P elem contains Sect kid @@ -2910,10 +2910,10 @@ - + P elem should not contain TOC kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 P elem contains TOC kid @@ -2922,10 +2922,10 @@ - + P elem should not contain TOCI kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 P elem contains TOCI kid @@ -2934,10 +2934,10 @@ - + P elem should not contain BlockQuote kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 P elem contains BlockQuote kid @@ -2946,10 +2946,10 @@ - + P elem should not contain P kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 P elem contains P kid @@ -2958,10 +2958,10 @@ - + P elem should not contain Hn kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 P elem contains Hn kid @@ -2970,10 +2970,10 @@ - + P elem should not contain H kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 P elem contains H kid @@ -2982,10 +2982,10 @@ - + P elem should not contain RB kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 P elem contains RB kid @@ -2994,10 +2994,10 @@ - + P elem should not contain RT kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 P elem contains RT kid @@ -3006,10 +3006,10 @@ - + P elem should not contain RP kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 P elem contains RP kid @@ -3018,10 +3018,10 @@ - + P elem should not contain WT kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 P elem contains WT kid @@ -3030,10 +3030,10 @@ - + P elem should not contain WP kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 P elem contains WP kid @@ -3042,10 +3042,10 @@ - + P elem should not contain Index kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 P elem contains Index kid @@ -3054,10 +3054,10 @@ - + P elem should not contain LI kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 P elem contains LI kid @@ -3066,10 +3066,10 @@ - + P elem should not contain LBody kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 P elem contains LBody kid @@ -3078,10 +3078,10 @@ - + P elem should not contain Table kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 P elem contains Table kid @@ -3090,10 +3090,10 @@ - + P elem should not contain TR kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 P elem contains TR kid @@ -3102,10 +3102,10 @@ - + P elem should not contain TH kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 P elem contains TH kid @@ -3114,10 +3114,10 @@ - + P elem should not contain TD kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 P elem contains TD kid @@ -3126,10 +3126,10 @@ - + P elem should not contain THead kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 P elem contains THead kid @@ -3138,10 +3138,10 @@ - + P elem should not contain TBody kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 P elem contains TBody kid @@ -3150,10 +3150,10 @@ - + P elem should not contain TFoot kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 P elem contains TFoot kid @@ -3162,10 +3162,10 @@ - + P elem should not contain Caption kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 P elem contains Caption kid @@ -3174,10 +3174,10 @@ - + Note elem should not contain Document kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Note elem contains Document kid @@ -3186,10 +3186,10 @@ - + Note elem should not contain TOC kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Note elem contains TOC kid @@ -3198,10 +3198,10 @@ - + Note elem should not contain TOCI kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Note elem contains TOCI kid @@ -3210,10 +3210,10 @@ - + Note elem should not contain Hn kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 Note elem contains Hn kid @@ -3222,10 +3222,10 @@ - + Note elem should not contain H kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Note elem contains H kid @@ -3234,10 +3234,10 @@ - + Note elem should not contain RB kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Note elem contains RB kid @@ -3246,10 +3246,10 @@ - + Note elem should not contain RT kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Note elem contains RT kid @@ -3258,10 +3258,10 @@ - + Note elem should not contain RP kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Note elem contains RP kid @@ -3270,10 +3270,10 @@ - + Note elem should not contain WT kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Note elem contains WT kid @@ -3282,10 +3282,10 @@ - + Note elem should not contain WP kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Note elem contains WP kid @@ -3294,10 +3294,10 @@ - + Note elem should not contain LI kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Note elem contains LI kid @@ -3306,10 +3306,10 @@ - + Note elem should not contain LBody kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Note elem contains LBody kid @@ -3318,10 +3318,10 @@ - + Note elem should not contain TR kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Note elem contains TR kid @@ -3330,10 +3330,10 @@ - + Note elem should not contain TH kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Note elem contains TH kid @@ -3342,10 +3342,10 @@ - + Note elem should not contain TD kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Note elem contains TD kid @@ -3354,10 +3354,10 @@ - + Note elem should not contain THead kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Note elem contains THead kid @@ -3366,10 +3366,10 @@ - + Note elem should not contain TBody kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Note elem contains TBody kid @@ -3378,10 +3378,10 @@ - + Note elem should not contain TFoot kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Note elem contains TFoot kid @@ -3390,10 +3390,10 @@ - + Code elem should not contain Document kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Code elem contains Document kid @@ -3402,10 +3402,10 @@ - + Code elem should not contain Art kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Code elem contains Art kid @@ -3414,10 +3414,10 @@ - + Code elem should not contain Sect kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Code elem contains Sect kid @@ -3426,10 +3426,10 @@ - + Code elem should not contain TOC kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Code elem contains TOC kid @@ -3438,10 +3438,10 @@ - + Code elem should not contain TOCI kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Code elem contains TOCI kid @@ -3450,10 +3450,10 @@ - + Code elem should not contain BlockQuote kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Code elem contains BlockQuote kid @@ -3462,10 +3462,10 @@ - + Code elem should not contain P kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Code elem contains P kid @@ -3474,10 +3474,10 @@ - + Code elem should not contain Code kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Code elem contains Code kid @@ -3486,10 +3486,10 @@ - + Code elem should not contain Hn kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 Code elem contains Hn kid @@ -3498,10 +3498,10 @@ - + Code elem should not contain H kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Code elem contains H kid @@ -3510,10 +3510,10 @@ - + Code elem should not contain Lbl kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Code elem contains Lbl kid @@ -3522,10 +3522,10 @@ - + Code elem should not contain Quote kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Code elem contains Quote kid @@ -3534,10 +3534,10 @@ - + Code elem should not contain Form kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Code elem contains Form kid @@ -3546,10 +3546,10 @@ - + Code elem should not contain Ruby kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Code elem contains Ruby kid @@ -3558,10 +3558,10 @@ - + Code elem should not contain RB kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Code elem contains RB kid @@ -3570,10 +3570,10 @@ - + Code elem should not contain RT kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Code elem contains RT kid @@ -3582,10 +3582,10 @@ - + Code elem should not contain RP kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Code elem contains RP kid @@ -3594,10 +3594,10 @@ - + Code elem should not contain Warichu kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Code elem contains Warichu kid @@ -3606,10 +3606,10 @@ - + Code elem should not contain WT kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Code elem contains WT kid @@ -3618,10 +3618,10 @@ - + Code elem should not contain WP kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Code elem contains WP kid @@ -3630,10 +3630,10 @@ - + Code elem should not contain Index kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Code elem contains Index kid @@ -3642,10 +3642,10 @@ - + Code elem should not contain L kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Code elem contains L kid @@ -3654,10 +3654,10 @@ - + Code elem should not contain LI kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Code elem contains LI kid @@ -3666,10 +3666,10 @@ - + Code elem should not contain LBody kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Code elem contains LBody kid @@ -3678,10 +3678,10 @@ - + Code elem should not contain Table kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Code elem contains Table kid @@ -3690,10 +3690,10 @@ - + Code elem should not contain TR kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Code elem contains TR kid @@ -3702,10 +3702,10 @@ - + Code elem should not contain TH kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Code elem contains TH kid @@ -3714,10 +3714,10 @@ - + Code elem should not contain TD kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Code elem contains TD kid @@ -3726,10 +3726,10 @@ - + Code elem should not contain THead kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Code elem contains THead kid @@ -3738,10 +3738,10 @@ - + Code elem should not contain TBody kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Code elem contains TBody kid @@ -3750,10 +3750,10 @@ - + Code elem should not contain TFoot kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Code elem contains TFoot kid @@ -3762,10 +3762,10 @@ - + Code elem should not contain Caption kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Code elem contains Caption kid @@ -3774,10 +3774,10 @@ - + Code elem should not contain Figure kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 Code elem contains Figure kid @@ -3786,10 +3786,10 @@ - + Code elem should not contain Formula kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 Code elem contains Formula kid @@ -4134,10 +4134,10 @@ - + H elem should not contain Document kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 H elem contains Document kid @@ -4146,10 +4146,10 @@ - + H elem should not contain Part kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 H elem contains Part kid @@ -4158,10 +4158,10 @@ - + H elem should contain zero or one Art kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1 H contains more than one Art kid @@ -4170,10 +4170,10 @@ - + H elem should not contain Div kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 H elem contains Div kid @@ -4182,10 +4182,10 @@ - + H elem should contain zero or one Sect kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1 H contains more than one Sect kid @@ -4194,10 +4194,10 @@ - + H elem should not contain TOC kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 H elem contains TOC kid @@ -4206,10 +4206,10 @@ - + H elem should not contain TOCI kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 H elem contains TOCI kid @@ -4218,10 +4218,10 @@ - + H elem should not contain BlockQuote kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 H elem contains BlockQuote kid @@ -4230,10 +4230,10 @@ - + H elem should not contain P kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 H elem contains P kid @@ -4242,10 +4242,10 @@ - + H elem should not contain Hn kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 H elem contains Hn kid @@ -4254,10 +4254,10 @@ - + H elem should not contain H kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 H elem contains H kid @@ -4266,10 +4266,10 @@ - + H elem should not contain RB kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 H elem contains RB kid @@ -4278,10 +4278,10 @@ - + H elem should not contain RT kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 H elem contains RT kid @@ -4290,10 +4290,10 @@ - + H elem should not contain RP kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 H elem contains RP kid @@ -4302,10 +4302,10 @@ - + H elem should not contain WT kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 H elem contains WT kid @@ -4314,10 +4314,10 @@ - + H elem should not contain WP kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 H elem contains WP kid @@ -4326,10 +4326,10 @@ - + H elem should not contain Index kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 H elem contains Index kid @@ -4338,10 +4338,10 @@ - + H elem should not contain L kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 H elem contains L kid @@ -4350,10 +4350,10 @@ - + H elem should not contain LI kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 H elem contains LI kid @@ -4362,10 +4362,10 @@ - + H elem should not contain LBody kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 H elem contains LBody kid @@ -4374,10 +4374,10 @@ - + H elem should not contain Table kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 H elem contains Table kid @@ -4386,10 +4386,10 @@ - + H elem should not contain TR kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 H elem contains TR kid @@ -4398,10 +4398,10 @@ - + H elem should not contain TH kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 H elem contains TH kid @@ -4410,10 +4410,10 @@ - + H elem should not contain TD kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 H elem contains TD kid @@ -4422,10 +4422,10 @@ - + H elem should not contain THead kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 H elem contains THead kid @@ -4434,10 +4434,10 @@ - + H elem should not contain TBody kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 H elem contains TBody kid @@ -4446,10 +4446,10 @@ - + H elem should not contain TFoot kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 H elem contains TFoot kid @@ -4458,10 +4458,10 @@ - + H elem should not contain Caption kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 H elem contains Caption kid @@ -4470,10 +4470,10 @@ - + Lbl elem should not contain Document kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Lbl elem contains Document kid @@ -4482,10 +4482,10 @@ - + Lbl elem should not contain Part kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Lbl elem contains Part kid @@ -4494,10 +4494,10 @@ - + Lbl elem should not contain Art kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Lbl elem contains Art kid @@ -4506,10 +4506,10 @@ - + Lbl elem should not contain Div kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Lbl elem contains Div kid @@ -4518,10 +4518,10 @@ - + Lbl elem should not contain Sect kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Lbl elem contains Sect kid @@ -4530,10 +4530,10 @@ - + Lbl elem should not contain TOC kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Lbl elem contains TOC kid @@ -4542,10 +4542,10 @@ - + Lbl elem should not contain TOCI kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Lbl elem contains TOCI kid @@ -4554,10 +4554,10 @@ - + Lbl elem should not contain BlockQuote kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Lbl elem contains BlockQuote kid @@ -4566,10 +4566,10 @@ - + Lbl elem should not contain P kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Lbl elem contains P kid @@ -4578,10 +4578,10 @@ - + Lbl elem should not contain Hn kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 Lbl elem contains Hn kid @@ -4590,10 +4590,10 @@ - + Lbl elem should not contain H kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Lbl elem contains H kid @@ -4602,10 +4602,10 @@ - + Lbl elem should not contain Lbl kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Lbl elem contains Lbl kid @@ -4614,10 +4614,10 @@ - + Lbl elem should not contain RB kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Lbl elem contains RB kid @@ -4626,10 +4626,10 @@ - + Lbl elem should not contain RT kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Lbl elem contains RT kid @@ -4638,10 +4638,10 @@ - + Lbl elem should not contain RP kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Lbl elem contains RP kid @@ -4650,10 +4650,10 @@ - + Lbl elem should not contain WT kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Lbl elem contains WT kid @@ -4662,10 +4662,10 @@ - + Lbl elem should not contain WP kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Lbl elem contains WP kid @@ -4674,10 +4674,10 @@ - + Lbl elem should not contain Index kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Lbl elem contains Index kid @@ -4686,10 +4686,10 @@ - + Lbl elem should not contain L kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Lbl elem contains L kid @@ -4698,10 +4698,10 @@ - + Lbl elem should not contain LI kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Lbl elem contains LI kid @@ -4710,10 +4710,10 @@ - + Lbl elem should not contain LBody kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Lbl elem contains LBody kid @@ -4722,10 +4722,10 @@ - + Lbl elem should not contain Table kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Lbl elem contains Table kid @@ -4734,10 +4734,10 @@ - + Lbl elem should not contain TR kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Lbl elem contains TR kid @@ -4746,10 +4746,10 @@ - + Lbl elem should not contain TH kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Lbl elem contains TH kid @@ -4758,10 +4758,10 @@ - + Lbl elem should not contain TD kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Lbl elem contains TD kid @@ -4770,10 +4770,10 @@ - + Lbl elem should not contain THead kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Lbl elem contains THead kid @@ -4782,10 +4782,10 @@ - + Lbl elem should not contain TBody kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Lbl elem contains TBody kid @@ -4794,10 +4794,10 @@ - + Lbl elem should not contain TFoot kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Lbl elem contains TFoot kid @@ -4806,10 +4806,10 @@ - + Lbl elem should not contain Caption kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Lbl elem contains Caption kid @@ -4818,10 +4818,10 @@ - + Span elem should not contain Document kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Span elem contains Document kid @@ -4830,10 +4830,10 @@ - + Span elem should not contain Part kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Span elem contains Part kid @@ -4842,10 +4842,10 @@ - + Span elem should not contain Art kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Span elem contains Art kid @@ -4854,10 +4854,10 @@ - + Span elem should not contain Div kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Span elem contains Div kid @@ -4866,10 +4866,10 @@ - + Span elem should not contain Sect kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Span elem contains Sect kid @@ -4878,10 +4878,10 @@ - + Span elem should not contain TOC kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Span elem contains TOC kid @@ -4890,10 +4890,10 @@ - + Span elem should not contain TOCI kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Span elem contains TOCI kid @@ -4902,10 +4902,10 @@ - + Span elem should not contain BlockQuote kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Span elem contains BlockQuote kid @@ -4914,10 +4914,10 @@ - + Span elem should not contain P kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Span elem contains P kid @@ -4926,10 +4926,10 @@ - + Span elem should not contain Hn kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 Span elem contains Hn kid @@ -4938,10 +4938,10 @@ - + Span elem should not contain H kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Span elem contains H kid @@ -4950,10 +4950,10 @@ - + Span elem should not contain RB kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Span elem contains RB kid @@ -4962,10 +4962,10 @@ - + Span elem should not contain RT kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Span elem contains RT kid @@ -4974,10 +4974,10 @@ - + Span elem should not contain RP kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Span elem contains RP kid @@ -4986,10 +4986,10 @@ - + Span elem should not contain WT kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Span elem contains WT kid @@ -4998,10 +4998,10 @@ - + Span elem should not contain WP kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Span elem contains WP kid @@ -5010,10 +5010,10 @@ - + Span elem should not contain Index kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Span elem contains Index kid @@ -5022,10 +5022,10 @@ - + Span elem should not contain L kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Span elem contains L kid @@ -5034,10 +5034,10 @@ - + Span elem should not contain LI kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Span elem contains LI kid @@ -5046,10 +5046,10 @@ - + Span elem should not contain LBody kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Span elem contains LBody kid @@ -5058,10 +5058,10 @@ - + Span elem should not contain Table kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Span elem contains Table kid @@ -5070,10 +5070,10 @@ - + Span elem should not contain TR kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Span elem contains TR kid @@ -5082,10 +5082,10 @@ - + Span elem should not contain TH kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Span elem contains TH kid @@ -5094,10 +5094,10 @@ - + Span elem should not contain TD kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Span elem contains TD kid @@ -5106,10 +5106,10 @@ - + Span elem should not contain THead kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Span elem contains THead kid @@ -5118,10 +5118,10 @@ - + Span elem should not contain TBody kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Span elem contains TBody kid @@ -5130,10 +5130,10 @@ - + Span elem should not contain TFoot kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Span elem contains TFoot kid @@ -5142,10 +5142,10 @@ - + Span elem should not contain Caption kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Span elem contains Caption kid @@ -5154,10 +5154,10 @@ - + Quote elem should not contain Document kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Quote elem contains Document kid @@ -5166,10 +5166,10 @@ - + Quote elem should not contain Part kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Quote elem contains Part kid @@ -5178,10 +5178,10 @@ - + Quote elem should not contain Art kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Quote elem contains Art kid @@ -5190,10 +5190,10 @@ - + Quote elem should not contain Div kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Quote elem contains Div kid @@ -5202,10 +5202,10 @@ - + Quote elem should not contain Sect kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Quote elem contains Sect kid @@ -5214,10 +5214,10 @@ - + Quote elem should not contain TOC kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Quote elem contains TOC kid @@ -5226,10 +5226,10 @@ - + Quote elem should not contain TOCI kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Quote elem contains TOCI kid @@ -5238,10 +5238,10 @@ - + Quote elem should not contain BlockQuote kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Quote elem contains BlockQuote kid @@ -5250,10 +5250,10 @@ - + Quote elem should not contain P kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Quote elem contains P kid @@ -5262,10 +5262,10 @@ - + Quote elem should not contain Hn kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 Quote elem contains Hn kid @@ -5274,10 +5274,10 @@ - + Quote elem should not contain H kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Quote elem contains H kid @@ -5286,10 +5286,10 @@ - + Quote elem should not contain RB kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Quote elem contains RB kid @@ -5298,10 +5298,10 @@ - + Quote elem should not contain RT kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Quote elem contains RT kid @@ -5310,10 +5310,10 @@ - + Quote elem should not contain RP kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Quote elem contains RP kid @@ -5322,10 +5322,10 @@ - + Quote elem should not contain WT kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Quote elem contains WT kid @@ -5334,10 +5334,10 @@ - + Quote elem should not contain WP kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Quote elem contains WP kid @@ -5346,10 +5346,10 @@ - + Quote elem should not contain Index kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Quote elem contains Index kid @@ -5358,10 +5358,10 @@ - + Quote elem should not contain L kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Quote elem contains L kid @@ -5370,10 +5370,10 @@ - + Quote elem should not contain LI kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Quote elem contains LI kid @@ -5382,10 +5382,10 @@ - + Quote elem should not contain LBody kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Quote elem contains LBody kid @@ -5394,10 +5394,10 @@ - + Quote elem should not contain Table kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Quote elem contains Table kid @@ -5406,10 +5406,10 @@ - + Quote elem should not contain TR kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Quote elem contains TR kid @@ -5418,10 +5418,10 @@ - + Quote elem should not contain TH kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Quote elem contains TH kid @@ -5430,10 +5430,10 @@ - + Quote elem should not contain TD kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Quote elem contains TD kid @@ -5442,10 +5442,10 @@ - + Quote elem should not contain THead kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Quote elem contains THead kid @@ -5454,10 +5454,10 @@ - + Quote elem should not contain TBody kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Quote elem contains TBody kid @@ -5466,10 +5466,10 @@ - + Quote elem should not contain TFoot kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Quote elem contains TFoot kid @@ -5478,10 +5478,10 @@ - + Quote elem should not contain Caption kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Quote elem contains Caption kid @@ -5490,10 +5490,10 @@ - + Link elem should not contain Document kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Link elem contains Document kid @@ -5502,10 +5502,10 @@ - + Link elem should not contain TOC kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Link elem contains TOC kid @@ -5514,10 +5514,10 @@ - + Link elem should not contain TOCI kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Link elem contains TOCI kid @@ -5526,10 +5526,10 @@ - + Link elem should not contain Link kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Link elem contains Link kid @@ -5538,10 +5538,10 @@ - + Link elem should not contain RB kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Link elem contains RB kid @@ -5550,10 +5550,10 @@ - + Link elem should not contain RT kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Link elem contains RT kid @@ -5562,10 +5562,10 @@ - + Link elem should not contain RP kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Link elem contains RP kid @@ -5574,10 +5574,10 @@ - + Link elem should not contain WT kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Link elem contains WT kid @@ -5586,10 +5586,10 @@ - + Link elem should not contain WP kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Link elem contains WP kid @@ -5598,10 +5598,10 @@ - + Link elem should not contain Index kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Link elem contains Index kid @@ -5610,10 +5610,10 @@ - + Link elem should not contain LI kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Link elem contains LI kid @@ -5622,10 +5622,10 @@ - + Link elem should not contain LBody kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Link elem contains LBody kid @@ -5634,10 +5634,10 @@ - + Link elem should not contain TR kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Link elem contains TR kid @@ -5646,10 +5646,10 @@ - + Link elem should not contain TH kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Link elem contains TH kid @@ -5658,10 +5658,10 @@ - + Link elem should not contain TD kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Link elem contains TD kid @@ -5670,10 +5670,10 @@ - + Link elem should not contain THead kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Link elem contains THead kid @@ -5682,10 +5682,10 @@ - + Link elem should not contain TBody kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Link elem contains TBody kid @@ -5694,10 +5694,10 @@ - + Link elem should not contain TFoot kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Link elem contains TFoot kid @@ -5706,10 +5706,10 @@ - + Reference elem should not contain Document kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Reference elem contains Document kid @@ -5718,10 +5718,10 @@ - + Reference elem should not contain Part kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Reference elem contains Part kid @@ -5730,10 +5730,10 @@ - + Reference elem should not contain Art kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Reference elem contains Art kid @@ -5742,10 +5742,10 @@ - + Reference elem should not contain Div kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Reference elem contains Div kid @@ -5754,10 +5754,10 @@ - + Reference elem should not contain Sect kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Reference elem contains Sect kid @@ -5766,10 +5766,10 @@ - + Reference elem should not contain TOC kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Reference elem contains TOC kid @@ -5778,10 +5778,10 @@ - + Reference elem should not contain TOCI kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Reference elem contains TOCI kid @@ -5790,10 +5790,10 @@ - + Reference elem should not contain BlockQuote kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Reference elem contains BlockQuote kid @@ -5802,10 +5802,10 @@ - + Reference elem should not contain P kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Reference elem contains P kid @@ -5814,10 +5814,10 @@ - + Reference elem should not contain Code kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Reference elem contains Code kid @@ -5826,10 +5826,10 @@ - + Reference elem should not contain Hn kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 Reference elem contains Hn kid @@ -5838,10 +5838,10 @@ - + Reference elem should not contain H kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Reference elem contains H kid @@ -5850,10 +5850,10 @@ - + Reference elem should not contain Quote kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Reference elem contains Quote kid @@ -5862,10 +5862,10 @@ - + Reference elem should not contain Reference kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Reference elem contains Reference kid @@ -5874,10 +5874,10 @@ - + Reference elem should not contain Form kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Reference elem contains Form kid @@ -5886,10 +5886,10 @@ - + Reference elem should not contain Ruby kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Reference elem contains Ruby kid @@ -5898,10 +5898,10 @@ - + Reference elem should not contain RB kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Reference elem contains RB kid @@ -5910,10 +5910,10 @@ - + Reference elem should not contain RT kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Reference elem contains RT kid @@ -5922,10 +5922,10 @@ - + Reference elem should not contain RP kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Reference elem contains RP kid @@ -5934,10 +5934,10 @@ - + Reference elem should not contain Warichu kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Reference elem contains Warichu kid @@ -5946,10 +5946,10 @@ - + Reference elem should not contain WT kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Reference elem contains WT kid @@ -5958,10 +5958,10 @@ - + Reference elem should not contain WP kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Reference elem contains WP kid @@ -5970,10 +5970,10 @@ - + Reference elem should not contain Index kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Reference elem contains Index kid @@ -5982,10 +5982,10 @@ - + Reference elem should not contain L kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Reference elem contains L kid @@ -5994,10 +5994,10 @@ - + Reference elem should not contain LI kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Reference elem contains LI kid @@ -6006,10 +6006,10 @@ - + Reference elem should not contain LBody kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Reference elem contains LBody kid @@ -6018,10 +6018,10 @@ - + Reference elem should not contain Table kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Reference elem contains Table kid @@ -6030,10 +6030,10 @@ - + Reference elem should not contain TR kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Reference elem contains TR kid @@ -6042,10 +6042,10 @@ - + Reference elem should not contain TH kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Reference elem contains TH kid @@ -6054,10 +6054,10 @@ - + Reference elem should not contain TD kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Reference elem contains TD kid @@ -6066,10 +6066,10 @@ - + Reference elem should not contain THead kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Reference elem contains THead kid @@ -6078,10 +6078,10 @@ - + Reference elem should not contain TBody kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Reference elem contains TBody kid @@ -6090,10 +6090,10 @@ - + Reference elem should not contain TFoot kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Reference elem contains TFoot kid @@ -6102,10 +6102,10 @@ - + Reference elem should not contain Caption kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Reference elem contains Caption kid @@ -6114,10 +6114,10 @@ - + Reference elem should not contain Formula kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 Reference elem contains Formula kid @@ -6126,10 +6126,10 @@ - + Annot elem should not contain Document kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Annot elem contains Document kid @@ -6138,10 +6138,10 @@ - + Annot elem should not contain TOC kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Annot elem contains TOC kid @@ -6150,10 +6150,10 @@ - + Annot elem should not contain TOCI kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Annot elem contains TOCI kid @@ -6162,10 +6162,10 @@ - + Annot elem should not contain Private kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0 Annot elem contains Private kid @@ -6174,10 +6174,10 @@ - + Annot elem should not contain RB kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Annot elem contains RB kid @@ -6186,10 +6186,10 @@ - + Annot elem should not contain RT kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Annot elem contains RT kid @@ -6198,10 +6198,10 @@ - + Annot elem should not contain RP kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Annot elem contains RP kid @@ -6210,10 +6210,10 @@ - + Annot elem should not contain WT kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Annot elem contains WT kid @@ -6222,10 +6222,10 @@ - + Annot elem should not contain WP kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Annot elem contains WP kid @@ -6234,10 +6234,10 @@ - + Annot elem should not contain Index kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Annot elem contains Index kid @@ -6246,10 +6246,10 @@ - + Annot elem should not contain LI kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Annot elem contains LI kid @@ -6258,10 +6258,10 @@ - + Annot elem should not contain LBody kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Annot elem contains LBody kid @@ -6270,10 +6270,10 @@ - + Annot elem should not contain TR kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Annot elem contains TR kid @@ -6282,10 +6282,10 @@ - + Annot elem should not contain TH kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Annot elem contains TH kid @@ -6294,10 +6294,10 @@ - + Annot elem should not contain TD kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Annot elem contains TD kid @@ -6306,10 +6306,10 @@ - + Annot elem should not contain THead kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Annot elem contains THead kid @@ -6318,10 +6318,10 @@ - + Annot elem should not contain TBody kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Annot elem contains TBody kid @@ -6330,10 +6330,10 @@ - + Annot elem should not contain TFoot kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Annot elem contains TFoot kid @@ -6342,10 +6342,10 @@ - + Form elem should not contain Document kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Form elem contains Document kid @@ -6354,10 +6354,10 @@ - + Form elem should not contain Art kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Form elem contains Art kid @@ -6366,10 +6366,10 @@ - + Form elem should not contain Sect kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Form elem contains Sect kid @@ -6378,10 +6378,10 @@ - + Form elem should not contain TOC kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Form elem contains TOC kid @@ -6390,10 +6390,10 @@ - + Form elem should not contain TOCI kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Form elem contains TOCI kid @@ -6402,10 +6402,10 @@ - + Form elem should not contain BlockQuote kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Form elem contains BlockQuote kid @@ -6414,10 +6414,10 @@ - + Form elem should not contain P kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Form elem contains P kid @@ -6426,10 +6426,10 @@ - + Form elem should not contain Hn kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 Form elem contains Hn kid @@ -6438,10 +6438,10 @@ - + Form elem should not contain H kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Form elem contains H kid @@ -6450,10 +6450,10 @@ - + Form elem should not contain Span kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Form elem contains Span kid @@ -6462,10 +6462,10 @@ - + Form elem should not contain Quote kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Form elem contains Quote kid @@ -6474,10 +6474,10 @@ - + Form elem should not contain Link kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Form elem contains Link kid @@ -6486,10 +6486,10 @@ - + Form elem should not contain Annot kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 Form elem contains Annot kid @@ -6498,10 +6498,10 @@ - + Form elem should not contain Form kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Form elem contains Form kid @@ -6510,10 +6510,10 @@ - + Form elem should not contain Ruby kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Form elem contains Ruby kid @@ -6522,10 +6522,10 @@ - + Form elem should not contain RB kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Form elem contains RB kid @@ -6534,10 +6534,10 @@ - + Form elem should not contain RT kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Form elem contains RT kid @@ -6546,10 +6546,10 @@ - + Form elem should not contain RP kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Form elem contains RP kid @@ -6558,10 +6558,10 @@ - + Form elem should not contain Warichu kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Form elem contains Warichu kid @@ -6570,10 +6570,10 @@ - + Form elem should not contain WT kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Form elem contains WT kid @@ -6582,10 +6582,10 @@ - + Form elem should not contain WP kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Form elem contains WP kid @@ -6594,10 +6594,10 @@ - + Form elem should not contain Index kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Form elem contains Index kid @@ -6606,10 +6606,10 @@ - + Form elem should not contain LI kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Form elem contains LI kid @@ -6618,10 +6618,10 @@ - + Form elem should not contain LBody kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Form elem contains LBody kid @@ -6630,10 +6630,10 @@ - + Form elem should not contain TR kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Form elem contains TR kid @@ -6642,10 +6642,10 @@ - + Form elem should not contain TH kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Form elem contains TH kid @@ -6654,10 +6654,10 @@ - + Form elem should not contain TD kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Form elem contains TD kid @@ -6666,10 +6666,10 @@ - + Form elem should not contain THead kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Form elem contains THead kid @@ -6678,10 +6678,10 @@ - + Form elem should not contain TBody kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Form elem contains TBody kid @@ -6690,10 +6690,10 @@ - + Form elem should not contain TFoot kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Form elem contains TFoot kid @@ -6702,10 +6702,10 @@ - + Form elem should contain zero or one Caption kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Form contains more than one Caption kid @@ -6714,10 +6714,10 @@ - + Ruby elem should not contain Document kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Ruby elem contains Document kid @@ -6726,10 +6726,10 @@ - + Ruby elem should not contain Part kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Ruby elem contains Part kid @@ -6738,10 +6738,10 @@ - + Ruby elem should not contain Art kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Ruby elem contains Art kid @@ -6750,10 +6750,10 @@ - + Ruby elem should not contain Div kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Ruby elem contains Div kid @@ -6762,10 +6762,10 @@ - + Ruby elem should not contain Sect kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Ruby elem contains Sect kid @@ -6774,10 +6774,10 @@ - + Ruby elem should not contain TOC kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Ruby elem contains TOC kid @@ -6786,10 +6786,10 @@ - + Ruby elem should not contain TOCI kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Ruby elem contains TOCI kid @@ -6798,10 +6798,10 @@ - + Ruby elem should not contain BlockQuote kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Ruby elem contains BlockQuote kid @@ -6810,10 +6810,10 @@ - + Ruby elem should not contain P kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Ruby elem contains P kid @@ -6822,10 +6822,10 @@ - + Ruby elem should not contain Note kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 Ruby elem contains Note kid @@ -6834,10 +6834,10 @@ - + Ruby elem should not contain Code kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Ruby elem contains Code kid @@ -6846,10 +6846,10 @@ - + Ruby elem should not contain Hn kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 Ruby elem contains Hn kid @@ -6858,10 +6858,10 @@ - + Ruby elem should not contain H kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Ruby elem contains H kid @@ -6870,10 +6870,10 @@ - + Ruby elem should not contain Lbl kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Ruby elem contains Lbl kid @@ -6882,10 +6882,10 @@ - + Ruby elem should not contain Span kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Ruby elem contains Span kid @@ -6894,10 +6894,10 @@ - + Ruby elem should not contain Quote kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Ruby elem contains Quote kid @@ -6906,10 +6906,10 @@ - + Ruby elem should not contain Link kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Ruby elem contains Link kid @@ -6918,10 +6918,10 @@ - + Ruby elem should not contain Reference kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Ruby elem contains Reference kid @@ -6930,10 +6930,10 @@ - + Ruby elem should not contain Annot kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 Ruby elem contains Annot kid @@ -6942,10 +6942,10 @@ - + Ruby elem should not contain Form kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Ruby elem contains Form kid @@ -6954,10 +6954,10 @@ - + Ruby elem should not contain Ruby kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Ruby elem contains Ruby kid @@ -6966,10 +6966,10 @@ - + Ruby elem should not contain Warichu kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Ruby elem contains Warichu kid @@ -6978,10 +6978,10 @@ - + Ruby elem should not contain WT kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Ruby elem contains WT kid @@ -6990,10 +6990,10 @@ - + Ruby elem should not contain WP kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Ruby elem contains WP kid @@ -7002,10 +7002,10 @@ - + Ruby elem should not contain Index kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Ruby elem contains Index kid @@ -7014,10 +7014,10 @@ - + Ruby elem should not contain L kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Ruby elem contains L kid @@ -7026,10 +7026,10 @@ - + Ruby elem should not contain LI kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Ruby elem contains LI kid @@ -7038,10 +7038,10 @@ - + Ruby elem should not contain LBody kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Ruby elem contains LBody kid @@ -7050,10 +7050,10 @@ - + Ruby elem should not contain BibEntry kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Ruby elem contains BibEntry kid @@ -7062,10 +7062,10 @@ - + Ruby elem should not contain Table kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Ruby elem contains Table kid @@ -7074,10 +7074,10 @@ - + Ruby elem should not contain TR kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Ruby elem contains TR kid @@ -7086,10 +7086,10 @@ - + Ruby elem should not contain TH kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Ruby elem contains TH kid @@ -7098,10 +7098,10 @@ - + Ruby elem should not contain TD kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Ruby elem contains TD kid @@ -7110,10 +7110,10 @@ - + Ruby elem should not contain THead kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Ruby elem contains THead kid @@ -7122,10 +7122,10 @@ - + Ruby elem should not contain TBody kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Ruby elem contains TBody kid @@ -7134,10 +7134,10 @@ - + Ruby elem should not contain TFoot kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Ruby elem contains TFoot kid @@ -7146,10 +7146,10 @@ - + Ruby elem should not contain Caption kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Ruby elem contains Caption kid @@ -7158,10 +7158,10 @@ - + Ruby elem should not contain Figure kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 Ruby elem contains Figure kid @@ -7170,10 +7170,10 @@ - + Ruby elem should not contain Formula kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 Ruby elem contains Formula kid @@ -7182,10 +7182,10 @@ - + RB elem should not contain Document kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 RB elem contains Document kid @@ -7194,10 +7194,10 @@ - + RB elem should not contain Part kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 RB elem contains Part kid @@ -7206,10 +7206,10 @@ - + RB elem should not contain Art kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 RB elem contains Art kid @@ -7218,10 +7218,10 @@ - + RB elem should not contain Div kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 RB elem contains Div kid @@ -7230,10 +7230,10 @@ - + RB elem should not contain Sect kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 RB elem contains Sect kid @@ -7242,10 +7242,10 @@ - + RB elem should not contain TOC kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 RB elem contains TOC kid @@ -7254,10 +7254,10 @@ - + RB elem should not contain TOCI kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 RB elem contains TOCI kid @@ -7266,10 +7266,10 @@ - + RB elem should not contain BlockQuote kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 RB elem contains BlockQuote kid @@ -7278,10 +7278,10 @@ - + RB elem should not contain P kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 RB elem contains P kid @@ -7290,10 +7290,10 @@ - + RB elem should not contain Note kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 RB elem contains Note kid @@ -7302,10 +7302,10 @@ - + RB elem should not contain Code kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 RB elem contains Code kid @@ -7314,10 +7314,10 @@ - + RB elem should not contain Hn kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 RB elem contains Hn kid @@ -7326,10 +7326,10 @@ - + RB elem should not contain H kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 RB elem contains H kid @@ -7338,10 +7338,10 @@ - + RB elem should not contain Lbl kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 RB elem contains Lbl kid @@ -7350,10 +7350,10 @@ - + RB elem should not contain Ruby kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 RB elem contains Ruby kid @@ -7362,10 +7362,10 @@ - + RB elem should not contain RB kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 RB elem contains RB kid @@ -7374,10 +7374,10 @@ - + RB elem should not contain RT kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 RB elem contains RT kid @@ -7386,10 +7386,10 @@ - + RB elem should not contain RP kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 RB elem contains RP kid @@ -7398,10 +7398,10 @@ - + RB elem should not contain Warichu kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 RB elem contains Warichu kid @@ -7410,10 +7410,10 @@ - + RB elem should not contain WT kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 RB elem contains WT kid @@ -7422,10 +7422,10 @@ - + RB elem should not contain WP kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 RB elem contains WP kid @@ -7434,10 +7434,10 @@ - + RB elem should not contain Index kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 RB elem contains Index kid @@ -7446,10 +7446,10 @@ - + RB elem should not contain L kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 RB elem contains L kid @@ -7458,10 +7458,10 @@ - + RB elem should not contain LI kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 RB elem contains LI kid @@ -7470,10 +7470,10 @@ - + RB elem should not contain LBody kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 RB elem contains LBody kid @@ -7482,10 +7482,10 @@ - + RB elem should not contain BibEntry kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 RB elem contains BibEntry kid @@ -7494,10 +7494,10 @@ - + RB elem should not contain Table kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 RB elem contains Table kid @@ -7506,10 +7506,10 @@ - + RB elem should not contain TR kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 RB elem contains TR kid @@ -7518,10 +7518,10 @@ - + RB elem should not contain TH kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 RB elem contains TH kid @@ -7530,10 +7530,10 @@ - + RB elem should not contain TD kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 RB elem contains TD kid @@ -7542,10 +7542,10 @@ - + RB elem should not contain THead kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 RB elem contains THead kid @@ -7554,10 +7554,10 @@ - + RB elem should not contain TBody kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 RB elem contains TBody kid @@ -7566,10 +7566,10 @@ - + RB elem should not contain TFoot kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 RB elem contains TFoot kid @@ -7578,10 +7578,10 @@ - + RB elem should not contain Caption kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 RB elem contains Caption kid @@ -7590,10 +7590,10 @@ - + RB elem should not contain Figure kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 RB elem contains Figure kid @@ -7602,10 +7602,10 @@ - + RB elem should not contain Formula kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 RB elem contains Formula kid @@ -7614,10 +7614,10 @@ - + RT elem should not contain Document kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 RT elem contains Document kid @@ -7626,10 +7626,10 @@ - + RT elem should not contain Part kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 RT elem contains Part kid @@ -7638,10 +7638,10 @@ - + RT elem should not contain Art kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 RT elem contains Art kid @@ -7650,10 +7650,10 @@ - + RT elem should not contain Div kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 RT elem contains Div kid @@ -7662,10 +7662,10 @@ - + RT elem should not contain Sect kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 RT elem contains Sect kid @@ -7674,10 +7674,10 @@ - + RT elem should not contain TOC kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 RT elem contains TOC kid @@ -7686,10 +7686,10 @@ - + RT elem should not contain TOCI kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 RT elem contains TOCI kid @@ -7698,10 +7698,10 @@ - + RT elem should not contain BlockQuote kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 RT elem contains BlockQuote kid @@ -7710,10 +7710,10 @@ - + RT elem should not contain P kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 RT elem contains P kid @@ -7722,10 +7722,10 @@ - + RT elem should not contain Note kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 RT elem contains Note kid @@ -7734,10 +7734,10 @@ - + RT elem should not contain Code kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 RT elem contains Code kid @@ -7746,10 +7746,10 @@ - + RT elem should not contain Hn kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 RT elem contains Hn kid @@ -7758,10 +7758,10 @@ - + RT elem should not contain H kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 RT elem contains H kid @@ -7770,10 +7770,10 @@ - + RT elem should not contain Lbl kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 RT elem contains Lbl kid @@ -7782,10 +7782,10 @@ - + RT elem should not contain Ruby kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 RT elem contains Ruby kid @@ -7794,10 +7794,10 @@ - + RT elem should not contain RB kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 RT elem contains RB kid @@ -7806,10 +7806,10 @@ - + RT elem should not contain RT kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 RT elem contains RT kid @@ -7818,10 +7818,10 @@ - + RT elem should not contain RP kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 RT elem contains RP kid @@ -7830,10 +7830,10 @@ - + RT elem should not contain Warichu kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 RT elem contains Warichu kid @@ -7842,10 +7842,10 @@ - + RT elem should not contain WT kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 RT elem contains WT kid @@ -7854,10 +7854,10 @@ - + RT elem should not contain WP kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 RT elem contains WP kid @@ -7866,10 +7866,10 @@ - + RT elem should not contain Index kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 RT elem contains Index kid @@ -7878,10 +7878,10 @@ - + RT elem should not contain L kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 RT elem contains L kid @@ -7890,10 +7890,10 @@ - + RT elem should not contain LI kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 RT elem contains LI kid @@ -7902,10 +7902,10 @@ - + RT elem should not contain LBody kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 RT elem contains LBody kid @@ -7914,10 +7914,10 @@ - + RT elem should not contain BibEntry kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 RT elem contains BibEntry kid @@ -7926,10 +7926,10 @@ - + RT elem should not contain Table kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 RT elem contains Table kid @@ -7938,10 +7938,10 @@ - + RT elem should not contain TR kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 RT elem contains TR kid @@ -7950,10 +7950,10 @@ - + RT elem should not contain TH kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 RT elem contains TH kid @@ -7962,10 +7962,10 @@ - + RT elem should not contain TD kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 RT elem contains TD kid @@ -7974,10 +7974,10 @@ - + RT elem should not contain THead kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 RT elem contains THead kid @@ -7986,10 +7986,10 @@ - + RT elem should not contain TBody kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 RT elem contains TBody kid @@ -7998,10 +7998,10 @@ - + RT elem should not contain TFoot kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 RT elem contains TFoot kid @@ -8010,10 +8010,10 @@ - + RT elem should not contain Caption kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 RT elem contains Caption kid @@ -8022,10 +8022,10 @@ - + RT elem should not contain Figure kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 RT elem contains Figure kid @@ -8034,10 +8034,10 @@ - + RT elem should not contain Formula kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 RT elem contains Formula kid @@ -8046,10 +8046,10 @@ - + RP elem should not contain Document kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 RP elem contains Document kid @@ -8058,10 +8058,10 @@ - + RP elem should not contain Part kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 RP elem contains Part kid @@ -8070,10 +8070,10 @@ - + RP elem should not contain Art kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 RP elem contains Art kid @@ -8082,10 +8082,10 @@ - + RP elem should not contain Div kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 RP elem contains Div kid @@ -8094,10 +8094,10 @@ - + RP elem should not contain Sect kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 RP elem contains Sect kid @@ -8106,10 +8106,10 @@ - + RP elem should not contain TOC kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 RP elem contains TOC kid @@ -8118,10 +8118,10 @@ - + RP elem should not contain TOCI kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 RP elem contains TOCI kid @@ -8130,10 +8130,10 @@ - + RP elem should not contain BlockQuote kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 RP elem contains BlockQuote kid @@ -8142,10 +8142,10 @@ - + RP elem should not contain P kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 RP elem contains P kid @@ -8154,10 +8154,10 @@ - + RP elem should not contain Note kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 RP elem contains Note kid @@ -8166,10 +8166,10 @@ - + RP elem should not contain Code kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 RP elem contains Code kid @@ -8178,10 +8178,10 @@ - + RP elem should not contain Hn kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 RP elem contains Hn kid @@ -8190,10 +8190,10 @@ - + RP elem should not contain H kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 RP elem contains H kid @@ -8202,10 +8202,10 @@ - + RP elem should not contain Lbl kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 RP elem contains Lbl kid @@ -8214,10 +8214,10 @@ - + RP elem should not contain Ruby kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 RP elem contains Ruby kid @@ -8226,10 +8226,10 @@ - + RP elem should not contain RB kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 RP elem contains RB kid @@ -8238,10 +8238,10 @@ - + RP elem should not contain RT kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 RP elem contains RT kid @@ -8250,10 +8250,10 @@ - + RP elem should not contain RP kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 RP elem contains RP kid @@ -8262,10 +8262,10 @@ - + RP elem should not contain Warichu kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 RP elem contains Warichu kid @@ -8274,10 +8274,10 @@ - + RP elem should not contain WT kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 RP elem contains WT kid @@ -8286,10 +8286,10 @@ - + RP elem should not contain WP kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 RP elem contains WP kid @@ -8298,10 +8298,10 @@ - + RP elem should not contain Index kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 RP elem contains Index kid @@ -8310,10 +8310,10 @@ - + RP elem should not contain L kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 RP elem contains L kid @@ -8322,10 +8322,10 @@ - + RP elem should not contain LI kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 RP elem contains LI kid @@ -8334,10 +8334,10 @@ - + RP elem should not contain LBody kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 RP elem contains LBody kid @@ -8346,10 +8346,10 @@ - + RP elem should not contain BibEntry kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 RP elem contains BibEntry kid @@ -8358,10 +8358,10 @@ - + RP elem should not contain Table kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 RP elem contains Table kid @@ -8370,10 +8370,10 @@ - + RP elem should not contain TR kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 RP elem contains TR kid @@ -8382,10 +8382,10 @@ - + RP elem should not contain TH kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 RP elem contains TH kid @@ -8394,10 +8394,10 @@ - + RP elem should not contain TD kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 RP elem contains TD kid @@ -8406,10 +8406,10 @@ - + RP elem should not contain THead kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 RP elem contains THead kid @@ -8418,10 +8418,10 @@ - + RP elem should not contain TBody kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 RP elem contains TBody kid @@ -8430,10 +8430,10 @@ - + RP elem should not contain TFoot kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 RP elem contains TFoot kid @@ -8442,10 +8442,10 @@ - + RP elem should not contain Caption kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 RP elem contains Caption kid @@ -8454,10 +8454,10 @@ - + RP elem should not contain Figure kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 RP elem contains Figure kid @@ -8466,10 +8466,10 @@ - + RP elem should not contain Formula kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 RP elem contains Formula kid @@ -8478,10 +8478,10 @@ - + Warichu elem should not contain Document kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Warichu elem contains Document kid @@ -8490,10 +8490,10 @@ - + Warichu elem should not contain Part kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Warichu elem contains Part kid @@ -8502,10 +8502,10 @@ - + Warichu elem should not contain Art kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Warichu elem contains Art kid @@ -8514,10 +8514,10 @@ - + Warichu elem should not contain Div kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Warichu elem contains Div kid @@ -8526,10 +8526,10 @@ - + Warichu elem should not contain Sect kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Warichu elem contains Sect kid @@ -8538,10 +8538,10 @@ - + Warichu elem should not contain TOC kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Warichu elem contains TOC kid @@ -8550,10 +8550,10 @@ - + Warichu elem should not contain TOCI kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Warichu elem contains TOCI kid @@ -8562,10 +8562,10 @@ - + Warichu elem should not contain BlockQuote kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Warichu elem contains BlockQuote kid @@ -8574,10 +8574,10 @@ - + Warichu elem should not contain P kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Warichu elem contains P kid @@ -8586,10 +8586,10 @@ - + Warichu elem should not contain Note kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 Warichu elem contains Note kid @@ -8598,10 +8598,10 @@ - + Warichu elem should not contain Code kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Warichu elem contains Code kid @@ -8610,10 +8610,10 @@ - + Warichu elem should not contain Hn kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 Warichu elem contains Hn kid @@ -8622,10 +8622,10 @@ - + Warichu elem should not contain H kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Warichu elem contains H kid @@ -8634,10 +8634,10 @@ - + Warichu elem should not contain Lbl kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Warichu elem contains Lbl kid @@ -8646,10 +8646,10 @@ - + Warichu elem should not contain Span kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Warichu elem contains Span kid @@ -8658,10 +8658,10 @@ - + Warichu elem should not contain Quote kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Warichu elem contains Quote kid @@ -8670,10 +8670,10 @@ - + Warichu elem should not contain Link kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Warichu elem contains Link kid @@ -8682,10 +8682,10 @@ - + Warichu elem should not contain Reference kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Warichu elem contains Reference kid @@ -8694,10 +8694,10 @@ - + Warichu elem should not contain Annot kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 Warichu elem contains Annot kid @@ -8706,10 +8706,10 @@ - + Warichu elem should not contain Form kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Warichu elem contains Form kid @@ -8718,10 +8718,10 @@ - + Warichu elem should not contain Ruby kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Warichu elem contains Ruby kid @@ -8730,10 +8730,10 @@ - + Warichu elem should not contain RB kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Warichu elem contains RB kid @@ -8742,10 +8742,10 @@ - + Warichu elem should not contain RT kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Warichu elem contains RT kid @@ -8754,10 +8754,10 @@ - + Warichu elem should not contain RP kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Warichu elem contains RP kid @@ -8766,10 +8766,10 @@ - + Warichu elem should not contain Warichu kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Warichu elem contains Warichu kid @@ -8778,10 +8778,10 @@ - + Warichu elem should not contain Index kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Warichu elem contains Index kid @@ -8790,10 +8790,10 @@ - + Warichu elem should not contain L kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Warichu elem contains L kid @@ -8802,10 +8802,10 @@ - + Warichu elem should not contain LI kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Warichu elem contains LI kid @@ -8814,10 +8814,10 @@ - + Warichu elem should not contain LBody kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Warichu elem contains LBody kid @@ -8826,10 +8826,10 @@ - + Warichu elem should not contain BibEntry kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Warichu elem contains BibEntry kid @@ -8838,10 +8838,10 @@ - + Warichu elem should not contain Table kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Warichu elem contains Table kid @@ -8850,10 +8850,10 @@ - + Warichu elem should not contain TR kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Warichu elem contains TR kid @@ -8862,10 +8862,10 @@ - + Warichu elem should not contain TH kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Warichu elem contains TH kid @@ -8874,10 +8874,10 @@ - + Warichu elem should not contain TD kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Warichu elem contains TD kid @@ -8886,10 +8886,10 @@ - + Warichu elem should not contain THead kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Warichu elem contains THead kid @@ -8898,10 +8898,10 @@ - + Warichu elem should not contain TBody kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Warichu elem contains TBody kid @@ -8910,10 +8910,10 @@ - + Warichu elem should not contain TFoot kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Warichu elem contains TFoot kid @@ -8922,10 +8922,10 @@ - + Warichu elem should not contain Caption kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Warichu elem contains Caption kid @@ -8934,10 +8934,10 @@ - + Warichu elem should not contain Figure kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 Warichu elem contains Figure kid @@ -8946,10 +8946,10 @@ - + Warichu elem should not contain Formula kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 Warichu elem contains Formula kid @@ -8958,10 +8958,10 @@ - + WT elem should not contain Document kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 WT elem contains Document kid @@ -8970,10 +8970,10 @@ - + WT elem should not contain Part kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 WT elem contains Part kid @@ -8982,10 +8982,10 @@ - + WT elem should not contain Art kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 WT elem contains Art kid @@ -8994,10 +8994,10 @@ - + WT elem should not contain Div kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 WT elem contains Div kid @@ -9006,10 +9006,10 @@ - + WT elem should not contain Sect kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 WT elem contains Sect kid @@ -9018,10 +9018,10 @@ - + WT elem should not contain TOC kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 WT elem contains TOC kid @@ -9030,10 +9030,10 @@ - + WT elem should not contain TOCI kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 WT elem contains TOCI kid @@ -9042,10 +9042,10 @@ - + WT elem should not contain BlockQuote kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 WT elem contains BlockQuote kid @@ -9054,10 +9054,10 @@ - + WT elem should not contain P kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 WT elem contains P kid @@ -9066,10 +9066,10 @@ - + WT elem should not contain Note kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 WT elem contains Note kid @@ -9078,10 +9078,10 @@ - + WT elem should not contain Code kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 WT elem contains Code kid @@ -9090,10 +9090,10 @@ - + WT elem should not contain Hn kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 WT elem contains Hn kid @@ -9102,10 +9102,10 @@ - + WT elem should not contain H kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 WT elem contains H kid @@ -9114,10 +9114,10 @@ - + WT elem should not contain Lbl kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 WT elem contains Lbl kid @@ -9126,10 +9126,10 @@ - + WT elem should not contain Ruby kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 WT elem contains Ruby kid @@ -9138,10 +9138,10 @@ - + WT elem should not contain RB kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 WT elem contains RB kid @@ -9150,10 +9150,10 @@ - + WT elem should not contain RT kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 WT elem contains RT kid @@ -9162,10 +9162,10 @@ - + WT elem should not contain RP kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 WT elem contains RP kid @@ -9174,10 +9174,10 @@ - + WT elem should not contain Warichu kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 WT elem contains Warichu kid @@ -9186,10 +9186,10 @@ - + WT elem should not contain WT kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 WT elem contains WT kid @@ -9198,10 +9198,10 @@ - + WT elem should not contain WP kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 WT elem contains WP kid @@ -9210,10 +9210,10 @@ - + WT elem should not contain Index kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 WT elem contains Index kid @@ -9222,10 +9222,10 @@ - + WT elem should not contain L kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 WT elem contains L kid @@ -9234,10 +9234,10 @@ - + WT elem should not contain LI kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 WT elem contains LI kid @@ -9246,10 +9246,10 @@ - + WT elem should not contain LBody kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 WT elem contains LBody kid @@ -9258,10 +9258,10 @@ - + WT elem should not contain BibEntry kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 WT elem contains BibEntry kid @@ -9270,10 +9270,10 @@ - + WT elem should not contain Table kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 WT elem contains Table kid @@ -9282,10 +9282,10 @@ - + WT elem should not contain TR kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 WT elem contains TR kid @@ -9294,10 +9294,10 @@ - + WT elem should not contain TH kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 WT elem contains TH kid @@ -9306,10 +9306,10 @@ - + WT elem should not contain TD kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 WT elem contains TD kid @@ -9318,10 +9318,10 @@ - + WT elem should not contain THead kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 WT elem contains THead kid @@ -9330,10 +9330,10 @@ - + WT elem should not contain TBody kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 WT elem contains TBody kid @@ -9342,10 +9342,10 @@ - + WT elem should not contain TFoot kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 WT elem contains TFoot kid @@ -9354,10 +9354,10 @@ - + WT elem should not contain Caption kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 WT elem contains Caption kid @@ -9366,10 +9366,10 @@ - + WT elem should not contain Figure kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 WT elem contains Figure kid @@ -9378,10 +9378,10 @@ - + WT elem should not contain Formula kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 WT elem contains Formula kid @@ -9390,10 +9390,10 @@ - + WP elem should not contain Document kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 WP elem contains Document kid @@ -9402,10 +9402,10 @@ - + WP elem should not contain Part kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 WP elem contains Part kid @@ -9414,10 +9414,10 @@ - + WP elem should not contain Art kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 WP elem contains Art kid @@ -9426,10 +9426,10 @@ - + WP elem should not contain Div kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 WP elem contains Div kid @@ -9438,10 +9438,10 @@ - + WP elem should not contain Sect kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 WP elem contains Sect kid @@ -9450,10 +9450,10 @@ - + WP elem should not contain TOC kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 WP elem contains TOC kid @@ -9462,10 +9462,10 @@ - + WP elem should not contain TOCI kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 WP elem contains TOCI kid @@ -9474,10 +9474,10 @@ - + WP elem should not contain BlockQuote kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 WP elem contains BlockQuote kid @@ -9486,10 +9486,10 @@ - + WP elem should not contain P kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 WP elem contains P kid @@ -9498,10 +9498,10 @@ - + WP elem should not contain Note kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 WP elem contains Note kid @@ -9510,10 +9510,10 @@ - + WP elem should not contain Code kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 WP elem contains Code kid @@ -9522,10 +9522,10 @@ - + WP elem should not contain Hn kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 WP elem contains Hn kid @@ -9534,10 +9534,10 @@ - + WP elem should not contain H kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 WP elem contains H kid @@ -9546,10 +9546,10 @@ - + WP elem should not contain Lbl kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 WP elem contains Lbl kid @@ -9558,10 +9558,10 @@ - + WP elem should not contain Ruby kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 WP elem contains Ruby kid @@ -9570,10 +9570,10 @@ - + WP elem should not contain RB kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 WP elem contains RB kid @@ -9582,10 +9582,10 @@ - + WP elem should not contain RT kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 WP elem contains RT kid @@ -9594,10 +9594,10 @@ - + WP elem should not contain RP kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 WP elem contains RP kid @@ -9606,10 +9606,10 @@ - + WP elem should not contain Warichu kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 WP elem contains Warichu kid @@ -9618,10 +9618,10 @@ - + WP elem should not contain WT kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 WP elem contains WT kid @@ -9630,10 +9630,10 @@ - + WP elem should not contain WP kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 WP elem contains WP kid @@ -9642,10 +9642,10 @@ - + WP elem should not contain Index kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 WP elem contains Index kid @@ -9654,10 +9654,10 @@ - + WP elem should not contain L kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 WP elem contains L kid @@ -9666,10 +9666,10 @@ - + WP elem should not contain LI kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 WP elem contains LI kid @@ -9678,10 +9678,10 @@ - + WP elem should not contain LBody kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 WP elem contains LBody kid @@ -9690,10 +9690,10 @@ - + WP elem should not contain BibEntry kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 WP elem contains BibEntry kid @@ -9702,10 +9702,10 @@ - + WP elem should not contain Table kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 WP elem contains Table kid @@ -9714,10 +9714,10 @@ - + WP elem should not contain TR kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 WP elem contains TR kid @@ -9726,10 +9726,10 @@ - + WP elem should not contain TH kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 WP elem contains TH kid @@ -9738,10 +9738,10 @@ - + WP elem should not contain TD kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 WP elem contains TD kid @@ -9750,10 +9750,10 @@ - + WP elem should not contain THead kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 WP elem contains THead kid @@ -9762,10 +9762,10 @@ - + WP elem should not contain TBody kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 WP elem contains TBody kid @@ -9774,10 +9774,10 @@ - + WP elem should not contain TFoot kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 WP elem contains TFoot kid @@ -9786,10 +9786,10 @@ - + WP elem should not contain Caption kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 WP elem contains Caption kid @@ -9798,10 +9798,10 @@ - + WP elem should not contain Figure kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 WP elem contains Figure kid @@ -9810,10 +9810,10 @@ - + WP elem should not contain Formula kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 WP elem contains Formula kid @@ -9822,10 +9822,10 @@ - + Index elem should not contain Document kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Index elem contains Document kid @@ -9834,10 +9834,10 @@ - + Index elem should not contain Art kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Index elem contains Art kid @@ -9846,10 +9846,10 @@ - + Index elem should not contain TOC kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Index elem contains TOC kid @@ -9858,10 +9858,10 @@ - + Index elem should not contain TOCI kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Index elem contains TOCI kid @@ -9870,10 +9870,10 @@ - + Index elem should not contain BlockQuote kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Index elem contains BlockQuote kid @@ -9882,10 +9882,10 @@ - + Index elem should not contain Code kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Index elem contains Code kid @@ -9894,10 +9894,10 @@ - + Index elem should not contain Lbl kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Index elem contains Lbl kid @@ -9906,10 +9906,10 @@ - + Index elem should not contain Span kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Index elem contains Span kid @@ -9918,10 +9918,10 @@ - + Index elem should not contain Quote kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Index elem contains Quote kid @@ -9930,10 +9930,10 @@ - + Index elem should not contain Link kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Index elem contains Link kid @@ -9942,10 +9942,10 @@ - + Index elem should not contain Form kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Index elem contains Form kid @@ -9954,10 +9954,10 @@ - + Index elem should not contain Ruby kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Index elem contains Ruby kid @@ -9966,10 +9966,10 @@ - + Index elem should not contain RB kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Index elem contains RB kid @@ -9978,10 +9978,10 @@ - + Index elem should not contain RT kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Index elem contains RT kid @@ -9990,10 +9990,10 @@ - + Index elem should not contain RP kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Index elem contains RP kid @@ -10002,10 +10002,10 @@ - + Index elem should not contain Warichu kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Index elem contains Warichu kid @@ -10014,10 +10014,10 @@ - + Index elem should not contain WT kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Index elem contains WT kid @@ -10026,10 +10026,10 @@ - + Index elem should not contain WP kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Index elem contains WP kid @@ -10038,10 +10038,10 @@ - + Index elem should not contain Index kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Index elem contains Index kid @@ -10050,10 +10050,10 @@ - + Index elem should not contain LI kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Index elem contains LI kid @@ -10062,10 +10062,10 @@ - + Index elem should not contain LBody kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Index elem contains LBody kid @@ -10074,10 +10074,10 @@ - + Index elem should not contain BibEntry kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Index elem contains BibEntry kid @@ -10086,10 +10086,10 @@ - + Index elem should not contain TR kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Index elem contains TR kid @@ -10098,10 +10098,10 @@ - + Index elem should not contain TH kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Index elem contains TH kid @@ -10110,10 +10110,10 @@ - + Index elem should not contain TD kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Index elem contains TD kid @@ -10122,10 +10122,10 @@ - + Index elem should not contain THead kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Index elem contains THead kid @@ -10134,10 +10134,10 @@ - + Index elem should not contain TBody kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Index elem contains TBody kid @@ -10146,10 +10146,10 @@ - + Index elem should not contain TFoot kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Index elem contains TFoot kid @@ -10158,10 +10158,10 @@ - + Index elem should not contain content item kid - (standardType != 'Index') || (hasContentItems == false) + hasContentItems == false Index elem contains content item kid @@ -10170,10 +10170,10 @@ - + L elem should not contain Document kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 L elem contains Document kid @@ -10182,10 +10182,10 @@ - + L elem should not contain Part kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 L elem contains Part kid @@ -10194,10 +10194,10 @@ - + L elem should not contain Art kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 L elem contains Art kid @@ -10206,10 +10206,10 @@ - + L elem should not contain Div kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 L elem contains Div kid @@ -10218,10 +10218,10 @@ - + L elem should not contain Sect kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 L elem contains Sect kid @@ -10230,10 +10230,10 @@ - + L elem should not contain TOC kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 L elem contains TOC kid @@ -10242,10 +10242,10 @@ - + L elem should not contain TOCI kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 L elem contains TOCI kid @@ -10254,10 +10254,10 @@ - + L elem should not contain BlockQuote kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 L elem contains BlockQuote kid @@ -10266,10 +10266,10 @@ - + L elem should not contain P kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 L elem contains P kid @@ -10278,10 +10278,10 @@ - + L elem should not contain Note kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 L elem contains Note kid @@ -10290,10 +10290,10 @@ - + L elem should not contain Code kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 L elem contains Code kid @@ -10302,10 +10302,10 @@ - + L elem should not contain Hn kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 L elem contains Hn kid @@ -10314,10 +10314,10 @@ - + L elem should not contain H kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 L elem contains H kid @@ -10326,10 +10326,10 @@ - + L elem should not contain Lbl kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 L elem contains Lbl kid @@ -10338,10 +10338,10 @@ - + L elem should not contain Span kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 L elem contains Span kid @@ -10350,10 +10350,10 @@ - + L elem should not contain Quote kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 L elem contains Quote kid @@ -10362,10 +10362,10 @@ - + L elem should not contain Link kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 L elem contains Link kid @@ -10374,10 +10374,10 @@ - + L elem should not contain Reference kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 L elem contains Reference kid @@ -10386,10 +10386,10 @@ - + L elem should not contain Annot kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 L elem contains Annot kid @@ -10398,10 +10398,10 @@ - + L elem should not contain Form kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 L elem contains Form kid @@ -10410,10 +10410,10 @@ - + L elem should not contain Ruby kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 L elem contains Ruby kid @@ -10422,10 +10422,10 @@ - + L elem should not contain RB kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 L elem contains RB kid @@ -10434,10 +10434,10 @@ - + L elem should not contain RT kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 L elem contains RT kid @@ -10446,10 +10446,10 @@ - + L elem should not contain RP kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 L elem contains RP kid @@ -10458,10 +10458,10 @@ - + L elem should not contain Warichu kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 L elem contains Warichu kid @@ -10470,10 +10470,10 @@ - + L elem should not contain WT kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 L elem contains WT kid @@ -10482,10 +10482,10 @@ - + L elem should not contain WP kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 L elem contains WP kid @@ -10494,10 +10494,10 @@ - + L elem should not contain Index kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 L elem contains Index kid @@ -10506,10 +10506,10 @@ - + L elem should not contain LBody kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 L elem contains LBody kid @@ -10518,10 +10518,10 @@ - + L elem should not contain BibEntry kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 L elem contains BibEntry kid @@ -10530,10 +10530,10 @@ - + L elem should not contain Table kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 L elem contains Table kid @@ -10542,10 +10542,10 @@ - + L elem should not contain TR kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 L elem contains TR kid @@ -10554,10 +10554,10 @@ - + L elem should not contain TH kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 L elem contains TH kid @@ -10566,10 +10566,10 @@ - + L elem should not contain TD kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 L elem contains TD kid @@ -10578,10 +10578,10 @@ - + L elem should not contain THead kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 L elem contains THead kid @@ -10590,10 +10590,10 @@ - + L elem should not contain TBody kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 L elem contains TBody kid @@ -10602,10 +10602,10 @@ - + L elem should not contain TFoot kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 L elem contains TFoot kid @@ -10614,10 +10614,10 @@ - + L elem should contain zero or one Caption kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 L contains more than one Caption kid @@ -10626,10 +10626,10 @@ - + L elem should not contain Figure kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 L elem contains Figure kid @@ -10638,10 +10638,10 @@ - + L elem should not contain Formula kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 L elem contains Formula kid @@ -10650,10 +10650,10 @@ - + L elem should not contain content item kid - (standardType != 'L') || (hasContentItems == false) + hasContentItems == false L elem contains content item kid @@ -10662,10 +10662,10 @@ - + LI elem should not contain Document kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 LI elem contains Document kid @@ -10674,10 +10674,10 @@ - + LI elem should not contain Part kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 LI elem contains Part kid @@ -10686,10 +10686,10 @@ - + LI elem should not contain Art kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 LI elem contains Art kid @@ -10698,10 +10698,10 @@ - + LI elem should not contain Sect kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 LI elem contains Sect kid @@ -10710,10 +10710,10 @@ - + LI elem should not contain TOC kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 LI elem contains TOC kid @@ -10722,10 +10722,10 @@ - + LI elem should not contain TOCI kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 LI elem contains TOCI kid @@ -10734,10 +10734,10 @@ - + LI elem should not contain BlockQuote kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 LI elem contains BlockQuote kid @@ -10746,10 +10746,10 @@ - + LI elem should not contain P kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 LI elem contains P kid @@ -10758,10 +10758,10 @@ - + LI elem should not contain Note kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 LI elem contains Note kid @@ -10770,10 +10770,10 @@ - + LI elem should not contain Code kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 LI elem contains Code kid @@ -10782,10 +10782,10 @@ - + LI elem should not contain Hn kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 LI elem contains Hn kid @@ -10794,10 +10794,10 @@ - + LI elem should not contain H kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 LI elem contains H kid @@ -10806,10 +10806,10 @@ - + LI elem should not contain Span kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 LI elem contains Span kid @@ -10818,10 +10818,10 @@ - + LI elem should not contain Quote kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 LI elem contains Quote kid @@ -10830,10 +10830,10 @@ - + LI elem should not contain Link kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 LI elem contains Link kid @@ -10842,10 +10842,10 @@ - + LI elem should not contain Reference kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 LI elem contains Reference kid @@ -10854,10 +10854,10 @@ - + LI elem should not contain Annot kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 LI elem contains Annot kid @@ -10866,10 +10866,10 @@ - + LI elem should not contain Form kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 LI elem contains Form kid @@ -10878,10 +10878,10 @@ - + LI elem should not contain Ruby kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 LI elem contains Ruby kid @@ -10890,10 +10890,10 @@ - + LI elem should not contain RB kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 LI elem contains RB kid @@ -10902,10 +10902,10 @@ - + LI elem should not contain RT kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 LI elem contains RT kid @@ -10914,10 +10914,10 @@ - + LI elem should not contain RP kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 LI elem contains RP kid @@ -10926,10 +10926,10 @@ - + LI elem should not contain Warichu kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 LI elem contains Warichu kid @@ -10938,10 +10938,10 @@ - + LI elem should not contain WT kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 LI elem contains WT kid @@ -10950,10 +10950,10 @@ - + LI elem should not contain WP kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 LI elem contains WP kid @@ -10962,10 +10962,10 @@ - + LI elem should not contain Index kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 LI elem contains Index kid @@ -10974,10 +10974,10 @@ - + LI elem should not contain L kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 LI elem contains L kid @@ -10986,10 +10986,10 @@ - + LI elem should not contain LI kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 LI elem contains LI kid @@ -10998,10 +10998,10 @@ - + LI elem should not contain BibEntry kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 LI elem contains BibEntry kid @@ -11010,10 +11010,10 @@ - + LI elem should not contain Table kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 LI elem contains Table kid @@ -11022,10 +11022,10 @@ - + LI elem should not contain TR kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 LI elem contains TR kid @@ -11034,10 +11034,10 @@ - + LI elem should not contain TH kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 LI elem contains TH kid @@ -11046,10 +11046,10 @@ - + LI elem should not contain TD kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 LI elem contains TD kid @@ -11058,10 +11058,10 @@ - + LI elem should not contain THead kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 LI elem contains THead kid @@ -11070,10 +11070,10 @@ - + LI elem should not contain TBody kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 LI elem contains TBody kid @@ -11082,10 +11082,10 @@ - + LI elem should not contain TFoot kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 LI elem contains TFoot kid @@ -11094,10 +11094,10 @@ - + LI elem should not contain Caption kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 LI elem contains Caption kid @@ -11106,10 +11106,10 @@ - + LI elem should not contain Figure kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 LI elem contains Figure kid @@ -11118,10 +11118,10 @@ - + LI elem should not contain Formula kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 LI elem contains Formula kid @@ -11130,10 +11130,10 @@ - + LBody elem should not contain Document kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 LBody elem contains Document kid @@ -11142,10 +11142,10 @@ - + LBody elem should not contain TOC kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 LBody elem contains TOC kid @@ -11154,10 +11154,10 @@ - + LBody elem should not contain TOCI kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 LBody elem contains TOCI kid @@ -11166,10 +11166,10 @@ - + LBody elem should contain zero or one H kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 LBody contains more than one H kid @@ -11178,10 +11178,10 @@ - + LBody elem should not contain Lbl kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 LBody elem contains Lbl kid @@ -11190,10 +11190,10 @@ - + LBody elem should not contain RB kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 LBody elem contains RB kid @@ -11202,10 +11202,10 @@ - + LBody elem should not contain RT kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 LBody elem contains RT kid @@ -11214,10 +11214,10 @@ - + LBody elem should not contain RP kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 LBody elem contains RP kid @@ -11226,10 +11226,10 @@ - + LBody elem should not contain WT kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 LBody elem contains WT kid @@ -11238,10 +11238,10 @@ - + LBody elem should not contain WP kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 LBody elem contains WP kid @@ -11250,10 +11250,10 @@ - + LBody elem should not contain LI kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 LBody elem contains LI kid @@ -11262,10 +11262,10 @@ - + LBody elem should not contain LBody kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 LBody elem contains LBody kid @@ -11274,10 +11274,10 @@ - + LBody elem should not contain TR kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 LBody elem contains TR kid @@ -11286,10 +11286,10 @@ - + LBody elem should not contain TH kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 LBody elem contains TH kid @@ -11298,10 +11298,10 @@ - + LBody elem should not contain TD kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 LBody elem contains TD kid @@ -11310,10 +11310,10 @@ - + LBody elem should not contain THead kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 LBody elem contains THead kid @@ -11322,10 +11322,10 @@ - + LBody elem should not contain TBody kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 LBody elem contains TBody kid @@ -11334,10 +11334,10 @@ - + LBody elem should not contain TFoot kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 LBody elem contains TFoot kid @@ -11346,10 +11346,10 @@ - + LBody elem should contain zero or one Caption kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 LBody contains more than one Caption kid @@ -11358,10 +11358,10 @@ - + BibEntry elem should not contain Document kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 BibEntry elem contains Document kid @@ -11370,10 +11370,10 @@ - + BibEntry elem should not contain Art kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 BibEntry elem contains Art kid @@ -11382,10 +11382,10 @@ - + BibEntry elem should not contain Sect kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 BibEntry elem contains Sect kid @@ -11394,10 +11394,10 @@ - + BibEntry elem should not contain TOC kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 BibEntry elem contains TOC kid @@ -11406,10 +11406,10 @@ - + BibEntry elem should not contain TOCI kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 BibEntry elem contains TOCI kid @@ -11418,10 +11418,10 @@ - + BibEntry elem should not contain BlockQuote kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 BibEntry elem contains BlockQuote kid @@ -11430,10 +11430,10 @@ - + BibEntry elem should not contain Code kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 BibEntry elem contains Code kid @@ -11442,10 +11442,10 @@ - + BibEntry elem should not contain Hn kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 BibEntry elem contains Hn kid @@ -11454,10 +11454,10 @@ - + BibEntry elem should not contain H kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 BibEntry elem contains H kid @@ -11466,10 +11466,10 @@ - + BibEntry elem should not contain Quote kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 BibEntry elem contains Quote kid @@ -11478,10 +11478,10 @@ - + BibEntry elem should not contain Form kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 BibEntry elem contains Form kid @@ -11490,10 +11490,10 @@ - + BibEntry elem should not contain Ruby kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 BibEntry elem contains Ruby kid @@ -11502,10 +11502,10 @@ - + BibEntry elem should not contain RB kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 BibEntry elem contains RB kid @@ -11514,10 +11514,10 @@ - + BibEntry elem should not contain RT kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 BibEntry elem contains RT kid @@ -11526,10 +11526,10 @@ - + BibEntry elem should not contain RP kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 BibEntry elem contains RP kid @@ -11538,10 +11538,10 @@ - + BibEntry elem should not contain Warichu kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 BibEntry elem contains Warichu kid @@ -11550,10 +11550,10 @@ - + BibEntry elem should not contain WT kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 BibEntry elem contains WT kid @@ -11562,10 +11562,10 @@ - + BibEntry elem should not contain WP kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 BibEntry elem contains WP kid @@ -11574,10 +11574,10 @@ - + BibEntry elem should not contain Index kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 BibEntry elem contains Index kid @@ -11586,10 +11586,10 @@ - + BibEntry elem should not contain L kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 BibEntry elem contains L kid @@ -11598,10 +11598,10 @@ - + BibEntry elem should not contain LI kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 BibEntry elem contains LI kid @@ -11610,10 +11610,10 @@ - + BibEntry elem should not contain LBody kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 BibEntry elem contains LBody kid @@ -11622,10 +11622,10 @@ - + BibEntry elem should not contain BibEntry kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 BibEntry elem contains BibEntry kid @@ -11634,10 +11634,10 @@ - + BibEntry elem should not contain Table kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 BibEntry elem contains Table kid @@ -11646,10 +11646,10 @@ - + BibEntry elem should not contain TR kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 BibEntry elem contains TR kid @@ -11658,10 +11658,10 @@ - + BibEntry elem should not contain TH kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 BibEntry elem contains TH kid @@ -11670,10 +11670,10 @@ - + BibEntry elem should not contain TD kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 BibEntry elem contains TD kid @@ -11682,10 +11682,10 @@ - + BibEntry elem should not contain THead kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 BibEntry elem contains THead kid @@ -11694,10 +11694,10 @@ - + BibEntry elem should not contain TBody kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 BibEntry elem contains TBody kid @@ -11706,10 +11706,10 @@ - + BibEntry elem should not contain TFoot kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 BibEntry elem contains TFoot kid @@ -11718,10 +11718,10 @@ - + BibEntry elem should not contain Caption kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 BibEntry elem contains Caption kid @@ -11730,10 +11730,10 @@ - + BibEntry elem should not contain Formula kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 BibEntry elem contains Formula kid @@ -11742,10 +11742,10 @@ - + Table elem should not contain Document kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Table elem contains Document kid @@ -11754,10 +11754,10 @@ - + Table elem should not contain Part kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Table elem contains Part kid @@ -11766,10 +11766,10 @@ - + Table elem should not contain Art kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Table elem contains Art kid @@ -11778,10 +11778,10 @@ - + Table elem should not contain Div kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Table elem contains Div kid @@ -11790,10 +11790,10 @@ - + Table elem should not contain Sect kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Table elem contains Sect kid @@ -11802,10 +11802,10 @@ - + Table elem should not contain TOC kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Table elem contains TOC kid @@ -11814,10 +11814,10 @@ - + Table elem should not contain TOCI kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Table elem contains TOCI kid @@ -11826,10 +11826,10 @@ - + Table elem should not contain BlockQuote kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Table elem contains BlockQuote kid @@ -11838,10 +11838,10 @@ - + Table elem should not contain P kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Table elem contains P kid @@ -11850,10 +11850,10 @@ - + Table elem should not contain Note kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 Table elem contains Note kid @@ -11862,10 +11862,10 @@ - + Table elem should not contain Code kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Table elem contains Code kid @@ -11874,10 +11874,10 @@ - + Table elem should not contain Hn kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 Table elem contains Hn kid @@ -11886,10 +11886,10 @@ - + Table elem should not contain H kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Table elem contains H kid @@ -11898,10 +11898,10 @@ - + Table elem should not contain Lbl kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Table elem contains Lbl kid @@ -11910,10 +11910,10 @@ - + Table elem should not contain Span kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Table elem contains Span kid @@ -11922,10 +11922,10 @@ - + Table elem should not contain Quote kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Table elem contains Quote kid @@ -11934,10 +11934,10 @@ - + Table elem should not contain Link kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Table elem contains Link kid @@ -11946,10 +11946,10 @@ - + Table elem should not contain Reference kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Table elem contains Reference kid @@ -11958,10 +11958,10 @@ - + Table elem should not contain Annot kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 Table elem contains Annot kid @@ -11970,10 +11970,10 @@ - + Table elem should not contain Form kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Table elem contains Form kid @@ -11982,10 +11982,10 @@ - + Table elem should not contain Ruby kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Table elem contains Ruby kid @@ -11994,10 +11994,10 @@ - + Table elem should not contain RB kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Table elem contains RB kid @@ -12006,10 +12006,10 @@ - + Table elem should not contain RT kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Table elem contains RT kid @@ -12018,10 +12018,10 @@ - + Table elem should not contain RP kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Table elem contains RP kid @@ -12030,10 +12030,10 @@ - + Table elem should not contain Warichu kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Table elem contains Warichu kid @@ -12042,10 +12042,10 @@ - + Table elem should not contain WT kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Table elem contains WT kid @@ -12054,10 +12054,10 @@ - + Table elem should not contain WP kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Table elem contains WP kid @@ -12066,10 +12066,10 @@ - + Table elem should not contain Index kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Table elem contains Index kid @@ -12078,10 +12078,10 @@ - + Table elem should not contain L kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Table elem contains L kid @@ -12090,10 +12090,10 @@ - + Table elem should not contain LI kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Table elem contains LI kid @@ -12102,10 +12102,10 @@ - + Table elem should not contain LBody kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Table elem contains LBody kid @@ -12114,10 +12114,10 @@ - + Table elem should not contain BibEntry kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Table elem contains BibEntry kid @@ -12126,10 +12126,10 @@ - + Table elem should not contain Table kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Table elem contains Table kid @@ -12138,10 +12138,10 @@ - + Table elem should not contain TH kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Table elem contains TH kid @@ -12150,10 +12150,10 @@ - + Table elem should not contain TD kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Table elem contains TD kid @@ -12162,10 +12162,10 @@ - + Table elem should contain zero or one THead kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 Table contains more than one THead kid @@ -12174,10 +12174,10 @@ - + Table elem should contain zero or one TFoot kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 Table contains more than one TFoot kid @@ -12186,10 +12186,10 @@ - + Table elem should contain zero or one Caption kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Table contains more than one Caption kid @@ -12198,10 +12198,10 @@ - + Table elem should not contain Figure kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 Table elem contains Figure kid @@ -12210,10 +12210,10 @@ - + Table elem should not contain Formula kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 Table elem contains Formula kid @@ -12222,10 +12222,10 @@ - + Table elem should not contain content item kid - (standardType != 'Table') || (hasContentItems == false) + hasContentItems == false Table elem contains content item kid @@ -12234,10 +12234,10 @@ - + TR elem should not contain Document kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TR elem contains Document kid @@ -12246,10 +12246,10 @@ - + TR elem should not contain Part kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TR elem contains Part kid @@ -12258,10 +12258,10 @@ - + TR elem should not contain Art kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 TR elem contains Art kid @@ -12270,10 +12270,10 @@ - + TR elem should not contain Div kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 TR elem contains Div kid @@ -12282,10 +12282,10 @@ - + TR elem should not contain Sect kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 TR elem contains Sect kid @@ -12294,10 +12294,10 @@ - + TR elem should not contain TOC kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 TR elem contains TOC kid @@ -12306,10 +12306,10 @@ - + TR elem should not contain TOCI kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TR elem contains TOCI kid @@ -12318,10 +12318,10 @@ - + TR elem should not contain BlockQuote kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TR elem contains BlockQuote kid @@ -12330,10 +12330,10 @@ - + TR elem should not contain P kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 TR elem contains P kid @@ -12342,10 +12342,10 @@ - + TR elem should not contain Note kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 TR elem contains Note kid @@ -12354,10 +12354,10 @@ - + TR elem should not contain Code kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 TR elem contains Code kid @@ -12366,10 +12366,10 @@ - + TR elem should not contain Hn kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 TR elem contains Hn kid @@ -12378,10 +12378,10 @@ - + TR elem should not contain H kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 TR elem contains H kid @@ -12390,10 +12390,10 @@ - + TR elem should not contain Lbl kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 TR elem contains Lbl kid @@ -12402,10 +12402,10 @@ - + TR elem should not contain Span kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 TR elem contains Span kid @@ -12414,10 +12414,10 @@ - + TR elem should not contain Quote kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 TR elem contains Quote kid @@ -12426,10 +12426,10 @@ - + TR elem should not contain Link kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 TR elem contains Link kid @@ -12438,10 +12438,10 @@ - + TR elem should not contain Reference kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 TR elem contains Reference kid @@ -12450,10 +12450,10 @@ - + TR elem should not contain Annot kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 TR elem contains Annot kid @@ -12462,10 +12462,10 @@ - + TR elem should not contain Form kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 TR elem contains Form kid @@ -12474,10 +12474,10 @@ - + TR elem should not contain Ruby kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 TR elem contains Ruby kid @@ -12486,10 +12486,10 @@ - + TR elem should not contain RB kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TR elem contains RB kid @@ -12498,10 +12498,10 @@ - + TR elem should not contain RT kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TR elem contains RT kid @@ -12510,10 +12510,10 @@ - + TR elem should not contain RP kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TR elem contains RP kid @@ -12522,10 +12522,10 @@ - + TR elem should not contain Warichu kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 TR elem contains Warichu kid @@ -12534,10 +12534,10 @@ - + TR elem should not contain WT kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TR elem contains WT kid @@ -12546,10 +12546,10 @@ - + TR elem should not contain WP kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TR elem contains WP kid @@ -12558,10 +12558,10 @@ - + TR elem should not contain Index kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 TR elem contains Index kid @@ -12570,10 +12570,10 @@ - + TR elem should not contain L kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 TR elem contains L kid @@ -12582,10 +12582,10 @@ - + TR elem should not contain LI kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TR elem contains LI kid @@ -12594,10 +12594,10 @@ - + TR elem should not contain LBody kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TR elem contains LBody kid @@ -12606,10 +12606,10 @@ - + TR elem should not contain BibEntry kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 TR elem contains BibEntry kid @@ -12618,10 +12618,10 @@ - + TR elem should not contain Table kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 TR elem contains Table kid @@ -12630,10 +12630,10 @@ - + TR elem should not contain TR kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 TR elem contains TR kid @@ -12642,10 +12642,10 @@ - + TR elem should not contain THead kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TR elem contains THead kid @@ -12654,10 +12654,10 @@ - + TR elem should not contain TBody kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TR elem contains TBody kid @@ -12666,10 +12666,10 @@ - + TR elem should not contain TFoot kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TR elem contains TFoot kid @@ -12678,10 +12678,10 @@ - + TR elem should not contain Caption kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TR elem contains Caption kid @@ -12690,10 +12690,10 @@ - + TR elem should not contain Figure kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 TR elem contains Figure kid @@ -12702,10 +12702,10 @@ - + TR elem should not contain Formula kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 TR elem contains Formula kid @@ -12714,10 +12714,10 @@ - + TR elem should not contain content item kid - (standardType != 'TR') || (hasContentItems == false) + hasContentItems == false TR elem contains content item kid @@ -12726,10 +12726,10 @@ - + TH elem should not contain Document kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TH elem contains Document kid @@ -12738,10 +12738,10 @@ - + TH elem should not contain Part kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TH elem contains Part kid @@ -12750,10 +12750,10 @@ - + TH elem should not contain TOC kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 TH elem contains TOC kid @@ -12762,10 +12762,10 @@ - + TH elem should not contain TOCI kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TH elem contains TOCI kid @@ -12774,10 +12774,10 @@ - + TH elem should not contain BlockQuote kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TH elem contains BlockQuote kid @@ -12786,10 +12786,10 @@ - + TH elem should contain zero or one H kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 TH contains more than one H kid @@ -12798,10 +12798,10 @@ - + TH elem should not contain RB kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TH elem contains RB kid @@ -12810,10 +12810,10 @@ - + TH elem should not contain RT kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TH elem contains RT kid @@ -12822,10 +12822,10 @@ - + TH elem should not contain RP kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TH elem contains RP kid @@ -12834,10 +12834,10 @@ - + TH elem should not contain WT kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TH elem contains WT kid @@ -12846,10 +12846,10 @@ - + TH elem should not contain WP kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TH elem contains WP kid @@ -12858,10 +12858,10 @@ - + TH elem should not contain LI kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TH elem contains LI kid @@ -12870,10 +12870,10 @@ - + TH elem should not contain LBody kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TH elem contains LBody kid @@ -12882,10 +12882,10 @@ - + TH elem should not contain TR kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 TH elem contains TR kid @@ -12894,10 +12894,10 @@ - + TH elem should not contain TH kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TH elem contains TH kid @@ -12906,10 +12906,10 @@ - + TH elem should not contain TD kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TH elem contains TD kid @@ -12918,10 +12918,10 @@ - + TH elem should not contain THead kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TH elem contains THead kid @@ -12930,10 +12930,10 @@ - + TH elem should not contain TBody kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TH elem contains TBody kid @@ -12942,10 +12942,10 @@ - + TH elem should not contain TFoot kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TH elem contains TFoot kid @@ -12954,10 +12954,10 @@ - + TH elem should not contain Caption kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TH elem contains Caption kid @@ -12966,10 +12966,10 @@ - + TD elem should not contain Document kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TD elem contains Document kid @@ -12978,10 +12978,10 @@ - + TD elem should not contain Part kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TD elem contains Part kid @@ -12990,10 +12990,10 @@ - + TD elem should not contain TOC kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 TD elem contains TOC kid @@ -13002,10 +13002,10 @@ - + TD elem should not contain TOCI kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TD elem contains TOCI kid @@ -13014,10 +13014,10 @@ - + TD elem should not contain BlockQuote kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TD elem contains BlockQuote kid @@ -13026,10 +13026,10 @@ - + TD elem should contain zero or one H kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 TD contains more than one H kid @@ -13038,10 +13038,10 @@ - + TD elem should not contain RB kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TD elem contains RB kid @@ -13050,10 +13050,10 @@ - + TD elem should not contain RT kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TD elem contains RT kid @@ -13062,10 +13062,10 @@ - + TD elem should not contain RP kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TD elem contains RP kid @@ -13074,10 +13074,10 @@ - + TD elem should not contain WT kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TD elem contains WT kid @@ -13086,10 +13086,10 @@ - + TD elem should not contain WP kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TD elem contains WP kid @@ -13098,10 +13098,10 @@ - + TD elem should not contain LI kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TD elem contains LI kid @@ -13110,10 +13110,10 @@ - + TD elem should not contain LBody kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TD elem contains LBody kid @@ -13122,10 +13122,10 @@ - + TD elem should not contain TR kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 TD elem contains TR kid @@ -13134,10 +13134,10 @@ - + TD elem should not contain TH kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TD elem contains TH kid @@ -13146,10 +13146,10 @@ - + TD elem should not contain TD kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TD elem contains TD kid @@ -13158,10 +13158,10 @@ - + TD elem should not contain THead kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TD elem contains THead kid @@ -13170,10 +13170,10 @@ - + TD elem should not contain TBody kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TD elem contains TBody kid @@ -13182,10 +13182,10 @@ - + TD elem should not contain TFoot kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TD elem contains TFoot kid @@ -13194,10 +13194,10 @@ - + TD elem should not contain Caption kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TD elem contains Caption kid @@ -13206,10 +13206,10 @@ - + THead elem should not contain Document kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 THead elem contains Document kid @@ -13218,10 +13218,10 @@ - + THead elem should not contain Part kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 THead elem contains Part kid @@ -13230,10 +13230,10 @@ - + THead elem should not contain Art kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 THead elem contains Art kid @@ -13242,10 +13242,10 @@ - + THead elem should not contain Div kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 THead elem contains Div kid @@ -13254,10 +13254,10 @@ - + THead elem should not contain Sect kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 THead elem contains Sect kid @@ -13266,10 +13266,10 @@ - + THead elem should not contain TOC kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 THead elem contains TOC kid @@ -13278,10 +13278,10 @@ - + THead elem should not contain TOCI kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 THead elem contains TOCI kid @@ -13290,10 +13290,10 @@ - + THead elem should not contain BlockQuote kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 THead elem contains BlockQuote kid @@ -13302,10 +13302,10 @@ - + THead elem should not contain P kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 THead elem contains P kid @@ -13314,10 +13314,10 @@ - + THead elem should not contain Note kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 THead elem contains Note kid @@ -13326,10 +13326,10 @@ - + THead elem should not contain Code kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 THead elem contains Code kid @@ -13338,10 +13338,10 @@ - + THead elem should not contain Hn kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 THead elem contains Hn kid @@ -13350,10 +13350,10 @@ - + THead elem should not contain H kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 THead elem contains H kid @@ -13362,10 +13362,10 @@ - + THead elem should not contain Lbl kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 THead elem contains Lbl kid @@ -13374,10 +13374,10 @@ - + THead elem should not contain Span kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 THead elem contains Span kid @@ -13386,10 +13386,10 @@ - + THead elem should not contain Quote kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 THead elem contains Quote kid @@ -13398,10 +13398,10 @@ - + THead elem should not contain Link kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 THead elem contains Link kid @@ -13410,10 +13410,10 @@ - + THead elem should not contain Reference kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 THead elem contains Reference kid @@ -13422,10 +13422,10 @@ - + THead elem should not contain Annot kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 THead elem contains Annot kid @@ -13434,10 +13434,10 @@ - + THead elem should not contain Form kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 THead elem contains Form kid @@ -13446,10 +13446,10 @@ - + THead elem should not contain Ruby kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 THead elem contains Ruby kid @@ -13458,10 +13458,10 @@ - + THead elem should not contain RB kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 THead elem contains RB kid @@ -13470,10 +13470,10 @@ - + THead elem should not contain RT kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 THead elem contains RT kid @@ -13482,10 +13482,10 @@ - + THead elem should not contain RP kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 THead elem contains RP kid @@ -13494,10 +13494,10 @@ - + THead elem should not contain Warichu kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 THead elem contains Warichu kid @@ -13506,10 +13506,10 @@ - + THead elem should not contain WT kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 THead elem contains WT kid @@ -13518,10 +13518,10 @@ - + THead elem should not contain WP kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 THead elem contains WP kid @@ -13530,10 +13530,10 @@ - + THead elem should not contain Index kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 THead elem contains Index kid @@ -13542,10 +13542,10 @@ - + THead elem should not contain L kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 THead elem contains L kid @@ -13554,10 +13554,10 @@ - + THead elem should not contain LI kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 THead elem contains LI kid @@ -13566,10 +13566,10 @@ - + THead elem should not contain LBody kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 THead elem contains LBody kid @@ -13578,10 +13578,10 @@ - + THead elem should not contain BibEntry kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 THead elem contains BibEntry kid @@ -13590,10 +13590,10 @@ - + THead elem should not contain Table kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 THead elem contains Table kid @@ -13602,10 +13602,10 @@ - + THead elem should not contain TH kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 THead elem contains TH kid @@ -13614,10 +13614,10 @@ - + THead elem should not contain TD kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 THead elem contains TD kid @@ -13626,10 +13626,10 @@ - + THead elem should not contain THead kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 THead elem contains THead kid @@ -13638,10 +13638,10 @@ - + THead elem should not contain TBody kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 THead elem contains TBody kid @@ -13650,10 +13650,10 @@ - + THead elem should not contain TFoot kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 THead elem contains TFoot kid @@ -13662,10 +13662,10 @@ - + THead elem should not contain Caption kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 THead elem contains Caption kid @@ -13674,10 +13674,10 @@ - + THead elem should not contain Figure kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 THead elem contains Figure kid @@ -13686,10 +13686,10 @@ - + THead elem should not contain Formula kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 THead elem contains Formula kid @@ -13698,10 +13698,10 @@ - + THead elem should not contain content item kid - (standardType != 'THead') || (hasContentItems == false) + hasContentItems == false THead elem contains content item kid @@ -13710,10 +13710,10 @@ - + TBody elem should not contain Document kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TBody elem contains Document kid @@ -13722,10 +13722,10 @@ - + TBody elem should not contain Part kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TBody elem contains Part kid @@ -13734,10 +13734,10 @@ - + TBody elem should not contain Art kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 TBody elem contains Art kid @@ -13746,10 +13746,10 @@ - + TBody elem should not contain Div kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 TBody elem contains Div kid @@ -13758,10 +13758,10 @@ - + TBody elem should not contain Sect kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 TBody elem contains Sect kid @@ -13770,10 +13770,10 @@ - + TBody elem should not contain TOC kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 TBody elem contains TOC kid @@ -13782,10 +13782,10 @@ - + TBody elem should not contain TOCI kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TBody elem contains TOCI kid @@ -13794,10 +13794,10 @@ - + TBody elem should not contain BlockQuote kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TBody elem contains BlockQuote kid @@ -13806,10 +13806,10 @@ - + TBody elem should not contain P kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 TBody elem contains P kid @@ -13818,10 +13818,10 @@ - + TBody elem should not contain Note kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 TBody elem contains Note kid @@ -13830,10 +13830,10 @@ - + TBody elem should not contain Code kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 TBody elem contains Code kid @@ -13842,10 +13842,10 @@ - + TBody elem should not contain Hn kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 TBody elem contains Hn kid @@ -13854,10 +13854,10 @@ - + TBody elem should not contain H kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 TBody elem contains H kid @@ -13866,10 +13866,10 @@ - + TBody elem should not contain Lbl kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 TBody elem contains Lbl kid @@ -13878,10 +13878,10 @@ - + TBody elem should not contain Span kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 TBody elem contains Span kid @@ -13890,10 +13890,10 @@ - + TBody elem should not contain Quote kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 TBody elem contains Quote kid @@ -13902,10 +13902,10 @@ - + TBody elem should not contain Link kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 TBody elem contains Link kid @@ -13914,10 +13914,10 @@ - + TBody elem should not contain Reference kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 TBody elem contains Reference kid @@ -13926,10 +13926,10 @@ - + TBody elem should not contain Annot kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 TBody elem contains Annot kid @@ -13938,10 +13938,10 @@ - + TBody elem should not contain Form kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 TBody elem contains Form kid @@ -13950,10 +13950,10 @@ - + TBody elem should not contain Ruby kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 TBody elem contains Ruby kid @@ -13962,10 +13962,10 @@ - + TBody elem should not contain RB kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TBody elem contains RB kid @@ -13974,10 +13974,10 @@ - + TBody elem should not contain RT kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TBody elem contains RT kid @@ -13986,10 +13986,10 @@ - + TBody elem should not contain RP kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TBody elem contains RP kid @@ -13998,10 +13998,10 @@ - + TBody elem should not contain Warichu kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 TBody elem contains Warichu kid @@ -14010,10 +14010,10 @@ - + TBody elem should not contain WT kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TBody elem contains WT kid @@ -14022,10 +14022,10 @@ - + TBody elem should not contain WP kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TBody elem contains WP kid @@ -14034,10 +14034,10 @@ - + TBody elem should not contain Index kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 TBody elem contains Index kid @@ -14046,10 +14046,10 @@ - + TBody elem should not contain L kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 TBody elem contains L kid @@ -14058,10 +14058,10 @@ - + TBody elem should not contain LI kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TBody elem contains LI kid @@ -14070,10 +14070,10 @@ - + TBody elem should not contain LBody kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TBody elem contains LBody kid @@ -14082,10 +14082,10 @@ - + TBody elem should not contain BibEntry kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 TBody elem contains BibEntry kid @@ -14094,10 +14094,10 @@ - + TBody elem should not contain Table kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 TBody elem contains Table kid @@ -14106,10 +14106,10 @@ - + TBody elem should not contain TH kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TBody elem contains TH kid @@ -14118,10 +14118,10 @@ - + TBody elem should not contain TD kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TBody elem contains TD kid @@ -14130,10 +14130,10 @@ - + TBody elem should not contain THead kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TBody elem contains THead kid @@ -14142,10 +14142,10 @@ - + TBody elem should not contain TBody kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TBody elem contains TBody kid @@ -14154,10 +14154,10 @@ - + TBody elem should not contain TFoot kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TBody elem contains TFoot kid @@ -14166,10 +14166,10 @@ - + TBody elem should not contain Caption kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TBody elem contains Caption kid @@ -14178,10 +14178,10 @@ - + TBody elem should not contain Figure kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 TBody elem contains Figure kid @@ -14190,10 +14190,10 @@ - + TBody elem should not contain Formula kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 TBody elem contains Formula kid @@ -14202,10 +14202,10 @@ - + TBody elem should not contain content item kid - (standardType != 'TBody') || (hasContentItems == false) + hasContentItems == false TBody elem contains content item kid @@ -14214,10 +14214,10 @@ - + TFoot elem should not contain Document kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TFoot elem contains Document kid @@ -14226,10 +14226,10 @@ - + TFoot elem should not contain Part kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TFoot elem contains Part kid @@ -14238,10 +14238,10 @@ - + TFoot elem should not contain Art kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 TFoot elem contains Art kid @@ -14250,10 +14250,10 @@ - + TFoot elem should not contain Div kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 TFoot elem contains Div kid @@ -14262,10 +14262,10 @@ - + TFoot elem should not contain Sect kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 TFoot elem contains Sect kid @@ -14274,10 +14274,10 @@ - + TFoot elem should not contain TOC kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 TFoot elem contains TOC kid @@ -14286,10 +14286,10 @@ - + TFoot elem should not contain TOCI kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TFoot elem contains TOCI kid @@ -14298,10 +14298,10 @@ - + TFoot elem should not contain BlockQuote kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TFoot elem contains BlockQuote kid @@ -14310,10 +14310,10 @@ - + TFoot elem should not contain P kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 TFoot elem contains P kid @@ -14322,10 +14322,10 @@ - + TFoot elem should not contain Note kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 TFoot elem contains Note kid @@ -14334,10 +14334,10 @@ - + TFoot elem should not contain Code kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 TFoot elem contains Code kid @@ -14346,10 +14346,10 @@ - + TFoot elem should not contain Hn kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-6]$/.test(elem)).length == 0 TFoot elem contains Hn kid @@ -14358,10 +14358,10 @@ - + TFoot elem should not contain H kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 TFoot elem contains H kid @@ -14370,10 +14370,10 @@ - + TFoot elem should not contain Lbl kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 TFoot elem contains Lbl kid @@ -14382,10 +14382,10 @@ - + TFoot elem should not contain Span kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 TFoot elem contains Span kid @@ -14394,10 +14394,10 @@ - + TFoot elem should not contain Quote kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 TFoot elem contains Quote kid @@ -14406,10 +14406,10 @@ - + TFoot elem should not contain Link kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 TFoot elem contains Link kid @@ -14418,10 +14418,10 @@ - + TFoot elem should not contain Reference kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 TFoot elem contains Reference kid @@ -14430,10 +14430,10 @@ - + TFoot elem should not contain Annot kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 TFoot elem contains Annot kid @@ -14442,10 +14442,10 @@ - + TFoot elem should not contain Form kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 TFoot elem contains Form kid @@ -14454,10 +14454,10 @@ - + TFoot elem should not contain Ruby kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 TFoot elem contains Ruby kid @@ -14466,10 +14466,10 @@ - + TFoot elem should not contain RB kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TFoot elem contains RB kid @@ -14478,10 +14478,10 @@ - + TFoot elem should not contain RT kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TFoot elem contains RT kid @@ -14490,10 +14490,10 @@ - + TFoot elem should not contain RP kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TFoot elem contains RP kid @@ -14502,10 +14502,10 @@ - + TFoot elem should not contain Warichu kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 TFoot elem contains Warichu kid @@ -14514,10 +14514,10 @@ - + TFoot elem should not contain WT kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TFoot elem contains WT kid @@ -14526,10 +14526,10 @@ - + TFoot elem should not contain WP kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TFoot elem contains WP kid @@ -14538,10 +14538,10 @@ - + TFoot elem should not contain Index kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 TFoot elem contains Index kid @@ -14550,10 +14550,10 @@ - + TFoot elem should not contain L kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 TFoot elem contains L kid @@ -14562,10 +14562,10 @@ - + TFoot elem should not contain LI kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TFoot elem contains LI kid @@ -14574,10 +14574,10 @@ - + TFoot elem should not contain LBody kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TFoot elem contains LBody kid @@ -14586,10 +14586,10 @@ - + TFoot elem should not contain BibEntry kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 TFoot elem contains BibEntry kid @@ -14598,10 +14598,10 @@ - + TFoot elem should not contain Table kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 TFoot elem contains Table kid @@ -14610,10 +14610,10 @@ - + TFoot elem should not contain TH kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TFoot elem contains TH kid @@ -14622,10 +14622,10 @@ - + TFoot elem should not contain TD kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TFoot elem contains TD kid @@ -14634,10 +14634,10 @@ - + TFoot elem should not contain THead kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TFoot elem contains THead kid @@ -14646,10 +14646,10 @@ - + TFoot elem should not contain TBody kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TFoot elem contains TBody kid @@ -14658,10 +14658,10 @@ - + TFoot elem should not contain TFoot kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TFoot elem contains TFoot kid @@ -14670,10 +14670,10 @@ - + TFoot elem should not contain Caption kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TFoot elem contains Caption kid @@ -14682,10 +14682,10 @@ - + TFoot elem should not contain Figure kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 TFoot elem contains Figure kid @@ -14694,10 +14694,10 @@ - + TFoot elem should not contain Formula kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 TFoot elem contains Formula kid @@ -14706,10 +14706,10 @@ - + TFoot elem should not contain content item kid - (standardType != 'TFoot') || (hasContentItems == false) + hasContentItems == false TFoot elem contains content item kid @@ -14718,10 +14718,10 @@ - + Caption elem should not contain Document kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Caption elem contains Document kid @@ -14730,10 +14730,10 @@ - + Caption elem should not contain TOC kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Caption elem contains TOC kid @@ -14742,10 +14742,10 @@ - + Caption elem should not contain TOCI kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Caption elem contains TOCI kid @@ -14754,10 +14754,10 @@ - + Caption elem should contain zero or one H kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Caption contains more than one H kid @@ -14766,10 +14766,10 @@ - + Caption elem should not contain RB kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Caption elem contains RB kid @@ -14778,10 +14778,10 @@ - + Caption elem should not contain RT kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Caption elem contains RT kid @@ -14790,10 +14790,10 @@ - + Caption elem should not contain RP kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Caption elem contains RP kid @@ -14802,10 +14802,10 @@ - + Caption elem should not contain WT kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Caption elem contains WT kid @@ -14814,10 +14814,10 @@ - + Caption elem should not contain WP kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Caption elem contains WP kid @@ -14826,10 +14826,10 @@ - + Caption elem should not contain LI kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Caption elem contains LI kid @@ -14838,10 +14838,10 @@ - + Caption elem should not contain LBody kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Caption elem contains LBody kid @@ -14850,10 +14850,10 @@ - + Caption elem should not contain TR kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Caption elem contains TR kid @@ -14862,10 +14862,10 @@ - + Caption elem should not contain TH kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Caption elem contains TH kid @@ -14874,10 +14874,10 @@ - + Caption elem should not contain TD kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Caption elem contains TD kid @@ -14886,10 +14886,10 @@ - + Caption elem should not contain THead kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Caption elem contains THead kid @@ -14898,10 +14898,10 @@ - + Caption elem should not contain TBody kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Caption elem contains TBody kid @@ -14910,10 +14910,10 @@ - + Caption elem should not contain TFoot kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Caption elem contains TFoot kid @@ -14922,10 +14922,10 @@ - + Caption elem should not contain Caption kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Caption elem contains Caption kid @@ -14934,10 +14934,10 @@ - + Figure elem should not contain Document kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Figure elem contains Document kid @@ -14946,10 +14946,10 @@ - + Figure elem should not contain TOC kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Figure elem contains TOC kid @@ -14958,10 +14958,10 @@ - + Figure elem should not contain TOCI kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Figure elem contains TOCI kid @@ -14970,10 +14970,10 @@ - + Figure elem should contain zero or one H kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Figure contains more than one H kid @@ -14982,10 +14982,10 @@ - + Figure elem should not contain RB kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Figure elem contains RB kid @@ -14994,10 +14994,10 @@ - + Figure elem should not contain RT kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Figure elem contains RT kid @@ -15006,10 +15006,10 @@ - + Figure elem should not contain RP kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Figure elem contains RP kid @@ -15018,10 +15018,10 @@ - + Figure elem should not contain WT kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Figure elem contains WT kid @@ -15030,10 +15030,10 @@ - + Figure elem should not contain WP kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Figure elem contains WP kid @@ -15042,10 +15042,10 @@ - + Figure elem should not contain LI kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Figure elem contains LI kid @@ -15054,10 +15054,10 @@ - + Figure elem should not contain LBody kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Figure elem contains LBody kid @@ -15066,10 +15066,10 @@ - + Figure elem should not contain TR kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Figure elem contains TR kid @@ -15078,10 +15078,10 @@ - + Figure elem should not contain TH kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Figure elem contains TH kid @@ -15090,10 +15090,10 @@ - + Figure elem should not contain TD kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Figure elem contains TD kid @@ -15102,10 +15102,10 @@ - + Figure elem should not contain THead kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Figure elem contains THead kid @@ -15114,10 +15114,10 @@ - + Figure elem should not contain TBody kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Figure elem contains TBody kid @@ -15126,10 +15126,10 @@ - + Figure elem should not contain TFoot kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Figure elem contains TFoot kid @@ -15138,10 +15138,10 @@ - + Figure elem should contain zero or one Caption kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Figure contains more than one Caption kid @@ -15150,10 +15150,10 @@ - + Formula elem should not contain Document kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Formula elem contains Document kid @@ -15162,10 +15162,10 @@ - + Formula elem should not contain Art kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Formula elem contains Art kid @@ -15174,10 +15174,10 @@ - + Formula elem should not contain Sect kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Formula elem contains Sect kid @@ -15186,10 +15186,10 @@ - + Formula elem should not contain TOC kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Formula elem contains TOC kid @@ -15198,10 +15198,10 @@ - + Formula elem should not contain TOCI kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Formula elem contains TOCI kid @@ -15210,10 +15210,10 @@ - + Formula elem should contain zero or one H kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Formula contains more than one H kid @@ -15222,10 +15222,10 @@ - + Formula elem should not contain RB kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Formula elem contains RB kid @@ -15234,10 +15234,10 @@ - + Formula elem should not contain RT kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Formula elem contains RT kid @@ -15246,10 +15246,10 @@ - + Formula elem should not contain RP kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Formula elem contains RP kid @@ -15258,10 +15258,10 @@ - + Formula elem should not contain WT kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Formula elem contains WT kid @@ -15270,10 +15270,10 @@ - + Formula elem should not contain WP kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Formula elem contains WP kid @@ -15282,10 +15282,10 @@ - + Formula elem should not contain LI kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Formula elem contains LI kid @@ -15294,10 +15294,10 @@ - + Formula elem should not contain LBody kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Formula elem contains LBody kid @@ -15306,10 +15306,10 @@ - + Formula elem should not contain TR kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Formula elem contains TR kid @@ -15318,10 +15318,10 @@ - + Formula elem should not contain TH kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Formula elem contains TH kid @@ -15330,10 +15330,10 @@ - + Formula elem should not contain TD kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Formula elem contains TD kid @@ -15342,10 +15342,10 @@ - + Formula elem should not contain THead kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Formula elem contains THead kid @@ -15354,10 +15354,10 @@ - + Formula elem should not contain TBody kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Formula elem contains TBody kid @@ -15366,10 +15366,10 @@ - + Formula elem should not contain TFoot kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Formula elem contains TFoot kid @@ -15378,10 +15378,10 @@ - + Formula elem should contain zero or one Caption kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Formula contains more than one Caption kid diff --git a/PDF_UA/ISO-32000-2-Tagged.xml b/PDF_UA/ISO-32000-2-Tagged.xml index 3b08ef7e..8409aef7 100644 --- a/PDF_UA/ISO-32000-2-Tagged.xml +++ b/PDF_UA/ISO-32000-2-Tagged.xml @@ -630,10 +630,10 @@ - + Document elem should not contain TOCI kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Document elem contains TOCI kid @@ -642,10 +642,10 @@ - + Document elem should contain zero or one H kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Document contains more than one H kid @@ -654,10 +654,10 @@ - + Document elem should not contain Sub kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Document elem contains Sub kid @@ -666,10 +666,10 @@ - + Document elem should not contain Lbl kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Document elem contains Lbl kid @@ -678,10 +678,10 @@ - + Document elem should not contain Em kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 Document elem contains Em kid @@ -690,10 +690,10 @@ - + Document elem should not contain Strong kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 Document elem contains Strong kid @@ -702,10 +702,10 @@ - + Document elem should not contain Span kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Document elem contains Span kid @@ -714,10 +714,10 @@ - + Document elem should not contain Quote kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Document elem contains Quote kid @@ -726,10 +726,10 @@ - + Document elem should not contain Reference kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Document elem contains Reference kid @@ -738,10 +738,10 @@ - + Document elem should not contain Ruby kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Document elem contains Ruby kid @@ -750,10 +750,10 @@ - + Document elem should not contain RB kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Document elem contains RB kid @@ -762,10 +762,10 @@ - + Document elem should not contain RT kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Document elem contains RT kid @@ -774,10 +774,10 @@ - + Document elem should not contain RP kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Document elem contains RP kid @@ -786,10 +786,10 @@ - + Document elem should not contain Warichu kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Document elem contains Warichu kid @@ -798,10 +798,10 @@ - + Document elem should not contain WT kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Document elem contains WT kid @@ -810,10 +810,10 @@ - + Document elem should not contain WP kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Document elem contains WP kid @@ -822,10 +822,10 @@ - + Document elem should not contain LI kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Document elem contains LI kid @@ -834,10 +834,10 @@ - + Document elem should not contain LBody kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Document elem contains LBody kid @@ -846,10 +846,10 @@ - + Document elem should not contain BibEntry kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Document elem contains BibEntry kid @@ -858,10 +858,10 @@ - + Document elem should not contain TR kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Document elem contains TR kid @@ -870,10 +870,10 @@ - + Document elem should not contain TH kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Document elem contains TH kid @@ -882,10 +882,10 @@ - + Document elem should not contain TD kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Document elem contains TD kid @@ -894,10 +894,10 @@ - + Document elem should not contain THead kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Document elem contains THead kid @@ -906,10 +906,10 @@ - + Document elem should not contain TBody kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Document elem contains TBody kid @@ -918,10 +918,10 @@ - + Document elem should not contain TFoot kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Document elem contains TFoot kid @@ -930,10 +930,10 @@ - + Document elem should not contain Caption kid - (standardType != 'Document') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Document elem contains Caption kid @@ -942,10 +942,10 @@ - + Document elem should not contain content item kid - (standardType != 'Document') || (hasContentItems == false) + hasContentItems == false Document elem contains content item kid @@ -954,10 +954,10 @@ - + DocumentFragment elem should not contain TOCI kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 DocumentFragment elem contains TOCI kid @@ -966,10 +966,10 @@ - + DocumentFragment elem should contain zero or one H kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 DocumentFragment contains more than one H kid @@ -978,10 +978,10 @@ - + DocumentFragment elem should not contain Sub kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 DocumentFragment elem contains Sub kid @@ -990,10 +990,10 @@ - + DocumentFragment elem should not contain Lbl kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 DocumentFragment elem contains Lbl kid @@ -1002,10 +1002,10 @@ - + DocumentFragment elem should not contain Em kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 DocumentFragment elem contains Em kid @@ -1014,10 +1014,10 @@ - + DocumentFragment elem should not contain Strong kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 DocumentFragment elem contains Strong kid @@ -1026,10 +1026,10 @@ - + DocumentFragment elem should not contain Span kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 DocumentFragment elem contains Span kid @@ -1038,10 +1038,10 @@ - + DocumentFragment elem should not contain Quote kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 DocumentFragment elem contains Quote kid @@ -1050,10 +1050,10 @@ - + DocumentFragment elem should not contain Reference kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 DocumentFragment elem contains Reference kid @@ -1062,10 +1062,10 @@ - + DocumentFragment elem should not contain Ruby kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 DocumentFragment elem contains Ruby kid @@ -1074,10 +1074,10 @@ - + DocumentFragment elem should not contain RB kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 DocumentFragment elem contains RB kid @@ -1086,10 +1086,10 @@ - + DocumentFragment elem should not contain RT kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 DocumentFragment elem contains RT kid @@ -1098,10 +1098,10 @@ - + DocumentFragment elem should not contain RP kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 DocumentFragment elem contains RP kid @@ -1110,10 +1110,10 @@ - + DocumentFragment elem should not contain Warichu kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 DocumentFragment elem contains Warichu kid @@ -1122,10 +1122,10 @@ - + DocumentFragment elem should not contain WT kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 DocumentFragment elem contains WT kid @@ -1134,10 +1134,10 @@ - + DocumentFragment elem should not contain WP kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 DocumentFragment elem contains WP kid @@ -1146,10 +1146,10 @@ - + DocumentFragment elem should not contain LI kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 DocumentFragment elem contains LI kid @@ -1158,10 +1158,10 @@ - + DocumentFragment elem should not contain LBody kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 DocumentFragment elem contains LBody kid @@ -1170,10 +1170,10 @@ - + DocumentFragment elem should not contain BibEntry kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 DocumentFragment elem contains BibEntry kid @@ -1182,10 +1182,10 @@ - + DocumentFragment elem should not contain TR kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 DocumentFragment elem contains TR kid @@ -1194,10 +1194,10 @@ - + DocumentFragment elem should not contain TH kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 DocumentFragment elem contains TH kid @@ -1206,10 +1206,10 @@ - + DocumentFragment elem should not contain TD kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 DocumentFragment elem contains TD kid @@ -1218,10 +1218,10 @@ - + DocumentFragment elem should not contain THead kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 DocumentFragment elem contains THead kid @@ -1230,10 +1230,10 @@ - + DocumentFragment elem should not contain TBody kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 DocumentFragment elem contains TBody kid @@ -1242,10 +1242,10 @@ - + DocumentFragment elem should not contain TFoot kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 DocumentFragment elem contains TFoot kid @@ -1254,10 +1254,10 @@ - + DocumentFragment elem should not contain Caption kid - (standardType != 'DocumentFragment') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 DocumentFragment elem contains Caption kid @@ -1266,10 +1266,10 @@ - + DocumentFragment elem should not contain content item kid - (standardType != 'DocumentFragment') || (hasContentItems == false) + hasContentItems == false DocumentFragment elem contains content item kid @@ -1278,10 +1278,10 @@ - + Part elem should not contain Em kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 Part elem contains Em kid @@ -1290,10 +1290,10 @@ - + Part elem should not contain Strong kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 Part elem contains Strong kid @@ -1302,10 +1302,10 @@ - + Part elem should not contain Span kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Part elem contains Span kid @@ -1314,10 +1314,10 @@ - + Part elem should not contain Quote kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Part elem contains Quote kid @@ -1326,10 +1326,10 @@ - + Part elem should not contain Ruby kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Part elem contains Ruby kid @@ -1338,10 +1338,10 @@ - + Part elem should not contain RB kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Part elem contains RB kid @@ -1350,10 +1350,10 @@ - + Part elem should not contain RT kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Part elem contains RT kid @@ -1362,10 +1362,10 @@ - + Part elem should not contain RP kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Part elem contains RP kid @@ -1374,10 +1374,10 @@ - + Part elem should not contain Warichu kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Part elem contains Warichu kid @@ -1386,10 +1386,10 @@ - + Part elem should not contain WT kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Part elem contains WT kid @@ -1398,10 +1398,10 @@ - + Part elem should not contain WP kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Part elem contains WP kid @@ -1410,10 +1410,10 @@ - + Part elem should not contain LI kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Part elem contains LI kid @@ -1422,10 +1422,10 @@ - + Part elem should not contain LBody kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Part elem contains LBody kid @@ -1434,10 +1434,10 @@ - + Part elem should not contain TR kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Part elem contains TR kid @@ -1446,10 +1446,10 @@ - + Part elem should not contain TH kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Part elem contains TH kid @@ -1458,10 +1458,10 @@ - + Part elem should not contain TD kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Part elem contains TD kid @@ -1470,10 +1470,10 @@ - + Part elem should not contain THead kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Part elem contains THead kid @@ -1482,10 +1482,10 @@ - + Part elem should not contain TBody kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Part elem contains TBody kid @@ -1494,10 +1494,10 @@ - + Part elem should not contain TFoot kid - (standardType != 'Part') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Part elem contains TFoot kid @@ -1506,10 +1506,10 @@ - + Part elem should not contain content item kid - (standardType != 'Part') || (hasContentItems == false) + hasContentItems == false Part elem contains content item kid @@ -1518,10 +1518,10 @@ - + Div elem should not contain content item kid - (standardType != 'Div') || (hasContentItems == false) + hasContentItems == false Div elem contains content item kid @@ -1530,10 +1530,10 @@ - + Art elem should not contain Document kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Art elem contains Document kid @@ -1542,10 +1542,10 @@ - + Art elem should not contain Art kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Art elem contains Art kid @@ -1554,10 +1554,10 @@ - + Art elem should not contain TOCI kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Art elem contains TOCI kid @@ -1566,10 +1566,10 @@ - + Art elem should contain zero or one H kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Art contains more than one H kid @@ -1578,10 +1578,10 @@ - + Art elem should not contain Sub kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Art elem contains Sub kid @@ -1590,10 +1590,10 @@ - + Art elem should not contain Em kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 Art elem contains Em kid @@ -1602,10 +1602,10 @@ - + Art elem should not contain Strong kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 Art elem contains Strong kid @@ -1614,10 +1614,10 @@ - + Art elem should not contain Span kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Art elem contains Span kid @@ -1626,10 +1626,10 @@ - + Art elem should not contain Quote kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Art elem contains Quote kid @@ -1638,10 +1638,10 @@ - + Art elem should not contain Reference kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Art elem contains Reference kid @@ -1650,10 +1650,10 @@ - + Art elem should not contain Ruby kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Art elem contains Ruby kid @@ -1662,10 +1662,10 @@ - + Art elem should not contain RB kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Art elem contains RB kid @@ -1674,10 +1674,10 @@ - + Art elem should not contain RT kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Art elem contains RT kid @@ -1686,10 +1686,10 @@ - + Art elem should not contain RP kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Art elem contains RP kid @@ -1698,10 +1698,10 @@ - + Art elem should not contain Warichu kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Art elem contains Warichu kid @@ -1710,10 +1710,10 @@ - + Art elem should not contain WT kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Art elem contains WT kid @@ -1722,10 +1722,10 @@ - + Art elem should not contain WP kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Art elem contains WP kid @@ -1734,10 +1734,10 @@ - + Art elem should not contain LI kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Art elem contains LI kid @@ -1746,10 +1746,10 @@ - + Art elem should not contain LBody kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Art elem contains LBody kid @@ -1758,10 +1758,10 @@ - + Art elem should not contain BibEntry kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Art elem contains BibEntry kid @@ -1770,10 +1770,10 @@ - + Art elem should not contain TR kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Art elem contains TR kid @@ -1782,10 +1782,10 @@ - + Art elem should not contain TH kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Art elem contains TH kid @@ -1794,10 +1794,10 @@ - + Art elem should not contain TD kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Art elem contains TD kid @@ -1806,10 +1806,10 @@ - + Art elem should not contain THead kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Art elem contains THead kid @@ -1818,10 +1818,10 @@ - + Art elem should not contain TBody kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Art elem contains TBody kid @@ -1830,10 +1830,10 @@ - + Art elem should not contain TFoot kid - (standardType != 'Art') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Art elem contains TFoot kid @@ -1842,10 +1842,10 @@ - + Art elem should not contain content item kid - (standardType != 'Art') || (hasContentItems == false) + hasContentItems == false Art elem contains content item kid @@ -1854,10 +1854,10 @@ - + Sect elem should not contain Document kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Sect elem contains Document kid @@ -1866,10 +1866,10 @@ - + Sect elem should not contain TOCI kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Sect elem contains TOCI kid @@ -1878,10 +1878,10 @@ - + Sect elem should contain zero or one H kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Sect contains more than one H kid @@ -1890,10 +1890,10 @@ - + Sect elem should not contain Sub kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Sect elem contains Sub kid @@ -1902,10 +1902,10 @@ - + Sect elem should not contain Em kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 Sect elem contains Em kid @@ -1914,10 +1914,10 @@ - + Sect elem should not contain Strong kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 Sect elem contains Strong kid @@ -1926,10 +1926,10 @@ - + Sect elem should not contain Span kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Sect elem contains Span kid @@ -1938,10 +1938,10 @@ - + Sect elem should not contain Quote kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Sect elem contains Quote kid @@ -1950,10 +1950,10 @@ - + Sect elem should not contain Reference kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Sect elem contains Reference kid @@ -1962,10 +1962,10 @@ - + Sect elem should not contain Ruby kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Sect elem contains Ruby kid @@ -1974,10 +1974,10 @@ - + Sect elem should not contain RB kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Sect elem contains RB kid @@ -1986,10 +1986,10 @@ - + Sect elem should not contain RT kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Sect elem contains RT kid @@ -1998,10 +1998,10 @@ - + Sect elem should not contain RP kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Sect elem contains RP kid @@ -2010,10 +2010,10 @@ - + Sect elem should not contain Warichu kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Sect elem contains Warichu kid @@ -2022,10 +2022,10 @@ - + Sect elem should not contain WT kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Sect elem contains WT kid @@ -2034,10 +2034,10 @@ - + Sect elem should not contain WP kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Sect elem contains WP kid @@ -2046,10 +2046,10 @@ - + Sect elem should not contain LI kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Sect elem contains LI kid @@ -2058,10 +2058,10 @@ - + Sect elem should not contain LBody kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Sect elem contains LBody kid @@ -2070,10 +2070,10 @@ - + Sect elem should not contain BibEntry kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Sect elem contains BibEntry kid @@ -2082,10 +2082,10 @@ - + Sect elem should not contain TR kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Sect elem contains TR kid @@ -2094,10 +2094,10 @@ - + Sect elem should not contain TH kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Sect elem contains TH kid @@ -2106,10 +2106,10 @@ - + Sect elem should not contain TD kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Sect elem contains TD kid @@ -2118,10 +2118,10 @@ - + Sect elem should not contain THead kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Sect elem contains THead kid @@ -2130,10 +2130,10 @@ - + Sect elem should not contain TBody kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Sect elem contains TBody kid @@ -2142,10 +2142,10 @@ - + Sect elem should not contain TFoot kid - (standardType != 'Sect') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Sect elem contains TFoot kid @@ -2154,10 +2154,10 @@ - + Sect elem should not contain content item kid - (standardType != 'Sect') || (hasContentItems == false) + hasContentItems == false Sect elem contains content item kid @@ -2166,10 +2166,10 @@ - + TOC elem should not contain Document kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TOC elem contains Document kid @@ -2178,10 +2178,10 @@ - + TOC elem should not contain DocumentFragment kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 TOC elem contains DocumentFragment kid @@ -2190,10 +2190,10 @@ - + TOC elem should not contain Part kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TOC elem contains Part kid @@ -2202,10 +2202,10 @@ - + TOC elem should not contain Art kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 TOC elem contains Art kid @@ -2214,10 +2214,10 @@ - + TOC elem should not contain Div kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 TOC elem contains Div kid @@ -2226,10 +2226,10 @@ - + TOC elem should not contain Sect kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 TOC elem contains Sect kid @@ -2238,10 +2238,10 @@ - + TOC elem should not contain Aside kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 TOC elem contains Aside kid @@ -2250,10 +2250,10 @@ - + TOC elem should not contain BlockQuote kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TOC elem contains BlockQuote kid @@ -2262,10 +2262,10 @@ - + TOC elem should not contain P kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 TOC elem contains P kid @@ -2274,10 +2274,10 @@ - + TOC elem should not contain Note kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 TOC elem contains Note kid @@ -2286,10 +2286,10 @@ - + TOC elem should not contain Code kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 TOC elem contains Code kid @@ -2298,10 +2298,10 @@ - + TOC elem should not contain Hn kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 TOC elem contains Hn kid @@ -2310,10 +2310,10 @@ - + TOC elem should not contain H kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 TOC elem contains H kid @@ -2322,10 +2322,10 @@ - + TOC elem should not contain Title kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 TOC elem contains Title kid @@ -2334,10 +2334,10 @@ - + TOC elem should not contain Sub kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 TOC elem contains Sub kid @@ -2346,10 +2346,10 @@ - + TOC elem should not contain Lbl kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 TOC elem contains Lbl kid @@ -2358,10 +2358,10 @@ - + TOC elem should not contain Em kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 TOC elem contains Em kid @@ -2370,10 +2370,10 @@ - + TOC elem should not contain Strong kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 TOC elem contains Strong kid @@ -2382,10 +2382,10 @@ - + TOC elem should not contain Span kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 TOC elem contains Span kid @@ -2394,10 +2394,10 @@ - + TOC elem should not contain Quote kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 TOC elem contains Quote kid @@ -2406,10 +2406,10 @@ - + TOC elem should not contain Link kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 TOC elem contains Link kid @@ -2418,10 +2418,10 @@ - + TOC elem should not contain Reference kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 TOC elem contains Reference kid @@ -2430,10 +2430,10 @@ - + TOC elem should not contain Annot kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 TOC elem contains Annot kid @@ -2442,10 +2442,10 @@ - + TOC elem should not contain Form kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 TOC elem contains Form kid @@ -2454,10 +2454,10 @@ - + TOC elem should not contain Ruby kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 TOC elem contains Ruby kid @@ -2466,10 +2466,10 @@ - + TOC elem should not contain RB kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TOC elem contains RB kid @@ -2478,10 +2478,10 @@ - + TOC elem should not contain RT kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TOC elem contains RT kid @@ -2490,10 +2490,10 @@ - + TOC elem should not contain RP kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TOC elem contains RP kid @@ -2502,10 +2502,10 @@ - + TOC elem should not contain Warichu kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 TOC elem contains Warichu kid @@ -2514,10 +2514,10 @@ - + TOC elem should not contain WT kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TOC elem contains WT kid @@ -2526,10 +2526,10 @@ - + TOC elem should not contain WP kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TOC elem contains WP kid @@ -2538,10 +2538,10 @@ - + TOC elem should not contain FENote kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 TOC elem contains FENote kid @@ -2550,10 +2550,10 @@ - + TOC elem should not contain Index kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 TOC elem contains Index kid @@ -2562,10 +2562,10 @@ - + TOC elem should not contain L kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 TOC elem contains L kid @@ -2574,10 +2574,10 @@ - + TOC elem should not contain LI kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TOC elem contains LI kid @@ -2586,10 +2586,10 @@ - + TOC elem should not contain LBody kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TOC elem contains LBody kid @@ -2598,10 +2598,10 @@ - + TOC elem should not contain BibEntry kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 TOC elem contains BibEntry kid @@ -2610,10 +2610,10 @@ - + TOC elem should not contain Table kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 TOC elem contains Table kid @@ -2622,10 +2622,10 @@ - + TOC elem should not contain TR kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 TOC elem contains TR kid @@ -2634,10 +2634,10 @@ - + TOC elem should not contain TH kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TOC elem contains TH kid @@ -2646,10 +2646,10 @@ - + TOC elem should not contain TD kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TOC elem contains TD kid @@ -2658,10 +2658,10 @@ - + TOC elem should not contain THead kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TOC elem contains THead kid @@ -2670,10 +2670,10 @@ - + TOC elem should not contain TBody kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TOC elem contains TBody kid @@ -2682,10 +2682,10 @@ - + TOC elem should not contain TFoot kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TOC elem contains TFoot kid @@ -2694,10 +2694,10 @@ - + TOC elem should not contain Caption kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TOC elem contains Caption kid @@ -2706,10 +2706,10 @@ - + TOC elem should not contain Figure kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 TOC elem contains Figure kid @@ -2718,10 +2718,10 @@ - + TOC elem should not contain Formula kid - (standardType != 'TOC') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 TOC elem contains Formula kid @@ -2730,10 +2730,10 @@ - + TOC elem should not contain content item kid - (standardType != 'TOC') || (hasContentItems == false) + hasContentItems == false TOC elem contains content item kid @@ -2742,10 +2742,10 @@ - + TOCI elem should not contain Document kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TOCI elem contains Document kid @@ -2754,10 +2754,10 @@ - + TOCI elem should not contain DocumentFragment kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 TOCI elem contains DocumentFragment kid @@ -2766,10 +2766,10 @@ - + TOCI elem should not contain Part kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TOCI elem contains Part kid @@ -2778,10 +2778,10 @@ - + TOCI elem should not contain Art kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 TOCI elem contains Art kid @@ -2790,10 +2790,10 @@ - + TOCI elem should not contain Sect kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 TOCI elem contains Sect kid @@ -2802,10 +2802,10 @@ - + TOCI elem should not contain TOCI kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TOCI elem contains TOCI kid @@ -2814,10 +2814,10 @@ - + TOCI elem should not contain Aside kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 TOCI elem contains Aside kid @@ -2826,10 +2826,10 @@ - + TOCI elem should not contain BlockQuote kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TOCI elem contains BlockQuote kid @@ -2838,10 +2838,10 @@ - + TOCI elem should not contain Note kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 TOCI elem contains Note kid @@ -2850,10 +2850,10 @@ - + TOCI elem should not contain Code kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 TOCI elem contains Code kid @@ -2862,10 +2862,10 @@ - + TOCI elem should not contain Hn kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 TOCI elem contains Hn kid @@ -2874,10 +2874,10 @@ - + TOCI elem should not contain H kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 TOCI elem contains H kid @@ -2886,10 +2886,10 @@ - + TOCI elem should not contain Title kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 TOCI elem contains Title kid @@ -2898,10 +2898,10 @@ - + TOCI elem should not contain Sub kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 TOCI elem contains Sub kid @@ -2910,10 +2910,10 @@ - + TOCI elem should not contain Em kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 TOCI elem contains Em kid @@ -2922,10 +2922,10 @@ - + TOCI elem should not contain Strong kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 TOCI elem contains Strong kid @@ -2934,10 +2934,10 @@ - + TOCI elem should not contain Span kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 TOCI elem contains Span kid @@ -2946,10 +2946,10 @@ - + TOCI elem should not contain Quote kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 TOCI elem contains Quote kid @@ -2958,10 +2958,10 @@ - + TOCI elem should not contain Link kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 TOCI elem contains Link kid @@ -2970,10 +2970,10 @@ - + TOCI elem should not contain Annot kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 TOCI elem contains Annot kid @@ -2982,10 +2982,10 @@ - + TOCI elem should not contain Form kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 TOCI elem contains Form kid @@ -2994,10 +2994,10 @@ - + TOCI elem should not contain Ruby kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 TOCI elem contains Ruby kid @@ -3006,10 +3006,10 @@ - + TOCI elem should not contain RB kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TOCI elem contains RB kid @@ -3018,10 +3018,10 @@ - + TOCI elem should not contain RT kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TOCI elem contains RT kid @@ -3030,10 +3030,10 @@ - + TOCI elem should not contain RP kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TOCI elem contains RP kid @@ -3042,10 +3042,10 @@ - + TOCI elem should not contain Warichu kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 TOCI elem contains Warichu kid @@ -3054,10 +3054,10 @@ - + TOCI elem should not contain WT kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TOCI elem contains WT kid @@ -3066,10 +3066,10 @@ - + TOCI elem should not contain WP kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TOCI elem contains WP kid @@ -3078,10 +3078,10 @@ - + TOCI elem should not contain FENote kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 TOCI elem contains FENote kid @@ -3090,10 +3090,10 @@ - + TOCI elem should not contain Index kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 TOCI elem contains Index kid @@ -3102,10 +3102,10 @@ - + TOCI elem should not contain L kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 TOCI elem contains L kid @@ -3114,10 +3114,10 @@ - + TOCI elem should not contain LI kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TOCI elem contains LI kid @@ -3126,10 +3126,10 @@ - + TOCI elem should not contain LBody kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TOCI elem contains LBody kid @@ -3138,10 +3138,10 @@ - + TOCI elem should not contain BibEntry kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 TOCI elem contains BibEntry kid @@ -3150,10 +3150,10 @@ - + TOCI elem should not contain Table kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 TOCI elem contains Table kid @@ -3162,10 +3162,10 @@ - + TOCI elem should not contain TR kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 TOCI elem contains TR kid @@ -3174,10 +3174,10 @@ - + TOCI elem should not contain TH kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TOCI elem contains TH kid @@ -3186,10 +3186,10 @@ - + TOCI elem should not contain TD kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TOCI elem contains TD kid @@ -3198,10 +3198,10 @@ - + TOCI elem should not contain THead kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TOCI elem contains THead kid @@ -3210,10 +3210,10 @@ - + TOCI elem should not contain TBody kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TOCI elem contains TBody kid @@ -3222,10 +3222,10 @@ - + TOCI elem should not contain TFoot kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TOCI elem contains TFoot kid @@ -3234,10 +3234,10 @@ - + TOCI elem should not contain Caption kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TOCI elem contains Caption kid @@ -3246,10 +3246,10 @@ - + TOCI elem should not contain Figure kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 TOCI elem contains Figure kid @@ -3258,10 +3258,10 @@ - + TOCI elem should not contain Formula kid - (standardType != 'TOCI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 TOCI elem contains Formula kid @@ -3270,10 +3270,10 @@ - + TOCI elem should not contain content item kid - (standardType != 'TOCI') || (hasContentItems == false) + hasContentItems == false TOCI elem contains content item kid @@ -3282,10 +3282,10 @@ - + Aside elem should not contain TOCI kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Aside elem contains TOCI kid @@ -3294,10 +3294,10 @@ - + Aside elem should not contain Aside kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Aside elem contains Aside kid @@ -3306,10 +3306,10 @@ - + Aside elem should not contain BlockQuote kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Aside elem contains BlockQuote kid @@ -3318,10 +3318,10 @@ - + Aside elem should contain zero or one H kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Aside contains more than one H kid @@ -3330,10 +3330,10 @@ - + Aside elem should not contain Title kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Aside elem contains Title kid @@ -3342,10 +3342,10 @@ - + Aside elem should not contain Sub kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Aside elem contains Sub kid @@ -3354,10 +3354,10 @@ - + Aside elem should not contain Em kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 Aside elem contains Em kid @@ -3366,10 +3366,10 @@ - + Aside elem should not contain Strong kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 Aside elem contains Strong kid @@ -3378,10 +3378,10 @@ - + Aside elem should not contain Span kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Aside elem contains Span kid @@ -3390,10 +3390,10 @@ - + Aside elem should not contain Quote kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Aside elem contains Quote kid @@ -3402,10 +3402,10 @@ - + Aside elem should not contain Ruby kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Aside elem contains Ruby kid @@ -3414,10 +3414,10 @@ - + Aside elem should not contain RB kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Aside elem contains RB kid @@ -3426,10 +3426,10 @@ - + Aside elem should not contain RT kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Aside elem contains RT kid @@ -3438,10 +3438,10 @@ - + Aside elem should not contain RP kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Aside elem contains RP kid @@ -3450,10 +3450,10 @@ - + Aside elem should not contain Warichu kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Aside elem contains Warichu kid @@ -3462,10 +3462,10 @@ - + Aside elem should not contain WT kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Aside elem contains WT kid @@ -3474,10 +3474,10 @@ - + Aside elem should not contain WP kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Aside elem contains WP kid @@ -3486,10 +3486,10 @@ - + Aside elem should not contain LI kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Aside elem contains LI kid @@ -3498,10 +3498,10 @@ - + Aside elem should not contain LBody kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Aside elem contains LBody kid @@ -3510,10 +3510,10 @@ - + Aside elem should not contain BibEntry kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Aside elem contains BibEntry kid @@ -3522,10 +3522,10 @@ - + Aside elem should not contain TR kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Aside elem contains TR kid @@ -3534,10 +3534,10 @@ - + Aside elem should not contain TH kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Aside elem contains TH kid @@ -3546,10 +3546,10 @@ - + Aside elem should not contain TD kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Aside elem contains TD kid @@ -3558,10 +3558,10 @@ - + Aside elem should not contain THead kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Aside elem contains THead kid @@ -3570,10 +3570,10 @@ - + Aside elem should not contain TBody kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Aside elem contains TBody kid @@ -3582,10 +3582,10 @@ - + Aside elem should not contain TFoot kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Aside elem contains TFoot kid @@ -3594,10 +3594,10 @@ - + Aside elem should contain zero or one Caption kid - (standardType != 'Aside') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Aside contains more than one Caption kid @@ -3606,10 +3606,10 @@ - + BlockQuote elem should not contain TOCI kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 BlockQuote elem contains TOCI kid @@ -3618,10 +3618,10 @@ - + BlockQuote elem should not contain Aside kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 BlockQuote elem contains Aside kid @@ -3630,10 +3630,10 @@ - + BlockQuote elem should not contain BlockQuote kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 BlockQuote elem contains BlockQuote kid @@ -3642,10 +3642,10 @@ - + BlockQuote elem should contain zero or one H kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 BlockQuote contains more than one H kid @@ -3654,10 +3654,10 @@ - + BlockQuote elem should not contain Title kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 BlockQuote elem contains Title kid @@ -3666,10 +3666,10 @@ - + BlockQuote elem should not contain Sub kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 BlockQuote elem contains Sub kid @@ -3678,10 +3678,10 @@ - + BlockQuote elem should not contain Em kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 BlockQuote elem contains Em kid @@ -3690,10 +3690,10 @@ - + BlockQuote elem should not contain Strong kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 BlockQuote elem contains Strong kid @@ -3702,10 +3702,10 @@ - + BlockQuote elem should not contain Span kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 BlockQuote elem contains Span kid @@ -3714,10 +3714,10 @@ - + BlockQuote elem should not contain Quote kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 BlockQuote elem contains Quote kid @@ -3726,10 +3726,10 @@ - + BlockQuote elem should not contain Ruby kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 BlockQuote elem contains Ruby kid @@ -3738,10 +3738,10 @@ - + BlockQuote elem should not contain RB kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 BlockQuote elem contains RB kid @@ -3750,10 +3750,10 @@ - + BlockQuote elem should not contain RT kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 BlockQuote elem contains RT kid @@ -3762,10 +3762,10 @@ - + BlockQuote elem should not contain RP kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 BlockQuote elem contains RP kid @@ -3774,10 +3774,10 @@ - + BlockQuote elem should not contain Warichu kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 BlockQuote elem contains Warichu kid @@ -3786,10 +3786,10 @@ - + BlockQuote elem should not contain WT kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 BlockQuote elem contains WT kid @@ -3798,10 +3798,10 @@ - + BlockQuote elem should not contain WP kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 BlockQuote elem contains WP kid @@ -3810,10 +3810,10 @@ - + BlockQuote elem should not contain LI kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 BlockQuote elem contains LI kid @@ -3822,10 +3822,10 @@ - + BlockQuote elem should not contain LBody kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 BlockQuote elem contains LBody kid @@ -3834,10 +3834,10 @@ - + BlockQuote elem should not contain BibEntry kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 BlockQuote elem contains BibEntry kid @@ -3846,10 +3846,10 @@ - + BlockQuote elem should not contain TR kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 BlockQuote elem contains TR kid @@ -3858,10 +3858,10 @@ - + BlockQuote elem should not contain TH kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 BlockQuote elem contains TH kid @@ -3870,10 +3870,10 @@ - + BlockQuote elem should not contain TD kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 BlockQuote elem contains TD kid @@ -3882,10 +3882,10 @@ - + BlockQuote elem should not contain THead kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 BlockQuote elem contains THead kid @@ -3894,10 +3894,10 @@ - + BlockQuote elem should not contain TBody kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 BlockQuote elem contains TBody kid @@ -3906,10 +3906,10 @@ - + BlockQuote elem should not contain TFoot kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 BlockQuote elem contains TFoot kid @@ -3918,10 +3918,10 @@ - + BlockQuote elem should contain zero or one Caption kid - (standardType != 'BlockQuote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 BlockQuote contains more than one Caption kid @@ -3930,10 +3930,10 @@ - + Private elem should contain zero or one H kid - (standardType != 'Private') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Private contains more than one H kid @@ -3942,10 +3942,10 @@ - + Private elem should contain zero or one Caption kid - (standardType != 'Private') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Private contains more than one Caption kid @@ -3954,10 +3954,10 @@ - + Title elem should not contain Document kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Title elem contains Document kid @@ -3966,10 +3966,10 @@ - + Title elem should not contain DocumentFragment kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Title elem contains DocumentFragment kid @@ -3978,10 +3978,10 @@ - + Title elem should not contain Art kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Title elem contains Art kid @@ -3990,10 +3990,10 @@ - + Title elem should not contain Sect kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Title elem contains Sect kid @@ -4002,10 +4002,10 @@ - + Title elem should not contain TOC kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Title elem contains TOC kid @@ -4014,10 +4014,10 @@ - + Title elem should not contain TOCI kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Title elem contains TOCI kid @@ -4026,10 +4026,10 @@ - + Title elem should not contain Hn kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Title elem contains Hn kid @@ -4038,10 +4038,10 @@ - + Title elem should not contain H kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Title elem contains H kid @@ -4050,10 +4050,10 @@ - + Title elem should not contain Title kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Title elem contains Title kid @@ -4062,10 +4062,10 @@ - + Title elem should not contain Sub kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Title elem contains Sub kid @@ -4074,10 +4074,10 @@ - + Title elem should not contain RB kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Title elem contains RB kid @@ -4086,10 +4086,10 @@ - + Title elem should not contain RT kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Title elem contains RT kid @@ -4098,10 +4098,10 @@ - + Title elem should not contain RP kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Title elem contains RP kid @@ -4110,10 +4110,10 @@ - + Title elem should not contain WT kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Title elem contains WT kid @@ -4122,10 +4122,10 @@ - + Title elem should not contain WP kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Title elem contains WP kid @@ -4134,10 +4134,10 @@ - + Title elem should not contain Index kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Title elem contains Index kid @@ -4146,10 +4146,10 @@ - + Title elem should not contain LI kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Title elem contains LI kid @@ -4158,10 +4158,10 @@ - + Title elem should not contain LBody kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Title elem contains LBody kid @@ -4170,10 +4170,10 @@ - + Title elem should not contain TR kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Title elem contains TR kid @@ -4182,10 +4182,10 @@ - + Title elem should not contain TH kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Title elem contains TH kid @@ -4194,10 +4194,10 @@ - + Title elem should not contain TD kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Title elem contains TD kid @@ -4206,10 +4206,10 @@ - + Title elem should not contain THead kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Title elem contains THead kid @@ -4218,10 +4218,10 @@ - + Title elem should not contain TBody kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Title elem contains TBody kid @@ -4230,10 +4230,10 @@ - + Title elem should not contain TFoot kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Title elem contains TFoot kid @@ -4242,10 +4242,10 @@ - + Title elem should contain zero or one Caption kid - (standardType != 'Title') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Title contains more than one Caption kid @@ -4254,10 +4254,10 @@ - + Sub elem should not contain Document kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Sub elem contains Document kid @@ -4266,10 +4266,10 @@ - + Sub elem should not contain DocumentFragment kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Sub elem contains DocumentFragment kid @@ -4278,10 +4278,10 @@ - + Sub elem should not contain Part kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Sub elem contains Part kid @@ -4290,10 +4290,10 @@ - + Sub elem should not contain Art kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Sub elem contains Art kid @@ -4302,10 +4302,10 @@ - + Sub elem should not contain Div kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Sub elem contains Div kid @@ -4314,10 +4314,10 @@ - + Sub elem should not contain Sect kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Sub elem contains Sect kid @@ -4326,10 +4326,10 @@ - + Sub elem should not contain TOC kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Sub elem contains TOC kid @@ -4338,10 +4338,10 @@ - + Sub elem should not contain TOCI kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Sub elem contains TOCI kid @@ -4350,10 +4350,10 @@ - + Sub elem should not contain Aside kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Sub elem contains Aside kid @@ -4362,10 +4362,10 @@ - + Sub elem should not contain BlockQuote kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Sub elem contains BlockQuote kid @@ -4374,10 +4374,10 @@ - + Sub elem should not contain P kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Sub elem contains P kid @@ -4386,10 +4386,10 @@ - + Sub elem should not contain Hn kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Sub elem contains Hn kid @@ -4398,10 +4398,10 @@ - + Sub elem should not contain H kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Sub elem contains H kid @@ -4410,10 +4410,10 @@ - + Sub elem should not contain Title kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Sub elem contains Title kid @@ -4422,10 +4422,10 @@ - + Sub elem should not contain Sub kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Sub elem contains Sub kid @@ -4434,10 +4434,10 @@ - + Sub elem should not contain RB kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Sub elem contains RB kid @@ -4446,10 +4446,10 @@ - + Sub elem should not contain RT kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Sub elem contains RT kid @@ -4458,10 +4458,10 @@ - + Sub elem should not contain RP kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Sub elem contains RP kid @@ -4470,10 +4470,10 @@ - + Sub elem should not contain WT kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Sub elem contains WT kid @@ -4482,10 +4482,10 @@ - + Sub elem should not contain WP kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Sub elem contains WP kid @@ -4494,10 +4494,10 @@ - + Sub elem should not contain Index kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Sub elem contains Index kid @@ -4506,10 +4506,10 @@ - + Sub elem should not contain LI kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Sub elem contains LI kid @@ -4518,10 +4518,10 @@ - + Sub elem should not contain LBody kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Sub elem contains LBody kid @@ -4530,10 +4530,10 @@ - + Sub elem should not contain Table kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Sub elem contains Table kid @@ -4542,10 +4542,10 @@ - + Sub elem should not contain TR kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Sub elem contains TR kid @@ -4554,10 +4554,10 @@ - + Sub elem should not contain TH kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Sub elem contains TH kid @@ -4566,10 +4566,10 @@ - + Sub elem should not contain TD kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Sub elem contains TD kid @@ -4578,10 +4578,10 @@ - + Sub elem should not contain THead kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Sub elem contains THead kid @@ -4590,10 +4590,10 @@ - + Sub elem should not contain TBody kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Sub elem contains TBody kid @@ -4602,10 +4602,10 @@ - + Sub elem should not contain TFoot kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Sub elem contains TFoot kid @@ -4614,10 +4614,10 @@ - + Sub elem should not contain Caption kid - (standardType != 'Sub') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Sub elem contains Caption kid @@ -4626,10 +4626,10 @@ - + P elem should not contain Document kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 P elem contains Document kid @@ -4638,10 +4638,10 @@ - + P elem should not contain DocumentFragment kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 P elem contains DocumentFragment kid @@ -4650,10 +4650,10 @@ - + P elem should not contain Part kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 P elem contains Part kid @@ -4662,10 +4662,10 @@ - + P elem should not contain Art kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 P elem contains Art kid @@ -4674,10 +4674,10 @@ - + P elem should not contain Div kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 P elem contains Div kid @@ -4686,10 +4686,10 @@ - + P elem should not contain Sect kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 P elem contains Sect kid @@ -4698,10 +4698,10 @@ - + P elem should not contain TOC kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 P elem contains TOC kid @@ -4710,10 +4710,10 @@ - + P elem should not contain TOCI kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 P elem contains TOCI kid @@ -4722,10 +4722,10 @@ - + P elem should not contain Aside kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 P elem contains Aside kid @@ -4734,10 +4734,10 @@ - + P elem should not contain BlockQuote kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 P elem contains BlockQuote kid @@ -4746,10 +4746,10 @@ - + P elem should not contain P kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 P elem contains P kid @@ -4758,10 +4758,10 @@ - + P elem should not contain Hn kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 P elem contains Hn kid @@ -4770,10 +4770,10 @@ - + P elem should not contain H kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 P elem contains H kid @@ -4782,10 +4782,10 @@ - + P elem should not contain Title kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 P elem contains Title kid @@ -4794,10 +4794,10 @@ - + P elem should not contain RB kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 P elem contains RB kid @@ -4806,10 +4806,10 @@ - + P elem should not contain RT kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 P elem contains RT kid @@ -4818,10 +4818,10 @@ - + P elem should not contain RP kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 P elem contains RP kid @@ -4830,10 +4830,10 @@ - + P elem should not contain WT kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 P elem contains WT kid @@ -4842,10 +4842,10 @@ - + P elem should not contain WP kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 P elem contains WP kid @@ -4854,10 +4854,10 @@ - + P elem should not contain Index kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 P elem contains Index kid @@ -4866,10 +4866,10 @@ - + P elem should not contain LI kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 P elem contains LI kid @@ -4878,10 +4878,10 @@ - + P elem should not contain LBody kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 P elem contains LBody kid @@ -4890,10 +4890,10 @@ - + P elem should not contain Table kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 P elem contains Table kid @@ -4902,10 +4902,10 @@ - + P elem should not contain TR kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 P elem contains TR kid @@ -4914,10 +4914,10 @@ - + P elem should not contain TH kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 P elem contains TH kid @@ -4926,10 +4926,10 @@ - + P elem should not contain TD kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 P elem contains TD kid @@ -4938,10 +4938,10 @@ - + P elem should not contain THead kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 P elem contains THead kid @@ -4950,10 +4950,10 @@ - + P elem should not contain TBody kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 P elem contains TBody kid @@ -4962,10 +4962,10 @@ - + P elem should not contain TFoot kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 P elem contains TFoot kid @@ -4974,10 +4974,10 @@ - + P elem should not contain Caption kid - (standardType != 'P') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 P elem contains Caption kid @@ -4986,10 +4986,10 @@ - + Note elem should not contain Document kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Note elem contains Document kid @@ -4998,10 +4998,10 @@ - + Note elem should not contain TOC kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Note elem contains TOC kid @@ -5010,10 +5010,10 @@ - + Note elem should not contain TOCI kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Note elem contains TOCI kid @@ -5022,10 +5022,10 @@ - + Note elem should not contain Hn kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Note elem contains Hn kid @@ -5034,10 +5034,10 @@ - + Note elem should not contain H kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Note elem contains H kid @@ -5046,10 +5046,10 @@ - + Note elem should not contain Title kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Note elem contains Title kid @@ -5058,10 +5058,10 @@ - + Note elem should not contain RB kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Note elem contains RB kid @@ -5070,10 +5070,10 @@ - + Note elem should not contain RT kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Note elem contains RT kid @@ -5082,10 +5082,10 @@ - + Note elem should not contain RP kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Note elem contains RP kid @@ -5094,10 +5094,10 @@ - + Note elem should not contain WT kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Note elem contains WT kid @@ -5106,10 +5106,10 @@ - + Note elem should not contain WP kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Note elem contains WP kid @@ -5118,10 +5118,10 @@ - + Note elem should not contain LI kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Note elem contains LI kid @@ -5130,10 +5130,10 @@ - + Note elem should not contain LBody kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Note elem contains LBody kid @@ -5142,10 +5142,10 @@ - + Note elem should not contain TR kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Note elem contains TR kid @@ -5154,10 +5154,10 @@ - + Note elem should not contain TH kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Note elem contains TH kid @@ -5166,10 +5166,10 @@ - + Note elem should not contain TD kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Note elem contains TD kid @@ -5178,10 +5178,10 @@ - + Note elem should not contain THead kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Note elem contains THead kid @@ -5190,10 +5190,10 @@ - + Note elem should not contain TBody kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Note elem contains TBody kid @@ -5202,10 +5202,10 @@ - + Note elem should not contain TFoot kid - (standardType != 'Note') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Note elem contains TFoot kid @@ -5214,10 +5214,10 @@ - + Code elem should not contain Document kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Code elem contains Document kid @@ -5226,10 +5226,10 @@ - + Code elem should not contain Art kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Code elem contains Art kid @@ -5238,10 +5238,10 @@ - + Code elem should not contain Sect kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Code elem contains Sect kid @@ -5250,10 +5250,10 @@ - + Code elem should not contain TOC kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Code elem contains TOC kid @@ -5262,10 +5262,10 @@ - + Code elem should not contain TOCI kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Code elem contains TOCI kid @@ -5274,10 +5274,10 @@ - + Code elem should not contain Aside kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Code elem contains Aside kid @@ -5286,10 +5286,10 @@ - + Code elem should not contain BlockQuote kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Code elem contains BlockQuote kid @@ -5298,10 +5298,10 @@ - + Code elem should not contain P kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Code elem contains P kid @@ -5310,10 +5310,10 @@ - + Code elem should not contain Code kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Code elem contains Code kid @@ -5322,10 +5322,10 @@ - + Code elem should not contain Hn kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Code elem contains Hn kid @@ -5334,10 +5334,10 @@ - + Code elem should not contain H kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Code elem contains H kid @@ -5346,10 +5346,10 @@ - + Code elem should not contain Title kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Code elem contains Title kid @@ -5358,10 +5358,10 @@ - + Code elem should not contain Sub kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Code elem contains Sub kid @@ -5370,10 +5370,10 @@ - + Code elem should not contain Lbl kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Code elem contains Lbl kid @@ -5382,10 +5382,10 @@ - + Code elem should not contain Quote kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Code elem contains Quote kid @@ -5394,10 +5394,10 @@ - + Code elem should not contain Form kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Code elem contains Form kid @@ -5406,10 +5406,10 @@ - + Code elem should not contain Ruby kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Code elem contains Ruby kid @@ -5418,10 +5418,10 @@ - + Code elem should not contain RB kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Code elem contains RB kid @@ -5430,10 +5430,10 @@ - + Code elem should not contain RT kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Code elem contains RT kid @@ -5442,10 +5442,10 @@ - + Code elem should not contain RP kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Code elem contains RP kid @@ -5454,10 +5454,10 @@ - + Code elem should not contain Warichu kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Code elem contains Warichu kid @@ -5466,10 +5466,10 @@ - + Code elem should not contain WT kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Code elem contains WT kid @@ -5478,10 +5478,10 @@ - + Code elem should not contain WP kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Code elem contains WP kid @@ -5490,10 +5490,10 @@ - + Code elem should not contain Index kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Code elem contains Index kid @@ -5502,10 +5502,10 @@ - + Code elem should not contain L kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Code elem contains L kid @@ -5514,10 +5514,10 @@ - + Code elem should not contain LI kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Code elem contains LI kid @@ -5526,10 +5526,10 @@ - + Code elem should not contain LBody kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Code elem contains LBody kid @@ -5538,10 +5538,10 @@ - + Code elem should not contain Table kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Code elem contains Table kid @@ -5550,10 +5550,10 @@ - + Code elem should not contain TR kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Code elem contains TR kid @@ -5562,10 +5562,10 @@ - + Code elem should not contain TH kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Code elem contains TH kid @@ -5574,10 +5574,10 @@ - + Code elem should not contain TD kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Code elem contains TD kid @@ -5586,10 +5586,10 @@ - + Code elem should not contain THead kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Code elem contains THead kid @@ -5598,10 +5598,10 @@ - + Code elem should not contain TBody kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Code elem contains TBody kid @@ -5610,10 +5610,10 @@ - + Code elem should not contain TFoot kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Code elem contains TFoot kid @@ -5622,10 +5622,10 @@ - + Code elem should not contain Caption kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Code elem contains Caption kid @@ -5634,10 +5634,10 @@ - + Code elem should not contain Figure kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 Code elem contains Figure kid @@ -5646,10 +5646,10 @@ - + Code elem should not contain Formula kid - (standardType != 'Code') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 Code elem contains Formula kid @@ -6030,10 +6030,10 @@ - + H elem should not contain Document kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 H elem contains Document kid @@ -6042,10 +6042,10 @@ - + H elem should not contain DocumentFragment kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 H elem contains DocumentFragment kid @@ -6054,10 +6054,10 @@ - + H elem should not contain Part kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 H elem contains Part kid @@ -6066,10 +6066,10 @@ - + H elem should contain zero or one Art kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1 H contains more than one Art kid @@ -6078,10 +6078,10 @@ - + H elem should not contain Div kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 H elem contains Div kid @@ -6090,10 +6090,10 @@ - + H elem should contain zero or one Sect kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1 H contains more than one Sect kid @@ -6102,10 +6102,10 @@ - + H elem should not contain TOC kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 H elem contains TOC kid @@ -6114,10 +6114,10 @@ - + H elem should not contain TOCI kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 H elem contains TOCI kid @@ -6126,10 +6126,10 @@ - + H elem should not contain Aside kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 H elem contains Aside kid @@ -6138,10 +6138,10 @@ - + H elem should not contain BlockQuote kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 H elem contains BlockQuote kid @@ -6150,10 +6150,10 @@ - + H elem should not contain P kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 H elem contains P kid @@ -6162,10 +6162,10 @@ - + H elem should not contain Hn kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 H elem contains Hn kid @@ -6174,10 +6174,10 @@ - + H elem should not contain H kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 H elem contains H kid @@ -6186,10 +6186,10 @@ - + H elem should not contain Title kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 H elem contains Title kid @@ -6198,10 +6198,10 @@ - + H elem should not contain RB kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 H elem contains RB kid @@ -6210,10 +6210,10 @@ - + H elem should not contain RT kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 H elem contains RT kid @@ -6222,10 +6222,10 @@ - + H elem should not contain RP kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 H elem contains RP kid @@ -6234,10 +6234,10 @@ - + H elem should not contain WT kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 H elem contains WT kid @@ -6246,10 +6246,10 @@ - + H elem should not contain WP kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 H elem contains WP kid @@ -6258,10 +6258,10 @@ - + H elem should not contain Index kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 H elem contains Index kid @@ -6270,10 +6270,10 @@ - + H elem should not contain L kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 H elem contains L kid @@ -6282,10 +6282,10 @@ - + H elem should not contain LI kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 H elem contains LI kid @@ -6294,10 +6294,10 @@ - + H elem should not contain LBody kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 H elem contains LBody kid @@ -6306,10 +6306,10 @@ - + H elem should not contain Table kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 H elem contains Table kid @@ -6318,10 +6318,10 @@ - + H elem should not contain TR kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 H elem contains TR kid @@ -6330,10 +6330,10 @@ - + H elem should not contain TH kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 H elem contains TH kid @@ -6342,10 +6342,10 @@ - + H elem should not contain TD kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 H elem contains TD kid @@ -6354,10 +6354,10 @@ - + H elem should not contain THead kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 H elem contains THead kid @@ -6366,10 +6366,10 @@ - + H elem should not contain TBody kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 H elem contains TBody kid @@ -6378,10 +6378,10 @@ - + H elem should not contain TFoot kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 H elem contains TFoot kid @@ -6390,10 +6390,10 @@ - + H elem should not contain Caption kid - (standardType != 'H') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 H elem contains Caption kid @@ -6402,10 +6402,10 @@ - + Lbl elem should not contain Document kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Lbl elem contains Document kid @@ -6414,10 +6414,10 @@ - + Lbl elem should not contain DocumentFragment kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Lbl elem contains DocumentFragment kid @@ -6426,10 +6426,10 @@ - + Lbl elem should not contain Part kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Lbl elem contains Part kid @@ -6438,10 +6438,10 @@ - + Lbl elem should not contain Art kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Lbl elem contains Art kid @@ -6450,10 +6450,10 @@ - + Lbl elem should not contain Div kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Lbl elem contains Div kid @@ -6462,10 +6462,10 @@ - + Lbl elem should not contain Sect kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Lbl elem contains Sect kid @@ -6474,10 +6474,10 @@ - + Lbl elem should not contain TOC kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Lbl elem contains TOC kid @@ -6486,10 +6486,10 @@ - + Lbl elem should not contain TOCI kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Lbl elem contains TOCI kid @@ -6498,10 +6498,10 @@ - + Lbl elem should not contain Aside kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Lbl elem contains Aside kid @@ -6510,10 +6510,10 @@ - + Lbl elem should not contain BlockQuote kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Lbl elem contains BlockQuote kid @@ -6522,10 +6522,10 @@ - + Lbl elem should not contain P kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Lbl elem contains P kid @@ -6534,10 +6534,10 @@ - + Lbl elem should not contain Hn kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Lbl elem contains Hn kid @@ -6546,10 +6546,10 @@ - + Lbl elem should not contain H kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Lbl elem contains H kid @@ -6558,10 +6558,10 @@ - + Lbl elem should not contain Title kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Lbl elem contains Title kid @@ -6570,10 +6570,10 @@ - + Lbl elem should not contain Lbl kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Lbl elem contains Lbl kid @@ -6582,10 +6582,10 @@ - + Lbl elem should not contain RB kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Lbl elem contains RB kid @@ -6594,10 +6594,10 @@ - + Lbl elem should not contain RT kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Lbl elem contains RT kid @@ -6606,10 +6606,10 @@ - + Lbl elem should not contain RP kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Lbl elem contains RP kid @@ -6618,10 +6618,10 @@ - + Lbl elem should not contain WT kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Lbl elem contains WT kid @@ -6630,10 +6630,10 @@ - + Lbl elem should not contain WP kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Lbl elem contains WP kid @@ -6642,10 +6642,10 @@ - + Lbl elem should not contain Index kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Lbl elem contains Index kid @@ -6654,10 +6654,10 @@ - + Lbl elem should not contain L kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Lbl elem contains L kid @@ -6666,10 +6666,10 @@ - + Lbl elem should not contain LI kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Lbl elem contains LI kid @@ -6678,10 +6678,10 @@ - + Lbl elem should not contain LBody kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Lbl elem contains LBody kid @@ -6690,10 +6690,10 @@ - + Lbl elem should not contain Table kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Lbl elem contains Table kid @@ -6702,10 +6702,10 @@ - + Lbl elem should not contain TR kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Lbl elem contains TR kid @@ -6714,10 +6714,10 @@ - + Lbl elem should not contain TH kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Lbl elem contains TH kid @@ -6726,10 +6726,10 @@ - + Lbl elem should not contain TD kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Lbl elem contains TD kid @@ -6738,10 +6738,10 @@ - + Lbl elem should not contain THead kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Lbl elem contains THead kid @@ -6750,10 +6750,10 @@ - + Lbl elem should not contain TBody kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Lbl elem contains TBody kid @@ -6762,10 +6762,10 @@ - + Lbl elem should not contain TFoot kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Lbl elem contains TFoot kid @@ -6774,10 +6774,10 @@ - + Lbl elem should not contain Caption kid - (standardType != 'Lbl') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Lbl elem contains Caption kid @@ -6786,10 +6786,10 @@ - + Em elem should not contain Document kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Em elem contains Document kid @@ -6798,10 +6798,10 @@ - + Em elem should not contain DocumentFragment kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Em elem contains DocumentFragment kid @@ -6810,10 +6810,10 @@ - + Em elem should not contain Part kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Em elem contains Part kid @@ -6822,10 +6822,10 @@ - + Em elem should not contain Art kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Em elem contains Art kid @@ -6834,10 +6834,10 @@ - + Em elem should not contain Div kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Em elem contains Div kid @@ -6846,10 +6846,10 @@ - + Em elem should not contain Sect kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Em elem contains Sect kid @@ -6858,10 +6858,10 @@ - + Em elem should not contain TOC kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Em elem contains TOC kid @@ -6870,10 +6870,10 @@ - + Em elem should not contain TOCI kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Em elem contains TOCI kid @@ -6882,10 +6882,10 @@ - + Em elem should not contain Aside kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Em elem contains Aside kid @@ -6894,10 +6894,10 @@ - + Em elem should not contain BlockQuote kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Em elem contains BlockQuote kid @@ -6906,10 +6906,10 @@ - + Em elem should not contain P kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Em elem contains P kid @@ -6918,10 +6918,10 @@ - + Em elem should not contain Hn kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Em elem contains Hn kid @@ -6930,10 +6930,10 @@ - + Em elem should not contain H kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Em elem contains H kid @@ -6942,10 +6942,10 @@ - + Em elem should not contain Title kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Em elem contains Title kid @@ -6954,10 +6954,10 @@ - + Em elem should not contain RB kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Em elem contains RB kid @@ -6966,10 +6966,10 @@ - + Em elem should not contain RT kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Em elem contains RT kid @@ -6978,10 +6978,10 @@ - + Em elem should not contain RP kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Em elem contains RP kid @@ -6990,10 +6990,10 @@ - + Em elem should not contain WT kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Em elem contains WT kid @@ -7002,10 +7002,10 @@ - + Em elem should not contain WP kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Em elem contains WP kid @@ -7014,10 +7014,10 @@ - + Em elem should not contain Index kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Em elem contains Index kid @@ -7026,10 +7026,10 @@ - + Em elem should not contain L kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Em elem contains L kid @@ -7038,10 +7038,10 @@ - + Em elem should not contain LI kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Em elem contains LI kid @@ -7050,10 +7050,10 @@ - + Em elem should not contain LBody kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Em elem contains LBody kid @@ -7062,10 +7062,10 @@ - + Em elem should not contain Table kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Em elem contains Table kid @@ -7074,10 +7074,10 @@ - + Em elem should not contain TR kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Em elem contains TR kid @@ -7086,10 +7086,10 @@ - + Em elem should not contain TH kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Em elem contains TH kid @@ -7098,10 +7098,10 @@ - + Em elem should not contain TD kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Em elem contains TD kid @@ -7110,10 +7110,10 @@ - + Em elem should not contain THead kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Em elem contains THead kid @@ -7122,10 +7122,10 @@ - + Em elem should not contain TBody kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Em elem contains TBody kid @@ -7134,10 +7134,10 @@ - + Em elem should not contain TFoot kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Em elem contains TFoot kid @@ -7146,10 +7146,10 @@ - + Em elem should not contain Caption kid - (standardType != 'Em') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Em elem contains Caption kid @@ -7158,10 +7158,10 @@ - + Strong elem should not contain Document kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Strong elem contains Document kid @@ -7170,10 +7170,10 @@ - + Strong elem should not contain DocumentFragment kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Strong elem contains DocumentFragment kid @@ -7182,10 +7182,10 @@ - + Strong elem should not contain Part kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Strong elem contains Part kid @@ -7194,10 +7194,10 @@ - + Strong elem should not contain Art kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Strong elem contains Art kid @@ -7206,10 +7206,10 @@ - + Strong elem should not contain Div kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Strong elem contains Div kid @@ -7218,10 +7218,10 @@ - + Strong elem should not contain Sect kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Strong elem contains Sect kid @@ -7230,10 +7230,10 @@ - + Strong elem should not contain TOC kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Strong elem contains TOC kid @@ -7242,10 +7242,10 @@ - + Strong elem should not contain TOCI kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Strong elem contains TOCI kid @@ -7254,10 +7254,10 @@ - + Strong elem should not contain Aside kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Strong elem contains Aside kid @@ -7266,10 +7266,10 @@ - + Strong elem should not contain BlockQuote kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Strong elem contains BlockQuote kid @@ -7278,10 +7278,10 @@ - + Strong elem should not contain P kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Strong elem contains P kid @@ -7290,10 +7290,10 @@ - + Strong elem should not contain Hn kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Strong elem contains Hn kid @@ -7302,10 +7302,10 @@ - + Strong elem should not contain H kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Strong elem contains H kid @@ -7314,10 +7314,10 @@ - + Strong elem should not contain Title kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Strong elem contains Title kid @@ -7326,10 +7326,10 @@ - + Strong elem should not contain RB kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Strong elem contains RB kid @@ -7338,10 +7338,10 @@ - + Strong elem should not contain RT kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Strong elem contains RT kid @@ -7350,10 +7350,10 @@ - + Strong elem should not contain RP kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Strong elem contains RP kid @@ -7362,10 +7362,10 @@ - + Strong elem should not contain WT kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Strong elem contains WT kid @@ -7374,10 +7374,10 @@ - + Strong elem should not contain WP kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Strong elem contains WP kid @@ -7386,10 +7386,10 @@ - + Strong elem should not contain Index kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Strong elem contains Index kid @@ -7398,10 +7398,10 @@ - + Strong elem should not contain L kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Strong elem contains L kid @@ -7410,10 +7410,10 @@ - + Strong elem should not contain LI kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Strong elem contains LI kid @@ -7422,10 +7422,10 @@ - + Strong elem should not contain LBody kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Strong elem contains LBody kid @@ -7434,10 +7434,10 @@ - + Strong elem should not contain Table kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Strong elem contains Table kid @@ -7446,10 +7446,10 @@ - + Strong elem should not contain TR kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Strong elem contains TR kid @@ -7458,10 +7458,10 @@ - + Strong elem should not contain TH kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Strong elem contains TH kid @@ -7470,10 +7470,10 @@ - + Strong elem should not contain TD kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Strong elem contains TD kid @@ -7482,10 +7482,10 @@ - + Strong elem should not contain THead kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Strong elem contains THead kid @@ -7494,10 +7494,10 @@ - + Strong elem should not contain TBody kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Strong elem contains TBody kid @@ -7506,10 +7506,10 @@ - + Strong elem should not contain TFoot kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Strong elem contains TFoot kid @@ -7518,10 +7518,10 @@ - + Strong elem should not contain Caption kid - (standardType != 'Strong') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Strong elem contains Caption kid @@ -7530,10 +7530,10 @@ - + Span elem should not contain Document kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Span elem contains Document kid @@ -7542,10 +7542,10 @@ - + Span elem should not contain DocumentFragment kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Span elem contains DocumentFragment kid @@ -7554,10 +7554,10 @@ - + Span elem should not contain Part kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Span elem contains Part kid @@ -7566,10 +7566,10 @@ - + Span elem should not contain Art kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Span elem contains Art kid @@ -7578,10 +7578,10 @@ - + Span elem should not contain Div kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Span elem contains Div kid @@ -7590,10 +7590,10 @@ - + Span elem should not contain Sect kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Span elem contains Sect kid @@ -7602,10 +7602,10 @@ - + Span elem should not contain TOC kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Span elem contains TOC kid @@ -7614,10 +7614,10 @@ - + Span elem should not contain TOCI kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Span elem contains TOCI kid @@ -7626,10 +7626,10 @@ - + Span elem should not contain Aside kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Span elem contains Aside kid @@ -7638,10 +7638,10 @@ - + Span elem should not contain BlockQuote kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Span elem contains BlockQuote kid @@ -7650,10 +7650,10 @@ - + Span elem should not contain P kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Span elem contains P kid @@ -7662,10 +7662,10 @@ - + Span elem should not contain Hn kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Span elem contains Hn kid @@ -7674,10 +7674,10 @@ - + Span elem should not contain H kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Span elem contains H kid @@ -7686,10 +7686,10 @@ - + Span elem should not contain Title kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Span elem contains Title kid @@ -7698,10 +7698,10 @@ - + Span elem should not contain RB kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Span elem contains RB kid @@ -7710,10 +7710,10 @@ - + Span elem should not contain RT kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Span elem contains RT kid @@ -7722,10 +7722,10 @@ - + Span elem should not contain RP kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Span elem contains RP kid @@ -7734,10 +7734,10 @@ - + Span elem should not contain WT kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Span elem contains WT kid @@ -7746,10 +7746,10 @@ - + Span elem should not contain WP kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Span elem contains WP kid @@ -7758,10 +7758,10 @@ - + Span elem should not contain Index kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Span elem contains Index kid @@ -7770,10 +7770,10 @@ - + Span elem should not contain L kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Span elem contains L kid @@ -7782,10 +7782,10 @@ - + Span elem should not contain LI kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Span elem contains LI kid @@ -7794,10 +7794,10 @@ - + Span elem should not contain LBody kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Span elem contains LBody kid @@ -7806,10 +7806,10 @@ - + Span elem should not contain Table kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Span elem contains Table kid @@ -7818,10 +7818,10 @@ - + Span elem should not contain TR kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Span elem contains TR kid @@ -7830,10 +7830,10 @@ - + Span elem should not contain TH kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Span elem contains TH kid @@ -7842,10 +7842,10 @@ - + Span elem should not contain TD kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Span elem contains TD kid @@ -7854,10 +7854,10 @@ - + Span elem should not contain THead kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Span elem contains THead kid @@ -7866,10 +7866,10 @@ - + Span elem should not contain TBody kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Span elem contains TBody kid @@ -7878,10 +7878,10 @@ - + Span elem should not contain TFoot kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Span elem contains TFoot kid @@ -7890,10 +7890,10 @@ - + Span elem should not contain Caption kid - (standardType != 'Span') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Span elem contains Caption kid @@ -7902,10 +7902,10 @@ - + Quote elem should not contain Document kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Quote elem contains Document kid @@ -7914,10 +7914,10 @@ - + Quote elem should not contain DocumentFragment kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Quote elem contains DocumentFragment kid @@ -7926,10 +7926,10 @@ - + Quote elem should not contain Part kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Quote elem contains Part kid @@ -7938,10 +7938,10 @@ - + Quote elem should not contain Art kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Quote elem contains Art kid @@ -7950,10 +7950,10 @@ - + Quote elem should not contain Div kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Quote elem contains Div kid @@ -7962,10 +7962,10 @@ - + Quote elem should not contain Sect kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Quote elem contains Sect kid @@ -7974,10 +7974,10 @@ - + Quote elem should not contain TOC kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Quote elem contains TOC kid @@ -7986,10 +7986,10 @@ - + Quote elem should not contain TOCI kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Quote elem contains TOCI kid @@ -7998,10 +7998,10 @@ - + Quote elem should not contain Aside kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Quote elem contains Aside kid @@ -8010,10 +8010,10 @@ - + Quote elem should not contain BlockQuote kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Quote elem contains BlockQuote kid @@ -8022,10 +8022,10 @@ - + Quote elem should not contain P kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Quote elem contains P kid @@ -8034,10 +8034,10 @@ - + Quote elem should not contain Hn kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Quote elem contains Hn kid @@ -8046,10 +8046,10 @@ - + Quote elem should not contain H kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Quote elem contains H kid @@ -8058,10 +8058,10 @@ - + Quote elem should not contain Title kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Quote elem contains Title kid @@ -8070,10 +8070,10 @@ - + Quote elem should not contain RB kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Quote elem contains RB kid @@ -8082,10 +8082,10 @@ - + Quote elem should not contain RT kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Quote elem contains RT kid @@ -8094,10 +8094,10 @@ - + Quote elem should not contain RP kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Quote elem contains RP kid @@ -8106,10 +8106,10 @@ - + Quote elem should not contain WT kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Quote elem contains WT kid @@ -8118,10 +8118,10 @@ - + Quote elem should not contain WP kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Quote elem contains WP kid @@ -8130,10 +8130,10 @@ - + Quote elem should not contain Index kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Quote elem contains Index kid @@ -8142,10 +8142,10 @@ - + Quote elem should not contain L kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Quote elem contains L kid @@ -8154,10 +8154,10 @@ - + Quote elem should not contain LI kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Quote elem contains LI kid @@ -8166,10 +8166,10 @@ - + Quote elem should not contain LBody kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Quote elem contains LBody kid @@ -8178,10 +8178,10 @@ - + Quote elem should not contain Table kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Quote elem contains Table kid @@ -8190,10 +8190,10 @@ - + Quote elem should not contain TR kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Quote elem contains TR kid @@ -8202,10 +8202,10 @@ - + Quote elem should not contain TH kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Quote elem contains TH kid @@ -8214,10 +8214,10 @@ - + Quote elem should not contain TD kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Quote elem contains TD kid @@ -8226,10 +8226,10 @@ - + Quote elem should not contain THead kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Quote elem contains THead kid @@ -8238,10 +8238,10 @@ - + Quote elem should not contain TBody kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Quote elem contains TBody kid @@ -8250,10 +8250,10 @@ - + Quote elem should not contain TFoot kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Quote elem contains TFoot kid @@ -8262,10 +8262,10 @@ - + Quote elem should not contain Caption kid - (standardType != 'Quote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Quote elem contains Caption kid @@ -8274,10 +8274,10 @@ - + Link elem should not contain Document kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Link elem contains Document kid @@ -8286,10 +8286,10 @@ - + Link elem should not contain TOC kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Link elem contains TOC kid @@ -8298,10 +8298,10 @@ - + Link elem should not contain TOCI kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Link elem contains TOCI kid @@ -8310,10 +8310,10 @@ - + Link elem should not contain Link kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Link elem contains Link kid @@ -8322,10 +8322,10 @@ - + Link elem should not contain RB kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Link elem contains RB kid @@ -8334,10 +8334,10 @@ - + Link elem should not contain RT kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Link elem contains RT kid @@ -8346,10 +8346,10 @@ - + Link elem should not contain RP kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Link elem contains RP kid @@ -8358,10 +8358,10 @@ - + Link elem should not contain WT kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Link elem contains WT kid @@ -8370,10 +8370,10 @@ - + Link elem should not contain WP kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Link elem contains WP kid @@ -8382,10 +8382,10 @@ - + Link elem should not contain Index kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Link elem contains Index kid @@ -8394,10 +8394,10 @@ - + Link elem should not contain LI kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Link elem contains LI kid @@ -8406,10 +8406,10 @@ - + Link elem should not contain LBody kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Link elem contains LBody kid @@ -8418,10 +8418,10 @@ - + Link elem should not contain TR kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Link elem contains TR kid @@ -8430,10 +8430,10 @@ - + Link elem should not contain TH kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Link elem contains TH kid @@ -8442,10 +8442,10 @@ - + Link elem should not contain TD kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Link elem contains TD kid @@ -8454,10 +8454,10 @@ - + Link elem should not contain THead kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Link elem contains THead kid @@ -8466,10 +8466,10 @@ - + Link elem should not contain TBody kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Link elem contains TBody kid @@ -8478,10 +8478,10 @@ - + Link elem should not contain TFoot kid - (standardType != 'Link') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Link elem contains TFoot kid @@ -8490,10 +8490,10 @@ - + Reference elem should not contain Document kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Reference elem contains Document kid @@ -8502,10 +8502,10 @@ - + Reference elem should not contain DocumentFragment kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Reference elem contains DocumentFragment kid @@ -8514,10 +8514,10 @@ - + Reference elem should not contain Part kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Reference elem contains Part kid @@ -8526,10 +8526,10 @@ - + Reference elem should not contain Art kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Reference elem contains Art kid @@ -8538,10 +8538,10 @@ - + Reference elem should not contain Div kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Reference elem contains Div kid @@ -8550,10 +8550,10 @@ - + Reference elem should not contain Sect kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Reference elem contains Sect kid @@ -8562,10 +8562,10 @@ - + Reference elem should not contain TOC kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Reference elem contains TOC kid @@ -8574,10 +8574,10 @@ - + Reference elem should not contain TOCI kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Reference elem contains TOCI kid @@ -8586,10 +8586,10 @@ - + Reference elem should not contain Aside kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Reference elem contains Aside kid @@ -8598,10 +8598,10 @@ - + Reference elem should not contain BlockQuote kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Reference elem contains BlockQuote kid @@ -8610,10 +8610,10 @@ - + Reference elem should not contain P kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Reference elem contains P kid @@ -8622,10 +8622,10 @@ - + Reference elem should not contain Code kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Reference elem contains Code kid @@ -8634,10 +8634,10 @@ - + Reference elem should not contain Hn kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Reference elem contains Hn kid @@ -8646,10 +8646,10 @@ - + Reference elem should not contain H kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Reference elem contains H kid @@ -8658,10 +8658,10 @@ - + Reference elem should not contain Title kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Reference elem contains Title kid @@ -8670,10 +8670,10 @@ - + Reference elem should not contain Sub kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Reference elem contains Sub kid @@ -8682,10 +8682,10 @@ - + Reference elem should not contain Quote kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Reference elem contains Quote kid @@ -8694,10 +8694,10 @@ - + Reference elem should not contain Reference kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Reference elem contains Reference kid @@ -8706,10 +8706,10 @@ - + Reference elem should not contain Form kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Reference elem contains Form kid @@ -8718,10 +8718,10 @@ - + Reference elem should not contain Ruby kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Reference elem contains Ruby kid @@ -8730,10 +8730,10 @@ - + Reference elem should not contain RB kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Reference elem contains RB kid @@ -8742,10 +8742,10 @@ - + Reference elem should not contain RT kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Reference elem contains RT kid @@ -8754,10 +8754,10 @@ - + Reference elem should not contain RP kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Reference elem contains RP kid @@ -8766,10 +8766,10 @@ - + Reference elem should not contain Warichu kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Reference elem contains Warichu kid @@ -8778,10 +8778,10 @@ - + Reference elem should not contain WT kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Reference elem contains WT kid @@ -8790,10 +8790,10 @@ - + Reference elem should not contain WP kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Reference elem contains WP kid @@ -8802,10 +8802,10 @@ - + Reference elem should not contain Index kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Reference elem contains Index kid @@ -8814,10 +8814,10 @@ - + Reference elem should not contain L kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Reference elem contains L kid @@ -8826,10 +8826,10 @@ - + Reference elem should not contain LI kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Reference elem contains LI kid @@ -8838,10 +8838,10 @@ - + Reference elem should not contain LBody kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Reference elem contains LBody kid @@ -8850,10 +8850,10 @@ - + Reference elem should not contain Table kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Reference elem contains Table kid @@ -8862,10 +8862,10 @@ - + Reference elem should not contain TR kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Reference elem contains TR kid @@ -8874,10 +8874,10 @@ - + Reference elem should not contain TH kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Reference elem contains TH kid @@ -8886,10 +8886,10 @@ - + Reference elem should not contain TD kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Reference elem contains TD kid @@ -8898,10 +8898,10 @@ - + Reference elem should not contain THead kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Reference elem contains THead kid @@ -8910,10 +8910,10 @@ - + Reference elem should not contain TBody kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Reference elem contains TBody kid @@ -8922,10 +8922,10 @@ - + Reference elem should not contain TFoot kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Reference elem contains TFoot kid @@ -8934,10 +8934,10 @@ - + Reference elem should not contain Caption kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Reference elem contains Caption kid @@ -8946,10 +8946,10 @@ - + Reference elem should not contain Formula kid - (standardType != 'Reference') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 Reference elem contains Formula kid @@ -8958,10 +8958,10 @@ - + Annot elem should not contain Document kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Annot elem contains Document kid @@ -8970,10 +8970,10 @@ - + Annot elem should not contain TOC kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Annot elem contains TOC kid @@ -8982,10 +8982,10 @@ - + Annot elem should not contain TOCI kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Annot elem contains TOCI kid @@ -8994,10 +8994,10 @@ - + Annot elem should not contain Private kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0 Annot elem contains Private kid @@ -9006,10 +9006,10 @@ - + Annot elem should not contain RB kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Annot elem contains RB kid @@ -9018,10 +9018,10 @@ - + Annot elem should not contain RT kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Annot elem contains RT kid @@ -9030,10 +9030,10 @@ - + Annot elem should not contain RP kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Annot elem contains RP kid @@ -9042,10 +9042,10 @@ - + Annot elem should not contain WT kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Annot elem contains WT kid @@ -9054,10 +9054,10 @@ - + Annot elem should not contain WP kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Annot elem contains WP kid @@ -9066,10 +9066,10 @@ - + Annot elem should not contain Index kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Annot elem contains Index kid @@ -9078,10 +9078,10 @@ - + Annot elem should not contain LI kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Annot elem contains LI kid @@ -9090,10 +9090,10 @@ - + Annot elem should not contain LBody kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Annot elem contains LBody kid @@ -9102,10 +9102,10 @@ - + Annot elem should not contain TR kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Annot elem contains TR kid @@ -9114,10 +9114,10 @@ - + Annot elem should not contain TH kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Annot elem contains TH kid @@ -9126,10 +9126,10 @@ - + Annot elem should not contain TD kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Annot elem contains TD kid @@ -9138,10 +9138,10 @@ - + Annot elem should not contain THead kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Annot elem contains THead kid @@ -9150,10 +9150,10 @@ - + Annot elem should not contain TBody kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Annot elem contains TBody kid @@ -9162,10 +9162,10 @@ - + Annot elem should not contain TFoot kid - (standardType != 'Annot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Annot elem contains TFoot kid @@ -9174,10 +9174,10 @@ - + Form elem should not contain Document kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Form elem contains Document kid @@ -9186,10 +9186,10 @@ - + Form elem should not contain DocumentFragment kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Form elem contains DocumentFragment kid @@ -9198,10 +9198,10 @@ - + Form elem should not contain Art kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Form elem contains Art kid @@ -9210,10 +9210,10 @@ - + Form elem should not contain Sect kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Form elem contains Sect kid @@ -9222,10 +9222,10 @@ - + Form elem should not contain TOC kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Form elem contains TOC kid @@ -9234,10 +9234,10 @@ - + Form elem should not contain TOCI kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Form elem contains TOCI kid @@ -9246,10 +9246,10 @@ - + Form elem should not contain Aside kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Form elem contains Aside kid @@ -9258,10 +9258,10 @@ - + Form elem should not contain BlockQuote kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Form elem contains BlockQuote kid @@ -9270,10 +9270,10 @@ - + Form elem should not contain P kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Form elem contains P kid @@ -9282,10 +9282,10 @@ - + Form elem should not contain Hn kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Form elem contains Hn kid @@ -9294,10 +9294,10 @@ - + Form elem should not contain H kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Form elem contains H kid @@ -9306,10 +9306,10 @@ - + Form elem should not contain Title kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Form elem contains Title kid @@ -9318,10 +9318,10 @@ - + Form elem should not contain Sub kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Form elem contains Sub kid @@ -9330,10 +9330,10 @@ - + Form elem should not contain Em kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 Form elem contains Em kid @@ -9342,10 +9342,10 @@ - + Form elem should not contain Strong kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 Form elem contains Strong kid @@ -9354,10 +9354,10 @@ - + Form elem should not contain Span kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Form elem contains Span kid @@ -9366,10 +9366,10 @@ - + Form elem should not contain Quote kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Form elem contains Quote kid @@ -9378,10 +9378,10 @@ - + Form elem should not contain Link kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Form elem contains Link kid @@ -9390,10 +9390,10 @@ - + Form elem should not contain Annot kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 Form elem contains Annot kid @@ -9402,10 +9402,10 @@ - + Form elem should not contain Form kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Form elem contains Form kid @@ -9414,10 +9414,10 @@ - + Form elem should not contain Ruby kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Form elem contains Ruby kid @@ -9426,10 +9426,10 @@ - + Form elem should not contain RB kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Form elem contains RB kid @@ -9438,10 +9438,10 @@ - + Form elem should not contain RT kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Form elem contains RT kid @@ -9450,10 +9450,10 @@ - + Form elem should not contain RP kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Form elem contains RP kid @@ -9462,10 +9462,10 @@ - + Form elem should not contain Warichu kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Form elem contains Warichu kid @@ -9474,10 +9474,10 @@ - + Form elem should not contain WT kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Form elem contains WT kid @@ -9486,10 +9486,10 @@ - + Form elem should not contain WP kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Form elem contains WP kid @@ -9498,10 +9498,10 @@ - + Form elem should not contain Index kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Form elem contains Index kid @@ -9510,10 +9510,10 @@ - + Form elem should not contain LI kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Form elem contains LI kid @@ -9522,10 +9522,10 @@ - + Form elem should not contain LBody kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Form elem contains LBody kid @@ -9534,10 +9534,10 @@ - + Form elem should not contain TR kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Form elem contains TR kid @@ -9546,10 +9546,10 @@ - + Form elem should not contain TH kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Form elem contains TH kid @@ -9558,10 +9558,10 @@ - + Form elem should not contain TD kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Form elem contains TD kid @@ -9570,10 +9570,10 @@ - + Form elem should not contain THead kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Form elem contains THead kid @@ -9582,10 +9582,10 @@ - + Form elem should not contain TBody kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Form elem contains TBody kid @@ -9594,10 +9594,10 @@ - + Form elem should not contain TFoot kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Form elem contains TFoot kid @@ -9606,10 +9606,10 @@ - + Form elem should contain zero or one Caption kid - (standardType != 'Form') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Form contains more than one Caption kid @@ -9618,10 +9618,10 @@ - + Ruby elem should not contain Document kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Ruby elem contains Document kid @@ -9630,10 +9630,10 @@ - + Ruby elem should not contain DocumentFragment kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Ruby elem contains DocumentFragment kid @@ -9642,10 +9642,10 @@ - + Ruby elem should not contain Part kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Ruby elem contains Part kid @@ -9654,10 +9654,10 @@ - + Ruby elem should not contain Art kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Ruby elem contains Art kid @@ -9666,10 +9666,10 @@ - + Ruby elem should not contain Div kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Ruby elem contains Div kid @@ -9678,10 +9678,10 @@ - + Ruby elem should not contain Sect kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Ruby elem contains Sect kid @@ -9690,10 +9690,10 @@ - + Ruby elem should not contain TOC kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Ruby elem contains TOC kid @@ -9702,10 +9702,10 @@ - + Ruby elem should not contain TOCI kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Ruby elem contains TOCI kid @@ -9714,10 +9714,10 @@ - + Ruby elem should not contain Aside kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Ruby elem contains Aside kid @@ -9726,10 +9726,10 @@ - + Ruby elem should not contain BlockQuote kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Ruby elem contains BlockQuote kid @@ -9738,10 +9738,10 @@ - + Ruby elem should not contain P kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Ruby elem contains P kid @@ -9750,10 +9750,10 @@ - + Ruby elem should not contain Note kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 Ruby elem contains Note kid @@ -9762,10 +9762,10 @@ - + Ruby elem should not contain Code kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Ruby elem contains Code kid @@ -9774,10 +9774,10 @@ - + Ruby elem should not contain Hn kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Ruby elem contains Hn kid @@ -9786,10 +9786,10 @@ - + Ruby elem should not contain H kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Ruby elem contains H kid @@ -9798,10 +9798,10 @@ - + Ruby elem should not contain Title kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Ruby elem contains Title kid @@ -9810,10 +9810,10 @@ - + Ruby elem should not contain Sub kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Ruby elem contains Sub kid @@ -9822,10 +9822,10 @@ - + Ruby elem should not contain Lbl kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Ruby elem contains Lbl kid @@ -9834,10 +9834,10 @@ - + Ruby elem should not contain Em kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 Ruby elem contains Em kid @@ -9846,10 +9846,10 @@ - + Ruby elem should not contain Strong kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 Ruby elem contains Strong kid @@ -9858,10 +9858,10 @@ - + Ruby elem should not contain Span kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Ruby elem contains Span kid @@ -9870,10 +9870,10 @@ - + Ruby elem should not contain Quote kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Ruby elem contains Quote kid @@ -9882,10 +9882,10 @@ - + Ruby elem should not contain Link kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Ruby elem contains Link kid @@ -9894,10 +9894,10 @@ - + Ruby elem should not contain Reference kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Ruby elem contains Reference kid @@ -9906,10 +9906,10 @@ - + Ruby elem should not contain Annot kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 Ruby elem contains Annot kid @@ -9918,10 +9918,10 @@ - + Ruby elem should not contain Form kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Ruby elem contains Form kid @@ -9930,10 +9930,10 @@ - + Ruby elem should not contain Ruby kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Ruby elem contains Ruby kid @@ -9942,10 +9942,10 @@ - + Ruby elem should not contain Warichu kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Ruby elem contains Warichu kid @@ -9954,10 +9954,10 @@ - + Ruby elem should not contain WT kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Ruby elem contains WT kid @@ -9966,10 +9966,10 @@ - + Ruby elem should not contain WP kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Ruby elem contains WP kid @@ -9978,10 +9978,10 @@ - + Ruby elem should not contain FENote kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 Ruby elem contains FENote kid @@ -9990,10 +9990,10 @@ - + Ruby elem should not contain Index kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Ruby elem contains Index kid @@ -10002,10 +10002,10 @@ - + Ruby elem should not contain L kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Ruby elem contains L kid @@ -10014,10 +10014,10 @@ - + Ruby elem should not contain LI kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Ruby elem contains LI kid @@ -10026,10 +10026,10 @@ - + Ruby elem should not contain LBody kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Ruby elem contains LBody kid @@ -10038,10 +10038,10 @@ - + Ruby elem should not contain BibEntry kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Ruby elem contains BibEntry kid @@ -10050,10 +10050,10 @@ - + Ruby elem should not contain Table kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Ruby elem contains Table kid @@ -10062,10 +10062,10 @@ - + Ruby elem should not contain TR kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Ruby elem contains TR kid @@ -10074,10 +10074,10 @@ - + Ruby elem should not contain TH kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Ruby elem contains TH kid @@ -10086,10 +10086,10 @@ - + Ruby elem should not contain TD kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Ruby elem contains TD kid @@ -10098,10 +10098,10 @@ - + Ruby elem should not contain THead kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Ruby elem contains THead kid @@ -10110,10 +10110,10 @@ - + Ruby elem should not contain TBody kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Ruby elem contains TBody kid @@ -10122,10 +10122,10 @@ - + Ruby elem should not contain TFoot kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Ruby elem contains TFoot kid @@ -10134,10 +10134,10 @@ - + Ruby elem should not contain Caption kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Ruby elem contains Caption kid @@ -10146,10 +10146,10 @@ - + Ruby elem should not contain Figure kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 Ruby elem contains Figure kid @@ -10158,10 +10158,10 @@ - + Ruby elem should not contain Formula kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 Ruby elem contains Formula kid @@ -10170,10 +10170,10 @@ - + Ruby elem should not contain Artifact kid - (standardType != 'Ruby') || (kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 Ruby elem contains Artifact kid @@ -10182,10 +10182,10 @@ - + RB elem should not contain Document kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 RB elem contains Document kid @@ -10194,10 +10194,10 @@ - + RB elem should not contain DocumentFragment kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 RB elem contains DocumentFragment kid @@ -10206,10 +10206,10 @@ - + RB elem should not contain Part kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 RB elem contains Part kid @@ -10218,10 +10218,10 @@ - + RB elem should not contain Art kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 RB elem contains Art kid @@ -10230,10 +10230,10 @@ - + RB elem should not contain Div kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 RB elem contains Div kid @@ -10242,10 +10242,10 @@ - + RB elem should not contain Sect kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 RB elem contains Sect kid @@ -10254,10 +10254,10 @@ - + RB elem should not contain TOC kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 RB elem contains TOC kid @@ -10266,10 +10266,10 @@ - + RB elem should not contain TOCI kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 RB elem contains TOCI kid @@ -10278,10 +10278,10 @@ - + RB elem should not contain Aside kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 RB elem contains Aside kid @@ -10290,10 +10290,10 @@ - + RB elem should not contain BlockQuote kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 RB elem contains BlockQuote kid @@ -10302,10 +10302,10 @@ - + RB elem should not contain P kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 RB elem contains P kid @@ -10314,10 +10314,10 @@ - + RB elem should not contain Note kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 RB elem contains Note kid @@ -10326,10 +10326,10 @@ - + RB elem should not contain Code kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 RB elem contains Code kid @@ -10338,10 +10338,10 @@ - + RB elem should not contain Hn kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 RB elem contains Hn kid @@ -10350,10 +10350,10 @@ - + RB elem should not contain H kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 RB elem contains H kid @@ -10362,10 +10362,10 @@ - + RB elem should not contain Title kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 RB elem contains Title kid @@ -10374,10 +10374,10 @@ - + RB elem should not contain Lbl kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 RB elem contains Lbl kid @@ -10386,10 +10386,10 @@ - + RB elem should not contain Ruby kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 RB elem contains Ruby kid @@ -10398,10 +10398,10 @@ - + RB elem should not contain RB kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 RB elem contains RB kid @@ -10410,10 +10410,10 @@ - + RB elem should not contain RT kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 RB elem contains RT kid @@ -10422,10 +10422,10 @@ - + RB elem should not contain RP kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 RB elem contains RP kid @@ -10434,10 +10434,10 @@ - + RB elem should not contain Warichu kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 RB elem contains Warichu kid @@ -10446,10 +10446,10 @@ - + RB elem should not contain WT kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 RB elem contains WT kid @@ -10458,10 +10458,10 @@ - + RB elem should not contain WP kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 RB elem contains WP kid @@ -10470,10 +10470,10 @@ - + RB elem should not contain FENote kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 RB elem contains FENote kid @@ -10482,10 +10482,10 @@ - + RB elem should not contain Index kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 RB elem contains Index kid @@ -10494,10 +10494,10 @@ - + RB elem should not contain L kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 RB elem contains L kid @@ -10506,10 +10506,10 @@ - + RB elem should not contain LI kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 RB elem contains LI kid @@ -10518,10 +10518,10 @@ - + RB elem should not contain LBody kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 RB elem contains LBody kid @@ -10530,10 +10530,10 @@ - + RB elem should not contain BibEntry kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 RB elem contains BibEntry kid @@ -10542,10 +10542,10 @@ - + RB elem should not contain Table kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 RB elem contains Table kid @@ -10554,10 +10554,10 @@ - + RB elem should not contain TR kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 RB elem contains TR kid @@ -10566,10 +10566,10 @@ - + RB elem should not contain TH kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 RB elem contains TH kid @@ -10578,10 +10578,10 @@ - + RB elem should not contain TD kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 RB elem contains TD kid @@ -10590,10 +10590,10 @@ - + RB elem should not contain THead kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 RB elem contains THead kid @@ -10602,10 +10602,10 @@ - + RB elem should not contain TBody kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 RB elem contains TBody kid @@ -10614,10 +10614,10 @@ - + RB elem should not contain TFoot kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 RB elem contains TFoot kid @@ -10626,10 +10626,10 @@ - + RB elem should not contain Caption kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 RB elem contains Caption kid @@ -10638,10 +10638,10 @@ - + RB elem should not contain Figure kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 RB elem contains Figure kid @@ -10650,10 +10650,10 @@ - + RB elem should not contain Formula kid - (standardType != 'RB') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 RB elem contains Formula kid @@ -10662,10 +10662,10 @@ - + RT elem should not contain Document kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 RT elem contains Document kid @@ -10674,10 +10674,10 @@ - + RT elem should not contain DocumentFragment kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 RT elem contains DocumentFragment kid @@ -10686,10 +10686,10 @@ - + RT elem should not contain Part kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 RT elem contains Part kid @@ -10698,10 +10698,10 @@ - + RT elem should not contain Art kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 RT elem contains Art kid @@ -10710,10 +10710,10 @@ - + RT elem should not contain Div kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 RT elem contains Div kid @@ -10722,10 +10722,10 @@ - + RT elem should not contain Sect kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 RT elem contains Sect kid @@ -10734,10 +10734,10 @@ - + RT elem should not contain TOC kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 RT elem contains TOC kid @@ -10746,10 +10746,10 @@ - + RT elem should not contain TOCI kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 RT elem contains TOCI kid @@ -10758,10 +10758,10 @@ - + RT elem should not contain Aside kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 RT elem contains Aside kid @@ -10770,10 +10770,10 @@ - + RT elem should not contain BlockQuote kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 RT elem contains BlockQuote kid @@ -10782,10 +10782,10 @@ - + RT elem should not contain P kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 RT elem contains P kid @@ -10794,10 +10794,10 @@ - + RT elem should not contain Note kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 RT elem contains Note kid @@ -10806,10 +10806,10 @@ - + RT elem should not contain Code kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 RT elem contains Code kid @@ -10818,10 +10818,10 @@ - + RT elem should not contain Hn kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 RT elem contains Hn kid @@ -10830,10 +10830,10 @@ - + RT elem should not contain H kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 RT elem contains H kid @@ -10842,10 +10842,10 @@ - + RT elem should not contain Title kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 RT elem contains Title kid @@ -10854,10 +10854,10 @@ - + RT elem should not contain Lbl kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 RT elem contains Lbl kid @@ -10866,10 +10866,10 @@ - + RT elem should not contain Ruby kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 RT elem contains Ruby kid @@ -10878,10 +10878,10 @@ - + RT elem should not contain RB kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 RT elem contains RB kid @@ -10890,10 +10890,10 @@ - + RT elem should not contain RT kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 RT elem contains RT kid @@ -10902,10 +10902,10 @@ - + RT elem should not contain RP kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 RT elem contains RP kid @@ -10914,10 +10914,10 @@ - + RT elem should not contain Warichu kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 RT elem contains Warichu kid @@ -10926,10 +10926,10 @@ - + RT elem should not contain WT kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 RT elem contains WT kid @@ -10938,10 +10938,10 @@ - + RT elem should not contain WP kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 RT elem contains WP kid @@ -10950,10 +10950,10 @@ - + RT elem should not contain FENote kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 RT elem contains FENote kid @@ -10962,10 +10962,10 @@ - + RT elem should not contain Index kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 RT elem contains Index kid @@ -10974,10 +10974,10 @@ - + RT elem should not contain L kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 RT elem contains L kid @@ -10986,10 +10986,10 @@ - + RT elem should not contain LI kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 RT elem contains LI kid @@ -10998,10 +10998,10 @@ - + RT elem should not contain LBody kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 RT elem contains LBody kid @@ -11010,10 +11010,10 @@ - + RT elem should not contain BibEntry kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 RT elem contains BibEntry kid @@ -11022,10 +11022,10 @@ - + RT elem should not contain Table kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 RT elem contains Table kid @@ -11034,10 +11034,10 @@ - + RT elem should not contain TR kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 RT elem contains TR kid @@ -11046,10 +11046,10 @@ - + RT elem should not contain TH kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 RT elem contains TH kid @@ -11058,10 +11058,10 @@ - + RT elem should not contain TD kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 RT elem contains TD kid @@ -11070,10 +11070,10 @@ - + RT elem should not contain THead kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 RT elem contains THead kid @@ -11082,10 +11082,10 @@ - + RT elem should not contain TBody kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 RT elem contains TBody kid @@ -11094,10 +11094,10 @@ - + RT elem should not contain TFoot kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 RT elem contains TFoot kid @@ -11106,10 +11106,10 @@ - + RT elem should not contain Caption kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 RT elem contains Caption kid @@ -11118,10 +11118,10 @@ - + RT elem should not contain Figure kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 RT elem contains Figure kid @@ -11130,10 +11130,10 @@ - + RT elem should not contain Formula kid - (standardType != 'RT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 RT elem contains Formula kid @@ -11142,10 +11142,10 @@ - + RP elem should not contain Document kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 RP elem contains Document kid @@ -11154,10 +11154,10 @@ - + RP elem should not contain DocumentFragment kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 RP elem contains DocumentFragment kid @@ -11166,10 +11166,10 @@ - + RP elem should not contain Part kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 RP elem contains Part kid @@ -11178,10 +11178,10 @@ - + RP elem should not contain Art kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 RP elem contains Art kid @@ -11190,10 +11190,10 @@ - + RP elem should not contain Div kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 RP elem contains Div kid @@ -11202,10 +11202,10 @@ - + RP elem should not contain Sect kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 RP elem contains Sect kid @@ -11214,10 +11214,10 @@ - + RP elem should not contain TOC kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 RP elem contains TOC kid @@ -11226,10 +11226,10 @@ - + RP elem should not contain TOCI kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 RP elem contains TOCI kid @@ -11238,10 +11238,10 @@ - + RP elem should not contain Aside kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 RP elem contains Aside kid @@ -11250,10 +11250,10 @@ - + RP elem should not contain BlockQuote kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 RP elem contains BlockQuote kid @@ -11262,10 +11262,10 @@ - + RP elem should not contain P kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 RP elem contains P kid @@ -11274,10 +11274,10 @@ - + RP elem should not contain Note kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 RP elem contains Note kid @@ -11286,10 +11286,10 @@ - + RP elem should not contain Code kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 RP elem contains Code kid @@ -11298,10 +11298,10 @@ - + RP elem should not contain Hn kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 RP elem contains Hn kid @@ -11310,10 +11310,10 @@ - + RP elem should not contain H kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 RP elem contains H kid @@ -11322,10 +11322,10 @@ - + RP elem should not contain Title kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 RP elem contains Title kid @@ -11334,10 +11334,10 @@ - + RP elem should not contain Lbl kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 RP elem contains Lbl kid @@ -11346,10 +11346,10 @@ - + RP elem should not contain Ruby kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 RP elem contains Ruby kid @@ -11358,10 +11358,10 @@ - + RP elem should not contain RB kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 RP elem contains RB kid @@ -11370,10 +11370,10 @@ - + RP elem should not contain RT kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 RP elem contains RT kid @@ -11382,10 +11382,10 @@ - + RP elem should not contain RP kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 RP elem contains RP kid @@ -11394,10 +11394,10 @@ - + RP elem should not contain Warichu kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 RP elem contains Warichu kid @@ -11406,10 +11406,10 @@ - + RP elem should not contain WT kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 RP elem contains WT kid @@ -11418,10 +11418,10 @@ - + RP elem should not contain WP kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 RP elem contains WP kid @@ -11430,10 +11430,10 @@ - + RP elem should not contain FENote kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 RP elem contains FENote kid @@ -11442,10 +11442,10 @@ - + RP elem should not contain Index kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 RP elem contains Index kid @@ -11454,10 +11454,10 @@ - + RP elem should not contain L kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 RP elem contains L kid @@ -11466,10 +11466,10 @@ - + RP elem should not contain LI kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 RP elem contains LI kid @@ -11478,10 +11478,10 @@ - + RP elem should not contain LBody kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 RP elem contains LBody kid @@ -11490,10 +11490,10 @@ - + RP elem should not contain BibEntry kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 RP elem contains BibEntry kid @@ -11502,10 +11502,10 @@ - + RP elem should not contain Table kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 RP elem contains Table kid @@ -11514,10 +11514,10 @@ - + RP elem should not contain TR kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 RP elem contains TR kid @@ -11526,10 +11526,10 @@ - + RP elem should not contain TH kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 RP elem contains TH kid @@ -11538,10 +11538,10 @@ - + RP elem should not contain TD kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 RP elem contains TD kid @@ -11550,10 +11550,10 @@ - + RP elem should not contain THead kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 RP elem contains THead kid @@ -11562,10 +11562,10 @@ - + RP elem should not contain TBody kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 RP elem contains TBody kid @@ -11574,10 +11574,10 @@ - + RP elem should not contain TFoot kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 RP elem contains TFoot kid @@ -11586,10 +11586,10 @@ - + RP elem should not contain Caption kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 RP elem contains Caption kid @@ -11598,10 +11598,10 @@ - + RP elem should not contain Figure kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 RP elem contains Figure kid @@ -11610,10 +11610,10 @@ - + RP elem should not contain Formula kid - (standardType != 'RP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 RP elem contains Formula kid @@ -11622,10 +11622,10 @@ - + Warichu elem should not contain Document kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Warichu elem contains Document kid @@ -11634,10 +11634,10 @@ - + Warichu elem should not contain DocumentFragment kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Warichu elem contains DocumentFragment kid @@ -11646,10 +11646,10 @@ - + Warichu elem should not contain Part kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Warichu elem contains Part kid @@ -11658,10 +11658,10 @@ - + Warichu elem should not contain Art kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Warichu elem contains Art kid @@ -11670,10 +11670,10 @@ - + Warichu elem should not contain Div kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Warichu elem contains Div kid @@ -11682,10 +11682,10 @@ - + Warichu elem should not contain Sect kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Warichu elem contains Sect kid @@ -11694,10 +11694,10 @@ - + Warichu elem should not contain TOC kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Warichu elem contains TOC kid @@ -11706,10 +11706,10 @@ - + Warichu elem should not contain TOCI kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Warichu elem contains TOCI kid @@ -11718,10 +11718,10 @@ - + Warichu elem should not contain Aside kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Warichu elem contains Aside kid @@ -11730,10 +11730,10 @@ - + Warichu elem should not contain BlockQuote kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Warichu elem contains BlockQuote kid @@ -11742,10 +11742,10 @@ - + Warichu elem should not contain P kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Warichu elem contains P kid @@ -11754,10 +11754,10 @@ - + Warichu elem should not contain Note kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 Warichu elem contains Note kid @@ -11766,10 +11766,10 @@ - + Warichu elem should not contain Code kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Warichu elem contains Code kid @@ -11778,10 +11778,10 @@ - + Warichu elem should not contain Hn kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Warichu elem contains Hn kid @@ -11790,10 +11790,10 @@ - + Warichu elem should not contain H kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Warichu elem contains H kid @@ -11802,10 +11802,10 @@ - + Warichu elem should not contain Title kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Warichu elem contains Title kid @@ -11814,10 +11814,10 @@ - + Warichu elem should not contain Sub kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Warichu elem contains Sub kid @@ -11826,10 +11826,10 @@ - + Warichu elem should not contain Lbl kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Warichu elem contains Lbl kid @@ -11838,10 +11838,10 @@ - + Warichu elem should not contain Em kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 Warichu elem contains Em kid @@ -11850,10 +11850,10 @@ - + Warichu elem should not contain Strong kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 Warichu elem contains Strong kid @@ -11862,10 +11862,10 @@ - + Warichu elem should not contain Span kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Warichu elem contains Span kid @@ -11874,10 +11874,10 @@ - + Warichu elem should not contain Quote kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Warichu elem contains Quote kid @@ -11886,10 +11886,10 @@ - + Warichu elem should not contain Link kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Warichu elem contains Link kid @@ -11898,10 +11898,10 @@ - + Warichu elem should not contain Reference kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Warichu elem contains Reference kid @@ -11910,10 +11910,10 @@ - + Warichu elem should not contain Annot kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 Warichu elem contains Annot kid @@ -11922,10 +11922,10 @@ - + Warichu elem should not contain Form kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Warichu elem contains Form kid @@ -11934,10 +11934,10 @@ - + Warichu elem should not contain Ruby kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Warichu elem contains Ruby kid @@ -11946,10 +11946,10 @@ - + Warichu elem should not contain RB kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Warichu elem contains RB kid @@ -11958,10 +11958,10 @@ - + Warichu elem should not contain RT kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Warichu elem contains RT kid @@ -11970,10 +11970,10 @@ - + Warichu elem should not contain RP kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Warichu elem contains RP kid @@ -11982,10 +11982,10 @@ - + Warichu elem should not contain Warichu kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Warichu elem contains Warichu kid @@ -11994,10 +11994,10 @@ - + Warichu elem should not contain FENote kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 Warichu elem contains FENote kid @@ -12006,10 +12006,10 @@ - + Warichu elem should not contain Index kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Warichu elem contains Index kid @@ -12018,10 +12018,10 @@ - + Warichu elem should not contain L kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Warichu elem contains L kid @@ -12030,10 +12030,10 @@ - + Warichu elem should not contain LI kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Warichu elem contains LI kid @@ -12042,10 +12042,10 @@ - + Warichu elem should not contain LBody kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Warichu elem contains LBody kid @@ -12054,10 +12054,10 @@ - + Warichu elem should not contain BibEntry kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Warichu elem contains BibEntry kid @@ -12066,10 +12066,10 @@ - + Warichu elem should not contain Table kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Warichu elem contains Table kid @@ -12078,10 +12078,10 @@ - + Warichu elem should not contain TR kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Warichu elem contains TR kid @@ -12090,10 +12090,10 @@ - + Warichu elem should not contain TH kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Warichu elem contains TH kid @@ -12102,10 +12102,10 @@ - + Warichu elem should not contain TD kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Warichu elem contains TD kid @@ -12114,10 +12114,10 @@ - + Warichu elem should not contain THead kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Warichu elem contains THead kid @@ -12126,10 +12126,10 @@ - + Warichu elem should not contain TBody kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Warichu elem contains TBody kid @@ -12138,10 +12138,10 @@ - + Warichu elem should not contain TFoot kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Warichu elem contains TFoot kid @@ -12150,10 +12150,10 @@ - + Warichu elem should not contain Caption kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Warichu elem contains Caption kid @@ -12162,10 +12162,10 @@ - + Warichu elem should not contain Figure kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 Warichu elem contains Figure kid @@ -12174,10 +12174,10 @@ - + Warichu elem should not contain Formula kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 Warichu elem contains Formula kid @@ -12186,10 +12186,10 @@ - + Warichu elem should not contain Artifact kid - (standardType != 'Warichu') || (kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 Warichu elem contains Artifact kid @@ -12198,10 +12198,10 @@ - + WT elem should not contain Document kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 WT elem contains Document kid @@ -12210,10 +12210,10 @@ - + WT elem should not contain DocumentFragment kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 WT elem contains DocumentFragment kid @@ -12222,10 +12222,10 @@ - + WT elem should not contain Part kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 WT elem contains Part kid @@ -12234,10 +12234,10 @@ - + WT elem should not contain Art kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 WT elem contains Art kid @@ -12246,10 +12246,10 @@ - + WT elem should not contain Div kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 WT elem contains Div kid @@ -12258,10 +12258,10 @@ - + WT elem should not contain Sect kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 WT elem contains Sect kid @@ -12270,10 +12270,10 @@ - + WT elem should not contain TOC kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 WT elem contains TOC kid @@ -12282,10 +12282,10 @@ - + WT elem should not contain TOCI kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 WT elem contains TOCI kid @@ -12294,10 +12294,10 @@ - + WT elem should not contain Aside kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 WT elem contains Aside kid @@ -12306,10 +12306,10 @@ - + WT elem should not contain BlockQuote kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 WT elem contains BlockQuote kid @@ -12318,10 +12318,10 @@ - + WT elem should not contain P kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 WT elem contains P kid @@ -12330,10 +12330,10 @@ - + WT elem should not contain Note kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 WT elem contains Note kid @@ -12342,10 +12342,10 @@ - + WT elem should not contain Code kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 WT elem contains Code kid @@ -12354,10 +12354,10 @@ - + WT elem should not contain Hn kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 WT elem contains Hn kid @@ -12366,10 +12366,10 @@ - + WT elem should not contain H kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 WT elem contains H kid @@ -12378,10 +12378,10 @@ - + WT elem should not contain Title kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 WT elem contains Title kid @@ -12390,10 +12390,10 @@ - + WT elem should not contain Lbl kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 WT elem contains Lbl kid @@ -12402,10 +12402,10 @@ - + WT elem should not contain Ruby kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 WT elem contains Ruby kid @@ -12414,10 +12414,10 @@ - + WT elem should not contain RB kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 WT elem contains RB kid @@ -12426,10 +12426,10 @@ - + WT elem should not contain RT kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 WT elem contains RT kid @@ -12438,10 +12438,10 @@ - + WT elem should not contain RP kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 WT elem contains RP kid @@ -12450,10 +12450,10 @@ - + WT elem should not contain Warichu kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 WT elem contains Warichu kid @@ -12462,10 +12462,10 @@ - + WT elem should not contain WT kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 WT elem contains WT kid @@ -12474,10 +12474,10 @@ - + WT elem should not contain WP kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 WT elem contains WP kid @@ -12486,10 +12486,10 @@ - + WT elem should not contain FENote kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 WT elem contains FENote kid @@ -12498,10 +12498,10 @@ - + WT elem should not contain Index kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 WT elem contains Index kid @@ -12510,10 +12510,10 @@ - + WT elem should not contain L kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 WT elem contains L kid @@ -12522,10 +12522,10 @@ - + WT elem should not contain LI kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 WT elem contains LI kid @@ -12534,10 +12534,10 @@ - + WT elem should not contain LBody kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 WT elem contains LBody kid @@ -12546,10 +12546,10 @@ - + WT elem should not contain BibEntry kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 WT elem contains BibEntry kid @@ -12558,10 +12558,10 @@ - + WT elem should not contain Table kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 WT elem contains Table kid @@ -12570,10 +12570,10 @@ - + WT elem should not contain TR kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 WT elem contains TR kid @@ -12582,10 +12582,10 @@ - + WT elem should not contain TH kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 WT elem contains TH kid @@ -12594,10 +12594,10 @@ - + WT elem should not contain TD kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 WT elem contains TD kid @@ -12606,10 +12606,10 @@ - + WT elem should not contain THead kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 WT elem contains THead kid @@ -12618,10 +12618,10 @@ - + WT elem should not contain TBody kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 WT elem contains TBody kid @@ -12630,10 +12630,10 @@ - + WT elem should not contain TFoot kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 WT elem contains TFoot kid @@ -12642,10 +12642,10 @@ - + WT elem should not contain Caption kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 WT elem contains Caption kid @@ -12654,10 +12654,10 @@ - + WT elem should not contain Figure kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 WT elem contains Figure kid @@ -12666,10 +12666,10 @@ - + WT elem should not contain Formula kid - (standardType != 'WT') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 WT elem contains Formula kid @@ -12678,10 +12678,10 @@ - + WP elem should not contain Document kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 WP elem contains Document kid @@ -12690,10 +12690,10 @@ - + WP elem should not contain DocumentFragment kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 WP elem contains DocumentFragment kid @@ -12702,10 +12702,10 @@ - + WP elem should not contain Part kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 WP elem contains Part kid @@ -12714,10 +12714,10 @@ - + WP elem should not contain Art kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 WP elem contains Art kid @@ -12726,10 +12726,10 @@ - + WP elem should not contain Div kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 WP elem contains Div kid @@ -12738,10 +12738,10 @@ - + WP elem should not contain Sect kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 WP elem contains Sect kid @@ -12750,10 +12750,10 @@ - + WP elem should not contain TOC kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 WP elem contains TOC kid @@ -12762,10 +12762,10 @@ - + WP elem should not contain TOCI kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 WP elem contains TOCI kid @@ -12774,10 +12774,10 @@ - + WP elem should not contain Aside kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 WP elem contains Aside kid @@ -12786,10 +12786,10 @@ - + WP elem should not contain BlockQuote kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 WP elem contains BlockQuote kid @@ -12798,10 +12798,10 @@ - + WP elem should not contain P kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 WP elem contains P kid @@ -12810,10 +12810,10 @@ - + WP elem should not contain Note kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 WP elem contains Note kid @@ -12822,10 +12822,10 @@ - + WP elem should not contain Code kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 WP elem contains Code kid @@ -12834,10 +12834,10 @@ - + WP elem should not contain Hn kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 WP elem contains Hn kid @@ -12846,10 +12846,10 @@ - + WP elem should not contain H kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 WP elem contains H kid @@ -12858,10 +12858,10 @@ - + WP elem should not contain Title kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 WP elem contains Title kid @@ -12870,10 +12870,10 @@ - + WP elem should not contain Lbl kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 WP elem contains Lbl kid @@ -12882,10 +12882,10 @@ - + WP elem should not contain Ruby kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 WP elem contains Ruby kid @@ -12894,10 +12894,10 @@ - + WP elem should not contain RB kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 WP elem contains RB kid @@ -12906,10 +12906,10 @@ - + WP elem should not contain RT kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 WP elem contains RT kid @@ -12918,10 +12918,10 @@ - + WP elem should not contain RP kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 WP elem contains RP kid @@ -12930,10 +12930,10 @@ - + WP elem should not contain Warichu kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 WP elem contains Warichu kid @@ -12942,10 +12942,10 @@ - + WP elem should not contain WT kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 WP elem contains WT kid @@ -12954,10 +12954,10 @@ - + WP elem should not contain WP kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 WP elem contains WP kid @@ -12966,10 +12966,10 @@ - + WP elem should not contain FENote kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 WP elem contains FENote kid @@ -12978,10 +12978,10 @@ - + WP elem should not contain Index kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 WP elem contains Index kid @@ -12990,10 +12990,10 @@ - + WP elem should not contain L kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 WP elem contains L kid @@ -13002,10 +13002,10 @@ - + WP elem should not contain LI kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 WP elem contains LI kid @@ -13014,10 +13014,10 @@ - + WP elem should not contain LBody kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 WP elem contains LBody kid @@ -13026,10 +13026,10 @@ - + WP elem should not contain BibEntry kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 WP elem contains BibEntry kid @@ -13038,10 +13038,10 @@ - + WP elem should not contain Table kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 WP elem contains Table kid @@ -13050,10 +13050,10 @@ - + WP elem should not contain TR kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 WP elem contains TR kid @@ -13062,10 +13062,10 @@ - + WP elem should not contain TH kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 WP elem contains TH kid @@ -13074,10 +13074,10 @@ - + WP elem should not contain TD kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 WP elem contains TD kid @@ -13086,10 +13086,10 @@ - + WP elem should not contain THead kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 WP elem contains THead kid @@ -13098,10 +13098,10 @@ - + WP elem should not contain TBody kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 WP elem contains TBody kid @@ -13110,10 +13110,10 @@ - + WP elem should not contain TFoot kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 WP elem contains TFoot kid @@ -13122,10 +13122,10 @@ - + WP elem should not contain Caption kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 WP elem contains Caption kid @@ -13134,10 +13134,10 @@ - + WP elem should not contain Figure kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 WP elem contains Figure kid @@ -13146,10 +13146,10 @@ - + WP elem should not contain Formula kid - (standardType != 'WP') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 WP elem contains Formula kid @@ -13158,10 +13158,10 @@ - + FENote elem should not contain Document kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 FENote elem contains Document kid @@ -13170,10 +13170,10 @@ - + FENote elem should not contain TOC kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 FENote elem contains TOC kid @@ -13182,10 +13182,10 @@ - + FENote elem should not contain TOCI kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 FENote elem contains TOCI kid @@ -13194,10 +13194,10 @@ - + FENote elem should not contain Hn kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 FENote elem contains Hn kid @@ -13206,10 +13206,10 @@ - + FENote elem should not contain H kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 FENote elem contains H kid @@ -13218,10 +13218,10 @@ - + FENote elem should not contain Title kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 FENote elem contains Title kid @@ -13230,10 +13230,10 @@ - + FENote elem should not contain RB kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 FENote elem contains RB kid @@ -13242,10 +13242,10 @@ - + FENote elem should not contain RT kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 FENote elem contains RT kid @@ -13254,10 +13254,10 @@ - + FENote elem should not contain RP kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 FENote elem contains RP kid @@ -13266,10 +13266,10 @@ - + FENote elem should not contain WT kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 FENote elem contains WT kid @@ -13278,10 +13278,10 @@ - + FENote elem should not contain WP kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 FENote elem contains WP kid @@ -13290,10 +13290,10 @@ - + FENote elem should not contain Index kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 FENote elem contains Index kid @@ -13302,10 +13302,10 @@ - + FENote elem should not contain LI kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 FENote elem contains LI kid @@ -13314,10 +13314,10 @@ - + FENote elem should not contain LBody kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 FENote elem contains LBody kid @@ -13326,10 +13326,10 @@ - + FENote elem should not contain BibEntry kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 FENote elem contains BibEntry kid @@ -13338,10 +13338,10 @@ - + FENote elem should not contain TR kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 FENote elem contains TR kid @@ -13350,10 +13350,10 @@ - + FENote elem should not contain TH kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 FENote elem contains TH kid @@ -13362,10 +13362,10 @@ - + FENote elem should not contain TD kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 FENote elem contains TD kid @@ -13374,10 +13374,10 @@ - + FENote elem should not contain THead kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 FENote elem contains THead kid @@ -13386,10 +13386,10 @@ - + FENote elem should not contain TBody kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 FENote elem contains TBody kid @@ -13398,10 +13398,10 @@ - + FENote elem should not contain TFoot kid - (standardType != 'FENote') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 FENote elem contains TFoot kid @@ -13410,10 +13410,10 @@ - + Index elem should not contain Document kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Index elem contains Document kid @@ -13422,10 +13422,10 @@ - + Index elem should not contain DocumentFragment kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Index elem contains DocumentFragment kid @@ -13434,10 +13434,10 @@ - + Index elem should not contain Art kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Index elem contains Art kid @@ -13446,10 +13446,10 @@ - + Index elem should not contain TOC kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Index elem contains TOC kid @@ -13458,10 +13458,10 @@ - + Index elem should not contain TOCI kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Index elem contains TOCI kid @@ -13470,10 +13470,10 @@ - + Index elem should not contain Aside kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Index elem contains Aside kid @@ -13482,10 +13482,10 @@ - + Index elem should not contain BlockQuote kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Index elem contains BlockQuote kid @@ -13494,10 +13494,10 @@ - + Index elem should not contain Code kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Index elem contains Code kid @@ -13506,10 +13506,10 @@ - + Index elem should not contain Title kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Index elem contains Title kid @@ -13518,10 +13518,10 @@ - + Index elem should not contain Sub kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Index elem contains Sub kid @@ -13530,10 +13530,10 @@ - + Index elem should not contain Lbl kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Index elem contains Lbl kid @@ -13542,10 +13542,10 @@ - + Index elem should not contain Em kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 Index elem contains Em kid @@ -13554,10 +13554,10 @@ - + Index elem should not contain Strong kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 Index elem contains Strong kid @@ -13566,10 +13566,10 @@ - + Index elem should not contain Span kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Index elem contains Span kid @@ -13578,10 +13578,10 @@ - + Index elem should not contain Quote kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Index elem contains Quote kid @@ -13590,10 +13590,10 @@ - + Index elem should not contain Link kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Index elem contains Link kid @@ -13602,10 +13602,10 @@ - + Index elem should not contain Form kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Index elem contains Form kid @@ -13614,10 +13614,10 @@ - + Index elem should not contain Ruby kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Index elem contains Ruby kid @@ -13626,10 +13626,10 @@ - + Index elem should not contain RB kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Index elem contains RB kid @@ -13638,10 +13638,10 @@ - + Index elem should not contain RT kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Index elem contains RT kid @@ -13650,10 +13650,10 @@ - + Index elem should not contain RP kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Index elem contains RP kid @@ -13662,10 +13662,10 @@ - + Index elem should not contain Warichu kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Index elem contains Warichu kid @@ -13674,10 +13674,10 @@ - + Index elem should not contain WT kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Index elem contains WT kid @@ -13686,10 +13686,10 @@ - + Index elem should not contain WP kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Index elem contains WP kid @@ -13698,10 +13698,10 @@ - + Index elem should not contain Index kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Index elem contains Index kid @@ -13710,10 +13710,10 @@ - + Index elem should not contain LI kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Index elem contains LI kid @@ -13722,10 +13722,10 @@ - + Index elem should not contain LBody kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Index elem contains LBody kid @@ -13734,10 +13734,10 @@ - + Index elem should not contain BibEntry kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Index elem contains BibEntry kid @@ -13746,10 +13746,10 @@ - + Index elem should not contain TR kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Index elem contains TR kid @@ -13758,10 +13758,10 @@ - + Index elem should not contain TH kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Index elem contains TH kid @@ -13770,10 +13770,10 @@ - + Index elem should not contain TD kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Index elem contains TD kid @@ -13782,10 +13782,10 @@ - + Index elem should not contain THead kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Index elem contains THead kid @@ -13794,10 +13794,10 @@ - + Index elem should not contain TBody kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Index elem contains TBody kid @@ -13806,10 +13806,10 @@ - + Index elem should not contain TFoot kid - (standardType != 'Index') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Index elem contains TFoot kid @@ -13818,10 +13818,10 @@ - + Index elem should not contain content item kid - (standardType != 'Index') || (hasContentItems == false) + hasContentItems == false Index elem contains content item kid @@ -13830,10 +13830,10 @@ - + L elem should not contain Document kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 L elem contains Document kid @@ -13842,10 +13842,10 @@ - + L elem should not contain DocumentFragment kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 L elem contains DocumentFragment kid @@ -13854,10 +13854,10 @@ - + L elem should not contain Part kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 L elem contains Part kid @@ -13866,10 +13866,10 @@ - + L elem should not contain Art kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 L elem contains Art kid @@ -13878,10 +13878,10 @@ - + L elem should not contain Div kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 L elem contains Div kid @@ -13890,10 +13890,10 @@ - + L elem should not contain Sect kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 L elem contains Sect kid @@ -13902,10 +13902,10 @@ - + L elem should not contain TOC kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 L elem contains TOC kid @@ -13914,10 +13914,10 @@ - + L elem should not contain TOCI kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 L elem contains TOCI kid @@ -13926,10 +13926,10 @@ - + L elem should not contain Aside kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 L elem contains Aside kid @@ -13938,10 +13938,10 @@ - + L elem should not contain BlockQuote kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 L elem contains BlockQuote kid @@ -13950,10 +13950,10 @@ - + L elem should not contain P kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 L elem contains P kid @@ -13962,10 +13962,10 @@ - + L elem should not contain Note kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 L elem contains Note kid @@ -13974,10 +13974,10 @@ - + L elem should not contain Code kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 L elem contains Code kid @@ -13986,10 +13986,10 @@ - + L elem should not contain Hn kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 L elem contains Hn kid @@ -13998,10 +13998,10 @@ - + L elem should not contain H kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 L elem contains H kid @@ -14010,10 +14010,10 @@ - + L elem should not contain Title kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 L elem contains Title kid @@ -14022,10 +14022,10 @@ - + L elem should not contain Sub kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 L elem contains Sub kid @@ -14034,10 +14034,10 @@ - + L elem should not contain Lbl kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 L elem contains Lbl kid @@ -14046,10 +14046,10 @@ - + L elem should not contain Em kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 L elem contains Em kid @@ -14058,10 +14058,10 @@ - + L elem should not contain Strong kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 L elem contains Strong kid @@ -14070,10 +14070,10 @@ - + L elem should not contain Span kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 L elem contains Span kid @@ -14082,10 +14082,10 @@ - + L elem should not contain Quote kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 L elem contains Quote kid @@ -14094,10 +14094,10 @@ - + L elem should not contain Link kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 L elem contains Link kid @@ -14106,10 +14106,10 @@ - + L elem should not contain Reference kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 L elem contains Reference kid @@ -14118,10 +14118,10 @@ - + L elem should not contain Annot kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 L elem contains Annot kid @@ -14130,10 +14130,10 @@ - + L elem should not contain Form kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 L elem contains Form kid @@ -14142,10 +14142,10 @@ - + L elem should not contain Ruby kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 L elem contains Ruby kid @@ -14154,10 +14154,10 @@ - + L elem should not contain RB kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 L elem contains RB kid @@ -14166,10 +14166,10 @@ - + L elem should not contain RT kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 L elem contains RT kid @@ -14178,10 +14178,10 @@ - + L elem should not contain RP kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 L elem contains RP kid @@ -14190,10 +14190,10 @@ - + L elem should not contain Warichu kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 L elem contains Warichu kid @@ -14202,10 +14202,10 @@ - + L elem should not contain WT kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 L elem contains WT kid @@ -14214,10 +14214,10 @@ - + L elem should not contain WP kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 L elem contains WP kid @@ -14226,10 +14226,10 @@ - + L elem should not contain FENote kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 L elem contains FENote kid @@ -14238,10 +14238,10 @@ - + L elem should not contain Index kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 L elem contains Index kid @@ -14250,10 +14250,10 @@ - + L elem should not contain LBody kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 L elem contains LBody kid @@ -14262,10 +14262,10 @@ - + L elem should not contain BibEntry kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 L elem contains BibEntry kid @@ -14274,10 +14274,10 @@ - + L elem should not contain Table kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 L elem contains Table kid @@ -14286,10 +14286,10 @@ - + L elem should not contain TR kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 L elem contains TR kid @@ -14298,10 +14298,10 @@ - + L elem should not contain TH kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 L elem contains TH kid @@ -14310,10 +14310,10 @@ - + L elem should not contain TD kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 L elem contains TD kid @@ -14322,10 +14322,10 @@ - + L elem should not contain THead kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 L elem contains THead kid @@ -14334,10 +14334,10 @@ - + L elem should not contain TBody kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 L elem contains TBody kid @@ -14346,10 +14346,10 @@ - + L elem should not contain TFoot kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 L elem contains TFoot kid @@ -14358,10 +14358,10 @@ - + L elem should contain zero or one Caption kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 L contains more than one Caption kid @@ -14370,10 +14370,10 @@ - + L elem should not contain Figure kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 L elem contains Figure kid @@ -14382,10 +14382,10 @@ - + L elem should not contain Formula kid - (standardType != 'L') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 L elem contains Formula kid @@ -14394,10 +14394,10 @@ - + L elem should not contain content item kid - (standardType != 'L') || (hasContentItems == false) + hasContentItems == false L elem contains content item kid @@ -14406,10 +14406,10 @@ - + LI elem should not contain Document kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 LI elem contains Document kid @@ -14418,10 +14418,10 @@ - + LI elem should not contain DocumentFragment kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 LI elem contains DocumentFragment kid @@ -14430,10 +14430,10 @@ - + LI elem should not contain Part kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 LI elem contains Part kid @@ -14442,10 +14442,10 @@ - + LI elem should not contain Art kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 LI elem contains Art kid @@ -14454,10 +14454,10 @@ - + LI elem should not contain Sect kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 LI elem contains Sect kid @@ -14466,10 +14466,10 @@ - + LI elem should not contain TOC kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 LI elem contains TOC kid @@ -14478,10 +14478,10 @@ - + LI elem should not contain TOCI kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 LI elem contains TOCI kid @@ -14490,10 +14490,10 @@ - + LI elem should not contain Aside kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 LI elem contains Aside kid @@ -14502,10 +14502,10 @@ - + LI elem should not contain BlockQuote kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 LI elem contains BlockQuote kid @@ -14514,10 +14514,10 @@ - + LI elem should not contain P kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 LI elem contains P kid @@ -14526,10 +14526,10 @@ - + LI elem should not contain Note kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 LI elem contains Note kid @@ -14538,10 +14538,10 @@ - + LI elem should not contain Code kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 LI elem contains Code kid @@ -14550,10 +14550,10 @@ - + LI elem should not contain Hn kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 LI elem contains Hn kid @@ -14562,10 +14562,10 @@ - + LI elem should not contain H kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 LI elem contains H kid @@ -14574,10 +14574,10 @@ - + LI elem should not contain Title kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 LI elem contains Title kid @@ -14586,10 +14586,10 @@ - + LI elem should not contain Sub kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 LI elem contains Sub kid @@ -14598,10 +14598,10 @@ - + LI elem should not contain Em kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 LI elem contains Em kid @@ -14610,10 +14610,10 @@ - + LI elem should not contain Strong kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 LI elem contains Strong kid @@ -14622,10 +14622,10 @@ - + LI elem should not contain Span kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 LI elem contains Span kid @@ -14634,10 +14634,10 @@ - + LI elem should not contain Quote kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 LI elem contains Quote kid @@ -14646,10 +14646,10 @@ - + LI elem should not contain Link kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 LI elem contains Link kid @@ -14658,10 +14658,10 @@ - + LI elem should not contain Reference kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 LI elem contains Reference kid @@ -14670,10 +14670,10 @@ - + LI elem should not contain Annot kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 LI elem contains Annot kid @@ -14682,10 +14682,10 @@ - + LI elem should not contain Form kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 LI elem contains Form kid @@ -14694,10 +14694,10 @@ - + LI elem should not contain Ruby kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 LI elem contains Ruby kid @@ -14706,10 +14706,10 @@ - + LI elem should not contain RB kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 LI elem contains RB kid @@ -14718,10 +14718,10 @@ - + LI elem should not contain RT kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 LI elem contains RT kid @@ -14730,10 +14730,10 @@ - + LI elem should not contain RP kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 LI elem contains RP kid @@ -14742,10 +14742,10 @@ - + LI elem should not contain Warichu kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 LI elem contains Warichu kid @@ -14754,10 +14754,10 @@ - + LI elem should not contain WT kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 LI elem contains WT kid @@ -14766,10 +14766,10 @@ - + LI elem should not contain WP kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 LI elem contains WP kid @@ -14778,10 +14778,10 @@ - + LI elem should not contain FENote kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 LI elem contains FENote kid @@ -14790,10 +14790,10 @@ - + LI elem should not contain Index kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 LI elem contains Index kid @@ -14802,10 +14802,10 @@ - + LI elem should not contain L kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 LI elem contains L kid @@ -14814,10 +14814,10 @@ - + LI elem should not contain LI kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 LI elem contains LI kid @@ -14826,10 +14826,10 @@ - + LI elem should not contain BibEntry kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 LI elem contains BibEntry kid @@ -14838,10 +14838,10 @@ - + LI elem should not contain Table kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 LI elem contains Table kid @@ -14850,10 +14850,10 @@ - + LI elem should not contain TR kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 LI elem contains TR kid @@ -14862,10 +14862,10 @@ - + LI elem should not contain TH kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 LI elem contains TH kid @@ -14874,10 +14874,10 @@ - + LI elem should not contain TD kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 LI elem contains TD kid @@ -14886,10 +14886,10 @@ - + LI elem should not contain THead kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 LI elem contains THead kid @@ -14898,10 +14898,10 @@ - + LI elem should not contain TBody kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 LI elem contains TBody kid @@ -14910,10 +14910,10 @@ - + LI elem should not contain TFoot kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 LI elem contains TFoot kid @@ -14922,10 +14922,10 @@ - + LI elem should not contain Caption kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 LI elem contains Caption kid @@ -14934,10 +14934,10 @@ - + LI elem should not contain Figure kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 LI elem contains Figure kid @@ -14946,10 +14946,10 @@ - + LI elem should not contain Formula kid - (standardType != 'LI') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 LI elem contains Formula kid @@ -14958,10 +14958,10 @@ - + LBody elem should not contain Document kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 LBody elem contains Document kid @@ -14970,10 +14970,10 @@ - + LBody elem should not contain DocumentFragment kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 LBody elem contains DocumentFragment kid @@ -14982,10 +14982,10 @@ - + LBody elem should not contain TOC kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 LBody elem contains TOC kid @@ -14994,10 +14994,10 @@ - + LBody elem should not contain TOCI kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 LBody elem contains TOCI kid @@ -15006,10 +15006,10 @@ - + LBody elem should contain zero or one H kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 LBody contains more than one H kid @@ -15018,10 +15018,10 @@ - + LBody elem should not contain Title kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 LBody elem contains Title kid @@ -15030,10 +15030,10 @@ - + LBody elem should not contain Lbl kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 LBody elem contains Lbl kid @@ -15042,10 +15042,10 @@ - + LBody elem should not contain RB kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 LBody elem contains RB kid @@ -15054,10 +15054,10 @@ - + LBody elem should not contain RT kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 LBody elem contains RT kid @@ -15066,10 +15066,10 @@ - + LBody elem should not contain RP kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 LBody elem contains RP kid @@ -15078,10 +15078,10 @@ - + LBody elem should not contain WT kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 LBody elem contains WT kid @@ -15090,10 +15090,10 @@ - + LBody elem should not contain WP kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 LBody elem contains WP kid @@ -15102,10 +15102,10 @@ - + LBody elem should not contain LI kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 LBody elem contains LI kid @@ -15114,10 +15114,10 @@ - + LBody elem should not contain LBody kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 LBody elem contains LBody kid @@ -15126,10 +15126,10 @@ - + LBody elem should not contain TR kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 LBody elem contains TR kid @@ -15138,10 +15138,10 @@ - + LBody elem should not contain TH kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 LBody elem contains TH kid @@ -15150,10 +15150,10 @@ - + LBody elem should not contain TD kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 LBody elem contains TD kid @@ -15162,10 +15162,10 @@ - + LBody elem should not contain THead kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 LBody elem contains THead kid @@ -15174,10 +15174,10 @@ - + LBody elem should not contain TBody kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 LBody elem contains TBody kid @@ -15186,10 +15186,10 @@ - + LBody elem should not contain TFoot kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 LBody elem contains TFoot kid @@ -15198,10 +15198,10 @@ - + LBody elem should contain zero or one Caption kid - (standardType != 'LBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 LBody contains more than one Caption kid @@ -15210,10 +15210,10 @@ - + BibEntry elem should not contain Document kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 BibEntry elem contains Document kid @@ -15222,10 +15222,10 @@ - + BibEntry elem should not contain DocumentFragment kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 BibEntry elem contains DocumentFragment kid @@ -15234,10 +15234,10 @@ - + BibEntry elem should not contain Art kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 BibEntry elem contains Art kid @@ -15246,10 +15246,10 @@ - + BibEntry elem should not contain Sect kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 BibEntry elem contains Sect kid @@ -15258,10 +15258,10 @@ - + BibEntry elem should not contain TOC kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 BibEntry elem contains TOC kid @@ -15270,10 +15270,10 @@ - + BibEntry elem should not contain TOCI kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 BibEntry elem contains TOCI kid @@ -15282,10 +15282,10 @@ - + BibEntry elem should not contain Aside kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 BibEntry elem contains Aside kid @@ -15294,10 +15294,10 @@ - + BibEntry elem should not contain BlockQuote kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 BibEntry elem contains BlockQuote kid @@ -15306,10 +15306,10 @@ - + BibEntry elem should not contain Code kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 BibEntry elem contains Code kid @@ -15318,10 +15318,10 @@ - + BibEntry elem should not contain Hn kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 BibEntry elem contains Hn kid @@ -15330,10 +15330,10 @@ - + BibEntry elem should not contain H kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 BibEntry elem contains H kid @@ -15342,10 +15342,10 @@ - + BibEntry elem should not contain Title kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 BibEntry elem contains Title kid @@ -15354,10 +15354,10 @@ - + BibEntry elem should not contain Sub kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 BibEntry elem contains Sub kid @@ -15366,10 +15366,10 @@ - + BibEntry elem should not contain Quote kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 BibEntry elem contains Quote kid @@ -15378,10 +15378,10 @@ - + BibEntry elem should not contain Form kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 BibEntry elem contains Form kid @@ -15390,10 +15390,10 @@ - + BibEntry elem should not contain Ruby kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 BibEntry elem contains Ruby kid @@ -15402,10 +15402,10 @@ - + BibEntry elem should not contain RB kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 BibEntry elem contains RB kid @@ -15414,10 +15414,10 @@ - + BibEntry elem should not contain RT kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 BibEntry elem contains RT kid @@ -15426,10 +15426,10 @@ - + BibEntry elem should not contain RP kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 BibEntry elem contains RP kid @@ -15438,10 +15438,10 @@ - + BibEntry elem should not contain Warichu kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 BibEntry elem contains Warichu kid @@ -15450,10 +15450,10 @@ - + BibEntry elem should not contain WT kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 BibEntry elem contains WT kid @@ -15462,10 +15462,10 @@ - + BibEntry elem should not contain WP kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 BibEntry elem contains WP kid @@ -15474,10 +15474,10 @@ - + BibEntry elem should not contain Index kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 BibEntry elem contains Index kid @@ -15486,10 +15486,10 @@ - + BibEntry elem should not contain L kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 BibEntry elem contains L kid @@ -15498,10 +15498,10 @@ - + BibEntry elem should not contain LI kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 BibEntry elem contains LI kid @@ -15510,10 +15510,10 @@ - + BibEntry elem should not contain LBody kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 BibEntry elem contains LBody kid @@ -15522,10 +15522,10 @@ - + BibEntry elem should not contain BibEntry kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 BibEntry elem contains BibEntry kid @@ -15534,10 +15534,10 @@ - + BibEntry elem should not contain Table kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 BibEntry elem contains Table kid @@ -15546,10 +15546,10 @@ - + BibEntry elem should not contain TR kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 BibEntry elem contains TR kid @@ -15558,10 +15558,10 @@ - + BibEntry elem should not contain TH kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 BibEntry elem contains TH kid @@ -15570,10 +15570,10 @@ - + BibEntry elem should not contain TD kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 BibEntry elem contains TD kid @@ -15582,10 +15582,10 @@ - + BibEntry elem should not contain THead kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 BibEntry elem contains THead kid @@ -15594,10 +15594,10 @@ - + BibEntry elem should not contain TBody kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 BibEntry elem contains TBody kid @@ -15606,10 +15606,10 @@ - + BibEntry elem should not contain TFoot kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 BibEntry elem contains TFoot kid @@ -15618,10 +15618,10 @@ - + BibEntry elem should not contain Caption kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 BibEntry elem contains Caption kid @@ -15630,10 +15630,10 @@ - + BibEntry elem should not contain Formula kid - (standardType != 'BibEntry') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 BibEntry elem contains Formula kid @@ -15642,10 +15642,10 @@ - + Table elem should not contain Document kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Table elem contains Document kid @@ -15654,10 +15654,10 @@ - + Table elem should not contain DocumentFragment kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Table elem contains DocumentFragment kid @@ -15666,10 +15666,10 @@ - + Table elem should not contain Part kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 Table elem contains Part kid @@ -15678,10 +15678,10 @@ - + Table elem should not contain Art kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Table elem contains Art kid @@ -15690,10 +15690,10 @@ - + Table elem should not contain Div kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 Table elem contains Div kid @@ -15702,10 +15702,10 @@ - + Table elem should not contain Sect kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Table elem contains Sect kid @@ -15714,10 +15714,10 @@ - + Table elem should not contain TOC kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Table elem contains TOC kid @@ -15726,10 +15726,10 @@ - + Table elem should not contain TOCI kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Table elem contains TOCI kid @@ -15738,10 +15738,10 @@ - + Table elem should not contain Aside kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 Table elem contains Aside kid @@ -15750,10 +15750,10 @@ - + Table elem should not contain BlockQuote kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 Table elem contains BlockQuote kid @@ -15762,10 +15762,10 @@ - + Table elem should not contain P kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 Table elem contains P kid @@ -15774,10 +15774,10 @@ - + Table elem should not contain Note kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 Table elem contains Note kid @@ -15786,10 +15786,10 @@ - + Table elem should not contain Code kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 Table elem contains Code kid @@ -15798,10 +15798,10 @@ - + Table elem should not contain Hn kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 Table elem contains Hn kid @@ -15810,10 +15810,10 @@ - + Table elem should not contain H kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 Table elem contains H kid @@ -15822,10 +15822,10 @@ - + Table elem should not contain Title kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Table elem contains Title kid @@ -15834,10 +15834,10 @@ - + Table elem should not contain Sub kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 Table elem contains Sub kid @@ -15846,10 +15846,10 @@ - + Table elem should not contain Lbl kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 Table elem contains Lbl kid @@ -15858,10 +15858,10 @@ - + Table elem should not contain Em kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 Table elem contains Em kid @@ -15870,10 +15870,10 @@ - + Table elem should not contain Strong kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 Table elem contains Strong kid @@ -15882,10 +15882,10 @@ - + Table elem should not contain Span kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 Table elem contains Span kid @@ -15894,10 +15894,10 @@ - + Table elem should not contain Quote kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 Table elem contains Quote kid @@ -15906,10 +15906,10 @@ - + Table elem should not contain Link kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 Table elem contains Link kid @@ -15918,10 +15918,10 @@ - + Table elem should not contain Reference kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 Table elem contains Reference kid @@ -15930,10 +15930,10 @@ - + Table elem should not contain Annot kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 Table elem contains Annot kid @@ -15942,10 +15942,10 @@ - + Table elem should not contain Form kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 Table elem contains Form kid @@ -15954,10 +15954,10 @@ - + Table elem should not contain Ruby kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 Table elem contains Ruby kid @@ -15966,10 +15966,10 @@ - + Table elem should not contain RB kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Table elem contains RB kid @@ -15978,10 +15978,10 @@ - + Table elem should not contain RT kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Table elem contains RT kid @@ -15990,10 +15990,10 @@ - + Table elem should not contain RP kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Table elem contains RP kid @@ -16002,10 +16002,10 @@ - + Table elem should not contain Warichu kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 Table elem contains Warichu kid @@ -16014,10 +16014,10 @@ - + Table elem should not contain WT kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Table elem contains WT kid @@ -16026,10 +16026,10 @@ - + Table elem should not contain WP kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Table elem contains WP kid @@ -16038,10 +16038,10 @@ - + Table elem should not contain FENote kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 Table elem contains FENote kid @@ -16050,10 +16050,10 @@ - + Table elem should not contain Index kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 Table elem contains Index kid @@ -16062,10 +16062,10 @@ - + Table elem should not contain L kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 Table elem contains L kid @@ -16074,10 +16074,10 @@ - + Table elem should not contain LI kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Table elem contains LI kid @@ -16086,10 +16086,10 @@ - + Table elem should not contain LBody kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Table elem contains LBody kid @@ -16098,10 +16098,10 @@ - + Table elem should not contain BibEntry kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 Table elem contains BibEntry kid @@ -16110,10 +16110,10 @@ - + Table elem should not contain Table kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 Table elem contains Table kid @@ -16122,10 +16122,10 @@ - + Table elem should not contain TH kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Table elem contains TH kid @@ -16134,10 +16134,10 @@ - + Table elem should not contain TD kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Table elem contains TD kid @@ -16146,10 +16146,10 @@ - + Table elem should contain zero or one THead kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 Table contains more than one THead kid @@ -16158,10 +16158,10 @@ - + Table elem should contain zero or one TFoot kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 Table contains more than one TFoot kid @@ -16170,10 +16170,10 @@ - + Table elem should contain zero or one Caption kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Table contains more than one Caption kid @@ -16182,10 +16182,10 @@ - + Table elem should not contain Figure kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 Table elem contains Figure kid @@ -16194,10 +16194,10 @@ - + Table elem should not contain Formula kid - (standardType != 'Table') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 Table elem contains Formula kid @@ -16206,10 +16206,10 @@ - + Table elem should not contain content item kid - (standardType != 'Table') || (hasContentItems == false) + hasContentItems == false Table elem contains content item kid @@ -16218,10 +16218,10 @@ - + TR elem should not contain Document kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TR elem contains Document kid @@ -16230,10 +16230,10 @@ - + TR elem should not contain DocumentFragment kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 TR elem contains DocumentFragment kid @@ -16242,10 +16242,10 @@ - + TR elem should not contain Part kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TR elem contains Part kid @@ -16254,10 +16254,10 @@ - + TR elem should not contain Art kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 TR elem contains Art kid @@ -16266,10 +16266,10 @@ - + TR elem should not contain Div kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 TR elem contains Div kid @@ -16278,10 +16278,10 @@ - + TR elem should not contain Sect kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 TR elem contains Sect kid @@ -16290,10 +16290,10 @@ - + TR elem should not contain TOC kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 TR elem contains TOC kid @@ -16302,10 +16302,10 @@ - + TR elem should not contain TOCI kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TR elem contains TOCI kid @@ -16314,10 +16314,10 @@ - + TR elem should not contain Aside kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 TR elem contains Aside kid @@ -16326,10 +16326,10 @@ - + TR elem should not contain BlockQuote kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TR elem contains BlockQuote kid @@ -16338,10 +16338,10 @@ - + TR elem should not contain P kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 TR elem contains P kid @@ -16350,10 +16350,10 @@ - + TR elem should not contain Note kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 TR elem contains Note kid @@ -16362,10 +16362,10 @@ - + TR elem should not contain Code kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 TR elem contains Code kid @@ -16374,10 +16374,10 @@ - + TR elem should not contain Hn kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 TR elem contains Hn kid @@ -16386,10 +16386,10 @@ - + TR elem should not contain H kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 TR elem contains H kid @@ -16398,10 +16398,10 @@ - + TR elem should not contain Title kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 TR elem contains Title kid @@ -16410,10 +16410,10 @@ - + TR elem should not contain Sub kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 TR elem contains Sub kid @@ -16422,10 +16422,10 @@ - + TR elem should not contain Lbl kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 TR elem contains Lbl kid @@ -16434,10 +16434,10 @@ - + TR elem should not contain Em kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 TR elem contains Em kid @@ -16446,10 +16446,10 @@ - + TR elem should not contain Strong kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 TR elem contains Strong kid @@ -16458,10 +16458,10 @@ - + TR elem should not contain Span kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 TR elem contains Span kid @@ -16470,10 +16470,10 @@ - + TR elem should not contain Quote kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 TR elem contains Quote kid @@ -16482,10 +16482,10 @@ - + TR elem should not contain Link kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 TR elem contains Link kid @@ -16494,10 +16494,10 @@ - + TR elem should not contain Reference kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 TR elem contains Reference kid @@ -16506,10 +16506,10 @@ - + TR elem should not contain Annot kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 TR elem contains Annot kid @@ -16518,10 +16518,10 @@ - + TR elem should not contain Form kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 TR elem contains Form kid @@ -16530,10 +16530,10 @@ - + TR elem should not contain Ruby kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 TR elem contains Ruby kid @@ -16542,10 +16542,10 @@ - + TR elem should not contain RB kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TR elem contains RB kid @@ -16554,10 +16554,10 @@ - + TR elem should not contain RT kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TR elem contains RT kid @@ -16566,10 +16566,10 @@ - + TR elem should not contain RP kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TR elem contains RP kid @@ -16578,10 +16578,10 @@ - + TR elem should not contain Warichu kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 TR elem contains Warichu kid @@ -16590,10 +16590,10 @@ - + TR elem should not contain WT kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TR elem contains WT kid @@ -16602,10 +16602,10 @@ - + TR elem should not contain WP kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TR elem contains WP kid @@ -16614,10 +16614,10 @@ - + TR elem should not contain FENote kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 TR elem contains FENote kid @@ -16626,10 +16626,10 @@ - + TR elem should not contain Index kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 TR elem contains Index kid @@ -16638,10 +16638,10 @@ - + TR elem should not contain L kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 TR elem contains L kid @@ -16650,10 +16650,10 @@ - + TR elem should not contain LI kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TR elem contains LI kid @@ -16662,10 +16662,10 @@ - + TR elem should not contain LBody kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TR elem contains LBody kid @@ -16674,10 +16674,10 @@ - + TR elem should not contain BibEntry kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 TR elem contains BibEntry kid @@ -16686,10 +16686,10 @@ - + TR elem should not contain Table kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 TR elem contains Table kid @@ -16698,10 +16698,10 @@ - + TR elem should not contain TR kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 TR elem contains TR kid @@ -16710,10 +16710,10 @@ - + TR elem should not contain THead kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TR elem contains THead kid @@ -16722,10 +16722,10 @@ - + TR elem should not contain TBody kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TR elem contains TBody kid @@ -16734,10 +16734,10 @@ - + TR elem should not contain TFoot kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TR elem contains TFoot kid @@ -16746,10 +16746,10 @@ - + TR elem should not contain Caption kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TR elem contains Caption kid @@ -16758,10 +16758,10 @@ - + TR elem should not contain Figure kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 TR elem contains Figure kid @@ -16770,10 +16770,10 @@ - + TR elem should not contain Formula kid - (standardType != 'TR') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 TR elem contains Formula kid @@ -16782,10 +16782,10 @@ - + TR elem should not contain content item kid - (standardType != 'TR') || (hasContentItems == false) + hasContentItems == false TR elem contains content item kid @@ -16794,10 +16794,10 @@ - + TH elem should not contain Document kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TH elem contains Document kid @@ -16806,10 +16806,10 @@ - + TH elem should not contain DocumentFragment kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 TH elem contains DocumentFragment kid @@ -16818,10 +16818,10 @@ - + TH elem should not contain Part kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TH elem contains Part kid @@ -16830,10 +16830,10 @@ - + TH elem should not contain TOC kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 TH elem contains TOC kid @@ -16842,10 +16842,10 @@ - + TH elem should not contain TOCI kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TH elem contains TOCI kid @@ -16854,10 +16854,10 @@ - + TH elem should not contain Aside kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 TH elem contains Aside kid @@ -16866,10 +16866,10 @@ - + TH elem should not contain BlockQuote kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TH elem contains BlockQuote kid @@ -16878,10 +16878,10 @@ - + TH elem should contain zero or one H kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 TH contains more than one H kid @@ -16890,10 +16890,10 @@ - + TH elem should not contain Title kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 TH elem contains Title kid @@ -16902,10 +16902,10 @@ - + TH elem should not contain Sub kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 TH elem contains Sub kid @@ -16914,10 +16914,10 @@ - + TH elem should not contain RB kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TH elem contains RB kid @@ -16926,10 +16926,10 @@ - + TH elem should not contain RT kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TH elem contains RT kid @@ -16938,10 +16938,10 @@ - + TH elem should not contain RP kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TH elem contains RP kid @@ -16950,10 +16950,10 @@ - + TH elem should not contain WT kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TH elem contains WT kid @@ -16962,10 +16962,10 @@ - + TH elem should not contain WP kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TH elem contains WP kid @@ -16974,10 +16974,10 @@ - + TH elem should not contain LI kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TH elem contains LI kid @@ -16986,10 +16986,10 @@ - + TH elem should not contain LBody kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TH elem contains LBody kid @@ -16998,10 +16998,10 @@ - + TH elem should not contain TR kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 TH elem contains TR kid @@ -17010,10 +17010,10 @@ - + TH elem should not contain TH kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TH elem contains TH kid @@ -17022,10 +17022,10 @@ - + TH elem should not contain TD kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TH elem contains TD kid @@ -17034,10 +17034,10 @@ - + TH elem should not contain THead kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TH elem contains THead kid @@ -17046,10 +17046,10 @@ - + TH elem should not contain TBody kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TH elem contains TBody kid @@ -17058,10 +17058,10 @@ - + TH elem should not contain TFoot kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TH elem contains TFoot kid @@ -17070,10 +17070,10 @@ - + TH elem should not contain Caption kid - (standardType != 'TH') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TH elem contains Caption kid @@ -17082,10 +17082,10 @@ - + TD elem should not contain Document kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TD elem contains Document kid @@ -17094,10 +17094,10 @@ - + TD elem should not contain DocumentFragment kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 TD elem contains DocumentFragment kid @@ -17106,10 +17106,10 @@ - + TD elem should not contain Part kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TD elem contains Part kid @@ -17118,10 +17118,10 @@ - + TD elem should not contain TOC kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 TD elem contains TOC kid @@ -17130,10 +17130,10 @@ - + TD elem should not contain TOCI kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TD elem contains TOCI kid @@ -17142,10 +17142,10 @@ - + TD elem should not contain Aside kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 TD elem contains Aside kid @@ -17154,10 +17154,10 @@ - + TD elem should not contain BlockQuote kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TD elem contains BlockQuote kid @@ -17166,10 +17166,10 @@ - + TD elem should contain zero or one H kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 TD contains more than one H kid @@ -17178,10 +17178,10 @@ - + TD elem should not contain Title kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 TD elem contains Title kid @@ -17190,10 +17190,10 @@ - + TD elem should not contain Sub kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 TD elem contains Sub kid @@ -17202,10 +17202,10 @@ - + TD elem should not contain RB kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TD elem contains RB kid @@ -17214,10 +17214,10 @@ - + TD elem should not contain RT kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TD elem contains RT kid @@ -17226,10 +17226,10 @@ - + TD elem should not contain RP kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TD elem contains RP kid @@ -17238,10 +17238,10 @@ - + TD elem should not contain WT kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TD elem contains WT kid @@ -17250,10 +17250,10 @@ - + TD elem should not contain WP kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TD elem contains WP kid @@ -17262,10 +17262,10 @@ - + TD elem should not contain LI kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TD elem contains LI kid @@ -17274,10 +17274,10 @@ - + TD elem should not contain LBody kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TD elem contains LBody kid @@ -17286,10 +17286,10 @@ - + TD elem should not contain TR kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 TD elem contains TR kid @@ -17298,10 +17298,10 @@ - + TD elem should not contain TH kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TD elem contains TH kid @@ -17310,10 +17310,10 @@ - + TD elem should not contain TD kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TD elem contains TD kid @@ -17322,10 +17322,10 @@ - + TD elem should not contain THead kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TD elem contains THead kid @@ -17334,10 +17334,10 @@ - + TD elem should not contain TBody kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TD elem contains TBody kid @@ -17346,10 +17346,10 @@ - + TD elem should not contain TFoot kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TD elem contains TFoot kid @@ -17358,10 +17358,10 @@ - + TD elem should not contain Caption kid - (standardType != 'TD') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TD elem contains Caption kid @@ -17370,10 +17370,10 @@ - + THead elem should not contain Document kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 THead elem contains Document kid @@ -17382,10 +17382,10 @@ - + THead elem should not contain DocumentFragment kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 THead elem contains DocumentFragment kid @@ -17394,10 +17394,10 @@ - + THead elem should not contain Part kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 THead elem contains Part kid @@ -17406,10 +17406,10 @@ - + THead elem should not contain Art kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 THead elem contains Art kid @@ -17418,10 +17418,10 @@ - + THead elem should not contain Div kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 THead elem contains Div kid @@ -17430,10 +17430,10 @@ - + THead elem should not contain Sect kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 THead elem contains Sect kid @@ -17442,10 +17442,10 @@ - + THead elem should not contain TOC kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 THead elem contains TOC kid @@ -17454,10 +17454,10 @@ - + THead elem should not contain TOCI kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 THead elem contains TOCI kid @@ -17466,10 +17466,10 @@ - + THead elem should not contain Aside kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 THead elem contains Aside kid @@ -17478,10 +17478,10 @@ - + THead elem should not contain BlockQuote kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 THead elem contains BlockQuote kid @@ -17490,10 +17490,10 @@ - + THead elem should not contain P kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 THead elem contains P kid @@ -17502,10 +17502,10 @@ - + THead elem should not contain Note kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 THead elem contains Note kid @@ -17514,10 +17514,10 @@ - + THead elem should not contain Code kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 THead elem contains Code kid @@ -17526,10 +17526,10 @@ - + THead elem should not contain Hn kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 THead elem contains Hn kid @@ -17538,10 +17538,10 @@ - + THead elem should not contain H kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 THead elem contains H kid @@ -17550,10 +17550,10 @@ - + THead elem should not contain Title kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 THead elem contains Title kid @@ -17562,10 +17562,10 @@ - + THead elem should not contain Sub kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 THead elem contains Sub kid @@ -17574,10 +17574,10 @@ - + THead elem should not contain Lbl kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 THead elem contains Lbl kid @@ -17586,10 +17586,10 @@ - + THead elem should not contain Em kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 THead elem contains Em kid @@ -17598,10 +17598,10 @@ - + THead elem should not contain Strong kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 THead elem contains Strong kid @@ -17610,10 +17610,10 @@ - + THead elem should not contain Span kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 THead elem contains Span kid @@ -17622,10 +17622,10 @@ - + THead elem should not contain Quote kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 THead elem contains Quote kid @@ -17634,10 +17634,10 @@ - + THead elem should not contain Link kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 THead elem contains Link kid @@ -17646,10 +17646,10 @@ - + THead elem should not contain Reference kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 THead elem contains Reference kid @@ -17658,10 +17658,10 @@ - + THead elem should not contain Annot kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 THead elem contains Annot kid @@ -17670,10 +17670,10 @@ - + THead elem should not contain Form kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 THead elem contains Form kid @@ -17682,10 +17682,10 @@ - + THead elem should not contain Ruby kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 THead elem contains Ruby kid @@ -17694,10 +17694,10 @@ - + THead elem should not contain RB kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 THead elem contains RB kid @@ -17706,10 +17706,10 @@ - + THead elem should not contain RT kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 THead elem contains RT kid @@ -17718,10 +17718,10 @@ - + THead elem should not contain RP kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 THead elem contains RP kid @@ -17730,10 +17730,10 @@ - + THead elem should not contain Warichu kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 THead elem contains Warichu kid @@ -17742,10 +17742,10 @@ - + THead elem should not contain WT kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 THead elem contains WT kid @@ -17754,10 +17754,10 @@ - + THead elem should not contain WP kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 THead elem contains WP kid @@ -17766,10 +17766,10 @@ - + THead elem should not contain FENote kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 THead elem contains FENote kid @@ -17778,10 +17778,10 @@ - + THead elem should not contain Index kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 THead elem contains Index kid @@ -17790,10 +17790,10 @@ - + THead elem should not contain L kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 THead elem contains L kid @@ -17802,10 +17802,10 @@ - + THead elem should not contain LI kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 THead elem contains LI kid @@ -17814,10 +17814,10 @@ - + THead elem should not contain LBody kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 THead elem contains LBody kid @@ -17826,10 +17826,10 @@ - + THead elem should not contain BibEntry kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 THead elem contains BibEntry kid @@ -17838,10 +17838,10 @@ - + THead elem should not contain Table kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 THead elem contains Table kid @@ -17850,10 +17850,10 @@ - + THead elem should not contain TH kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 THead elem contains TH kid @@ -17862,10 +17862,10 @@ - + THead elem should not contain TD kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 THead elem contains TD kid @@ -17874,10 +17874,10 @@ - + THead elem should not contain THead kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 THead elem contains THead kid @@ -17886,10 +17886,10 @@ - + THead elem should not contain TBody kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 THead elem contains TBody kid @@ -17898,10 +17898,10 @@ - + THead elem should not contain TFoot kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 THead elem contains TFoot kid @@ -17910,10 +17910,10 @@ - + THead elem should not contain Caption kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 THead elem contains Caption kid @@ -17922,10 +17922,10 @@ - + THead elem should not contain Figure kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 THead elem contains Figure kid @@ -17934,10 +17934,10 @@ - + THead elem should not contain Formula kid - (standardType != 'THead') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 THead elem contains Formula kid @@ -17946,10 +17946,10 @@ - + THead elem should not contain content item kid - (standardType != 'THead') || (hasContentItems == false) + hasContentItems == false THead elem contains content item kid @@ -17958,10 +17958,10 @@ - + TBody elem should not contain Document kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TBody elem contains Document kid @@ -17970,10 +17970,10 @@ - + TBody elem should not contain DocumentFragment kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 TBody elem contains DocumentFragment kid @@ -17982,10 +17982,10 @@ - + TBody elem should not contain Part kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TBody elem contains Part kid @@ -17994,10 +17994,10 @@ - + TBody elem should not contain Art kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 TBody elem contains Art kid @@ -18006,10 +18006,10 @@ - + TBody elem should not contain Div kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 TBody elem contains Div kid @@ -18018,10 +18018,10 @@ - + TBody elem should not contain Sect kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 TBody elem contains Sect kid @@ -18030,10 +18030,10 @@ - + TBody elem should not contain TOC kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 TBody elem contains TOC kid @@ -18042,10 +18042,10 @@ - + TBody elem should not contain TOCI kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TBody elem contains TOCI kid @@ -18054,10 +18054,10 @@ - + TBody elem should not contain Aside kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 TBody elem contains Aside kid @@ -18066,10 +18066,10 @@ - + TBody elem should not contain BlockQuote kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TBody elem contains BlockQuote kid @@ -18078,10 +18078,10 @@ - + TBody elem should not contain P kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 TBody elem contains P kid @@ -18090,10 +18090,10 @@ - + TBody elem should not contain Note kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 TBody elem contains Note kid @@ -18102,10 +18102,10 @@ - + TBody elem should not contain Code kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 TBody elem contains Code kid @@ -18114,10 +18114,10 @@ - + TBody elem should not contain Hn kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 TBody elem contains Hn kid @@ -18126,10 +18126,10 @@ - + TBody elem should not contain H kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 TBody elem contains H kid @@ -18138,10 +18138,10 @@ - + TBody elem should not contain Title kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 TBody elem contains Title kid @@ -18150,10 +18150,10 @@ - + TBody elem should not contain Sub kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 TBody elem contains Sub kid @@ -18162,10 +18162,10 @@ - + TBody elem should not contain Lbl kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 TBody elem contains Lbl kid @@ -18174,10 +18174,10 @@ - + TBody elem should not contain Em kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 TBody elem contains Em kid @@ -18186,10 +18186,10 @@ - + TBody elem should not contain Strong kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 TBody elem contains Strong kid @@ -18198,10 +18198,10 @@ - + TBody elem should not contain Span kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 TBody elem contains Span kid @@ -18210,10 +18210,10 @@ - + TBody elem should not contain Quote kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 TBody elem contains Quote kid @@ -18222,10 +18222,10 @@ - + TBody elem should not contain Link kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 TBody elem contains Link kid @@ -18234,10 +18234,10 @@ - + TBody elem should not contain Reference kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 TBody elem contains Reference kid @@ -18246,10 +18246,10 @@ - + TBody elem should not contain Annot kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 TBody elem contains Annot kid @@ -18258,10 +18258,10 @@ - + TBody elem should not contain Form kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 TBody elem contains Form kid @@ -18270,10 +18270,10 @@ - + TBody elem should not contain Ruby kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 TBody elem contains Ruby kid @@ -18282,10 +18282,10 @@ - + TBody elem should not contain RB kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TBody elem contains RB kid @@ -18294,10 +18294,10 @@ - + TBody elem should not contain RT kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TBody elem contains RT kid @@ -18306,10 +18306,10 @@ - + TBody elem should not contain RP kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TBody elem contains RP kid @@ -18318,10 +18318,10 @@ - + TBody elem should not contain Warichu kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 TBody elem contains Warichu kid @@ -18330,10 +18330,10 @@ - + TBody elem should not contain WT kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TBody elem contains WT kid @@ -18342,10 +18342,10 @@ - + TBody elem should not contain WP kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TBody elem contains WP kid @@ -18354,10 +18354,10 @@ - + TBody elem should not contain FENote kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 TBody elem contains FENote kid @@ -18366,10 +18366,10 @@ - + TBody elem should not contain Index kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 TBody elem contains Index kid @@ -18378,10 +18378,10 @@ - + TBody elem should not contain L kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 TBody elem contains L kid @@ -18390,10 +18390,10 @@ - + TBody elem should not contain LI kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TBody elem contains LI kid @@ -18402,10 +18402,10 @@ - + TBody elem should not contain LBody kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TBody elem contains LBody kid @@ -18414,10 +18414,10 @@ - + TBody elem should not contain BibEntry kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 TBody elem contains BibEntry kid @@ -18426,10 +18426,10 @@ - + TBody elem should not contain Table kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 TBody elem contains Table kid @@ -18438,10 +18438,10 @@ - + TBody elem should not contain TH kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TBody elem contains TH kid @@ -18450,10 +18450,10 @@ - + TBody elem should not contain TD kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TBody elem contains TD kid @@ -18462,10 +18462,10 @@ - + TBody elem should not contain THead kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TBody elem contains THead kid @@ -18474,10 +18474,10 @@ - + TBody elem should not contain TBody kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TBody elem contains TBody kid @@ -18486,10 +18486,10 @@ - + TBody elem should not contain TFoot kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TBody elem contains TFoot kid @@ -18498,10 +18498,10 @@ - + TBody elem should not contain Caption kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TBody elem contains Caption kid @@ -18510,10 +18510,10 @@ - + TBody elem should not contain Figure kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 TBody elem contains Figure kid @@ -18522,10 +18522,10 @@ - + TBody elem should not contain Formula kid - (standardType != 'TBody') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 TBody elem contains Formula kid @@ -18534,10 +18534,10 @@ - + TBody elem should not contain content item kid - (standardType != 'TBody') || (hasContentItems == false) + hasContentItems == false TBody elem contains content item kid @@ -18546,10 +18546,10 @@ - + TFoot elem should not contain Document kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 TFoot elem contains Document kid @@ -18558,10 +18558,10 @@ - + TFoot elem should not contain DocumentFragment kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 TFoot elem contains DocumentFragment kid @@ -18570,10 +18570,10 @@ - + TFoot elem should not contain Part kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 TFoot elem contains Part kid @@ -18582,10 +18582,10 @@ - + TFoot elem should not contain Art kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 TFoot elem contains Art kid @@ -18594,10 +18594,10 @@ - + TFoot elem should not contain Div kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 TFoot elem contains Div kid @@ -18606,10 +18606,10 @@ - + TFoot elem should not contain Sect kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 TFoot elem contains Sect kid @@ -18618,10 +18618,10 @@ - + TFoot elem should not contain TOC kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 TFoot elem contains TOC kid @@ -18630,10 +18630,10 @@ - + TFoot elem should not contain TOCI kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 TFoot elem contains TOCI kid @@ -18642,10 +18642,10 @@ - + TFoot elem should not contain Aside kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 TFoot elem contains Aside kid @@ -18654,10 +18654,10 @@ - + TFoot elem should not contain BlockQuote kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 TFoot elem contains BlockQuote kid @@ -18666,10 +18666,10 @@ - + TFoot elem should not contain P kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 TFoot elem contains P kid @@ -18678,10 +18678,10 @@ - + TFoot elem should not contain Note kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 TFoot elem contains Note kid @@ -18690,10 +18690,10 @@ - + TFoot elem should not contain Code kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 TFoot elem contains Code kid @@ -18702,10 +18702,10 @@ - + TFoot elem should not contain Hn kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0) + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 TFoot elem contains Hn kid @@ -18714,10 +18714,10 @@ - + TFoot elem should not contain H kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 TFoot elem contains H kid @@ -18726,10 +18726,10 @@ - + TFoot elem should not contain Title kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 TFoot elem contains Title kid @@ -18738,10 +18738,10 @@ - + TFoot elem should not contain Sub kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 TFoot elem contains Sub kid @@ -18750,10 +18750,10 @@ - + TFoot elem should not contain Lbl kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 TFoot elem contains Lbl kid @@ -18762,10 +18762,10 @@ - + TFoot elem should not contain Em kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 TFoot elem contains Em kid @@ -18774,10 +18774,10 @@ - + TFoot elem should not contain Strong kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 TFoot elem contains Strong kid @@ -18786,10 +18786,10 @@ - + TFoot elem should not contain Span kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 TFoot elem contains Span kid @@ -18798,10 +18798,10 @@ - + TFoot elem should not contain Quote kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 TFoot elem contains Quote kid @@ -18810,10 +18810,10 @@ - + TFoot elem should not contain Link kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 TFoot elem contains Link kid @@ -18822,10 +18822,10 @@ - + TFoot elem should not contain Reference kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 TFoot elem contains Reference kid @@ -18834,10 +18834,10 @@ - + TFoot elem should not contain Annot kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 TFoot elem contains Annot kid @@ -18846,10 +18846,10 @@ - + TFoot elem should not contain Form kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 TFoot elem contains Form kid @@ -18858,10 +18858,10 @@ - + TFoot elem should not contain Ruby kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 TFoot elem contains Ruby kid @@ -18870,10 +18870,10 @@ - + TFoot elem should not contain RB kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 TFoot elem contains RB kid @@ -18882,10 +18882,10 @@ - + TFoot elem should not contain RT kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 TFoot elem contains RT kid @@ -18894,10 +18894,10 @@ - + TFoot elem should not contain RP kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 TFoot elem contains RP kid @@ -18906,10 +18906,10 @@ - + TFoot elem should not contain Warichu kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 TFoot elem contains Warichu kid @@ -18918,10 +18918,10 @@ - + TFoot elem should not contain WT kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 TFoot elem contains WT kid @@ -18930,10 +18930,10 @@ - + TFoot elem should not contain WP kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 TFoot elem contains WP kid @@ -18942,10 +18942,10 @@ - + TFoot elem should not contain FENote kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 TFoot elem contains FENote kid @@ -18954,10 +18954,10 @@ - + TFoot elem should not contain Index kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 TFoot elem contains Index kid @@ -18966,10 +18966,10 @@ - + TFoot elem should not contain L kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 TFoot elem contains L kid @@ -18978,10 +18978,10 @@ - + TFoot elem should not contain LI kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 TFoot elem contains LI kid @@ -18990,10 +18990,10 @@ - + TFoot elem should not contain LBody kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 TFoot elem contains LBody kid @@ -19002,10 +19002,10 @@ - + TFoot elem should not contain BibEntry kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 TFoot elem contains BibEntry kid @@ -19014,10 +19014,10 @@ - + TFoot elem should not contain Table kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 TFoot elem contains Table kid @@ -19026,10 +19026,10 @@ - + TFoot elem should not contain TH kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 TFoot elem contains TH kid @@ -19038,10 +19038,10 @@ - + TFoot elem should not contain TD kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 TFoot elem contains TD kid @@ -19050,10 +19050,10 @@ - + TFoot elem should not contain THead kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 TFoot elem contains THead kid @@ -19062,10 +19062,10 @@ - + TFoot elem should not contain TBody kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 TFoot elem contains TBody kid @@ -19074,10 +19074,10 @@ - + TFoot elem should not contain TFoot kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 TFoot elem contains TFoot kid @@ -19086,10 +19086,10 @@ - + TFoot elem should not contain Caption kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 TFoot elem contains Caption kid @@ -19098,10 +19098,10 @@ - + TFoot elem should not contain Figure kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 TFoot elem contains Figure kid @@ -19110,10 +19110,10 @@ - + TFoot elem should not contain Formula kid - (standardType != 'TFoot') || (kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 TFoot elem contains Formula kid @@ -19122,10 +19122,10 @@ - + TFoot elem should not contain content item kid - (standardType != 'TFoot') || (hasContentItems == false) + hasContentItems == false TFoot elem contains content item kid @@ -19134,10 +19134,10 @@ - + Caption elem should not contain Document kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Caption elem contains Document kid @@ -19146,10 +19146,10 @@ - + Caption elem should not contain TOC kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Caption elem contains TOC kid @@ -19158,10 +19158,10 @@ - + Caption elem should not contain TOCI kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Caption elem contains TOCI kid @@ -19170,10 +19170,10 @@ - + Caption elem should contain zero or one H kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Caption contains more than one H kid @@ -19182,10 +19182,10 @@ - + Caption elem should not contain Title kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Caption elem contains Title kid @@ -19194,10 +19194,10 @@ - + Caption elem should not contain RB kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Caption elem contains RB kid @@ -19206,10 +19206,10 @@ - + Caption elem should not contain RT kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Caption elem contains RT kid @@ -19218,10 +19218,10 @@ - + Caption elem should not contain RP kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Caption elem contains RP kid @@ -19230,10 +19230,10 @@ - + Caption elem should not contain WT kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Caption elem contains WT kid @@ -19242,10 +19242,10 @@ - + Caption elem should not contain WP kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Caption elem contains WP kid @@ -19254,10 +19254,10 @@ - + Caption elem should not contain LI kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Caption elem contains LI kid @@ -19266,10 +19266,10 @@ - + Caption elem should not contain LBody kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Caption elem contains LBody kid @@ -19278,10 +19278,10 @@ - + Caption elem should not contain TR kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Caption elem contains TR kid @@ -19290,10 +19290,10 @@ - + Caption elem should not contain TH kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Caption elem contains TH kid @@ -19302,10 +19302,10 @@ - + Caption elem should not contain TD kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Caption elem contains TD kid @@ -19314,10 +19314,10 @@ - + Caption elem should not contain THead kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Caption elem contains THead kid @@ -19326,10 +19326,10 @@ - + Caption elem should not contain TBody kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Caption elem contains TBody kid @@ -19338,10 +19338,10 @@ - + Caption elem should not contain TFoot kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Caption elem contains TFoot kid @@ -19350,10 +19350,10 @@ - + Caption elem should not contain Caption kid - (standardType != 'Caption') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 Caption elem contains Caption kid @@ -19362,10 +19362,10 @@ - + Figure elem should not contain Document kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Figure elem contains Document kid @@ -19374,10 +19374,10 @@ - + Figure elem should not contain DocumentFragment kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Figure elem contains DocumentFragment kid @@ -19386,10 +19386,10 @@ - + Figure elem should not contain TOC kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Figure elem contains TOC kid @@ -19398,10 +19398,10 @@ - + Figure elem should not contain TOCI kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Figure elem contains TOCI kid @@ -19410,10 +19410,10 @@ - + Figure elem should contain zero or one H kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Figure contains more than one H kid @@ -19422,10 +19422,10 @@ - + Figure elem should not contain Title kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Figure elem contains Title kid @@ -19434,10 +19434,10 @@ - + Figure elem should not contain RB kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Figure elem contains RB kid @@ -19446,10 +19446,10 @@ - + Figure elem should not contain RT kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Figure elem contains RT kid @@ -19458,10 +19458,10 @@ - + Figure elem should not contain RP kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Figure elem contains RP kid @@ -19470,10 +19470,10 @@ - + Figure elem should not contain WT kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Figure elem contains WT kid @@ -19482,10 +19482,10 @@ - + Figure elem should not contain WP kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Figure elem contains WP kid @@ -19494,10 +19494,10 @@ - + Figure elem should not contain LI kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Figure elem contains LI kid @@ -19506,10 +19506,10 @@ - + Figure elem should not contain LBody kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Figure elem contains LBody kid @@ -19518,10 +19518,10 @@ - + Figure elem should not contain TR kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Figure elem contains TR kid @@ -19530,10 +19530,10 @@ - + Figure elem should not contain TH kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Figure elem contains TH kid @@ -19542,10 +19542,10 @@ - + Figure elem should not contain TD kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Figure elem contains TD kid @@ -19554,10 +19554,10 @@ - + Figure elem should not contain THead kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Figure elem contains THead kid @@ -19566,10 +19566,10 @@ - + Figure elem should not contain TBody kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Figure elem contains TBody kid @@ -19578,10 +19578,10 @@ - + Figure elem should not contain TFoot kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Figure elem contains TFoot kid @@ -19590,10 +19590,10 @@ - + Figure elem should contain zero or one Caption kid - (standardType != 'Figure') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Figure contains more than one Caption kid @@ -19602,10 +19602,10 @@ - + Formula elem should not contain Document kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 Formula elem contains Document kid @@ -19614,10 +19614,10 @@ - + Formula elem should not contain DocumentFragment kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 Formula elem contains DocumentFragment kid @@ -19626,10 +19626,10 @@ - + Formula elem should not contain Art kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 Formula elem contains Art kid @@ -19638,10 +19638,10 @@ - + Formula elem should not contain Sect kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 Formula elem contains Sect kid @@ -19650,10 +19650,10 @@ - + Formula elem should not contain TOC kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 Formula elem contains TOC kid @@ -19662,10 +19662,10 @@ - + Formula elem should not contain TOCI kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 Formula elem contains TOCI kid @@ -19674,10 +19674,10 @@ - + Formula elem should contain zero or one H kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Formula contains more than one H kid @@ -19686,10 +19686,10 @@ - + Formula elem should not contain Title kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 Formula elem contains Title kid @@ -19698,10 +19698,10 @@ - + Formula elem should not contain RB kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 Formula elem contains RB kid @@ -19710,10 +19710,10 @@ - + Formula elem should not contain RT kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 Formula elem contains RT kid @@ -19722,10 +19722,10 @@ - + Formula elem should not contain RP kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 Formula elem contains RP kid @@ -19734,10 +19734,10 @@ - + Formula elem should not contain WT kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 Formula elem contains WT kid @@ -19746,10 +19746,10 @@ - + Formula elem should not contain WP kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 Formula elem contains WP kid @@ -19758,10 +19758,10 @@ - + Formula elem should not contain LI kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 Formula elem contains LI kid @@ -19770,10 +19770,10 @@ - + Formula elem should not contain LBody kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 Formula elem contains LBody kid @@ -19782,10 +19782,10 @@ - + Formula elem should not contain TR kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 Formula elem contains TR kid @@ -19794,10 +19794,10 @@ - + Formula elem should not contain TH kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 Formula elem contains TH kid @@ -19806,10 +19806,10 @@ - + Formula elem should not contain TD kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 Formula elem contains TD kid @@ -19818,10 +19818,10 @@ - + Formula elem should not contain THead kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 Formula elem contains THead kid @@ -19830,10 +19830,10 @@ - + Formula elem should not contain TBody kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 Formula elem contains TBody kid @@ -19842,10 +19842,10 @@ - + Formula elem should not contain TFoot kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0) + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 Formula elem contains TFoot kid @@ -19854,10 +19854,10 @@ - + Formula elem should contain zero or one Caption kid - (standardType != 'Formula') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Formula contains more than one Caption kid @@ -19866,10 +19866,10 @@ - + Artifact elem should contain zero or one H kid - (standardType != 'Artifact') || (kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 Artifact contains more than one H kid @@ -19878,10 +19878,10 @@ - + Artifact elem should contain zero or one Caption kid - (standardType != 'Artifact') || (kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1) + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 Artifact contains more than one Caption kid diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index f8fa4a05..71495d24 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -67,7 +67,7 @@ - + @@ -366,7 +366,7 @@ Natural language for text in ActualText attribute shall be determined - ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 Natural language for text in ActualText attribute cannot be determined @@ -376,7 +376,7 @@ Natural language for text in Alt attribute shall be determined - Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 Natural language for text in Alt attribute cannot be determined @@ -386,7 +386,7 @@ Natural language for text in E attribute shall be determined - E == null || Lang_size != 0 || gSizeCatalogLang != 0 + E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 Natural language for text in E attribute cannot be determined @@ -459,30 +459,30 @@ - Natural language for text in ActualText attribute shall be determined + Natural language for text in ActualText attribute in Span Marked Content shall be determined tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - Natural language for text in ActualText attribute cannot be determined + Natural language for text in ActualText attribute in Span Marked Content cannot be determined - Natural language for text in Alt attribute shall be determined + Natural language for text in Alt attribute in Span Marked Content shall be determined tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - Natural language for text in Alt attribute cannot be determined + Natural language for text in Alt attribute in Span Marked Content cannot be determined - Natural language for text in E attribute shall be determined + Natural language for text in E attribute in Span Marked Content shall be determined tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - Natural language for text in E attribute cannot be determined + Natural language for text in E attribute in Span Marked Content cannot be determined @@ -707,7 +707,7 @@ - An annotation, excluding annotations of subtype Widget, Popup or Link, shall nested within an Annot tag + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || structParentType == 'Annot' An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag @@ -731,12 +731,12 @@ - + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) - Subtype != 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') + isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') A form field whose hidden flag is not set and whose rectangle is not outside the crop-box and does not have a TU key and its Widget annotations do not have alternative descriptions @@ -745,10 +745,10 @@ - + Annotations of subtype TrapNet shall not be permitted. - Subtype != 'TrapNet' + false An annotation of subtype TrapNet exists @@ -765,10 +765,10 @@ - + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. - Subtype != 'Widget' || structParentType == 'Form' + structParentType == 'Form' A widget annotation is not nested within a Form tag @@ -777,10 +777,10 @@ - + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - Subtype != 'Link' || structParentType == 'Link' + structParentType == 'Link' A link annotation is not nested within a Link tag @@ -789,10 +789,10 @@ - + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. - Subtype != 'Link' || (Contents != null && Contents != '') + Contents != null && Contents != '' A link annotation does not include an alternate description in the Contents Key @@ -828,16 +828,18 @@ - + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. - Subtype != 'PrinterMark' || structParentType == null + structParentType == null A PrinterMark annotation is included in logical structure - + + + @@ -1025,9 +1027,12 @@ - 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. + 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || (Encoding == "Custom" && differencesAreUnicodeCompliant == true) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index aeed5f93..80e65440 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -386,7 +386,7 @@ Natural language for text in ActualText attribute shall be determined - ActualText == null || Lang_size != 0 || gSizeCatalogLang != 0 + ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 Natural language for text in ActualText attribute cannot be determined @@ -396,7 +396,7 @@ Natural language for text in Alt attribute shall be determined - Alt == null || Lang_size != 0 || gSizeCatalogLang != 0 + Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 Natural language for text in Alt attribute cannot be determined @@ -406,7 +406,7 @@ Natural language for text in E attribute shall be determined - E == null || Lang_size != 0 || gSizeCatalogLang != 0 + E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 Natural language for text in E attribute cannot be determined @@ -479,30 +479,30 @@ - Natural language for text in ActualText attribute shall be determined + Natural language for text in ActualText attribute in Span Marked Content shall be determined tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - Natural language for text in ActualText attribute cannot be determined + Natural language for text in ActualText attribute in Span Marked Content cannot be determined - Natural language for text in Alt attribute shall be determined + Natural language for text in Alt attribute in Span Marked Content shall be determined tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - Natural language for text in Alt attribute cannot be determined + Natural language for text in Alt attribute in Span Marked Content cannot be determined - Natural language for text in E attribute shall be determined + Natural language for text in E attribute in Span Marked Content shall be determined tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - Natural language for text in E attribute cannot be determined + Natural language for text in E attribute in Span Marked Content cannot be determined @@ -727,7 +727,7 @@ - An annotation, excluding annotations of subtype Widget, Popup or Link, shall nested within an Annot tag + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || structParentType == 'Annot' An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag @@ -751,12 +751,12 @@ - + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) - Subtype != 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') + isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') A form field whose hidden flag is not set and whose rectangle is not outside the crop-box and does not have a TU key and its Widget annotations do not have alternative descriptions @@ -765,10 +765,10 @@ - + Annotations of subtype TrapNet shall not be permitted. - Subtype != 'TrapNet' + false An annotation of subtype TrapNet exists @@ -785,10 +785,10 @@ - + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. - Subtype != 'Widget' || structParentType == 'Form' + structParentType == 'Form' A widget annotation is not nested within a Form tag @@ -797,10 +797,10 @@ - + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - Subtype != 'Link' || structParentType == 'Link' + structParentType == 'Link' A link annotation is not nested within a Link tag @@ -809,10 +809,10 @@ - + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. - Subtype != 'Link' || (Contents != null && Contents != '') + Contents != null && Contents != '' A link annotation does not include an alternate description in the Contents Key @@ -848,16 +848,18 @@ - + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. - Subtype != 'PrinterMark' || structParentType == null + structParentType == null A PrinterMark annotation is included in logical structure - + + + diff --git a/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml b/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml index b86e4a7e..c4ae9300 100644 --- a/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml +++ b/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml @@ -1,5 +1,5 @@ - +
ISO 14289-1:2014 - 1.3 Adaptable - 1.3.4 Orientation - Single display orientation Pages shall have the same orientation From db14b925a9114a18c0ed007b60f171fbfd05ce10 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 19 Oct 2020 15:54:11 +0300 Subject: [PATCH 326/557] Fix rules with annotations --- .../verapdf-profile-6-3-8-t01.xml | 4 +-- .../verapdf-profile-6-1-3-t04.xml | 2 +- .../verapdf-profile-6-6-1-t03.xml | 4 +-- .../verapdf-profile-6-6-2-t01.xml | 4 +-- .../verapdf-profile-6-9-t02.xml | 16 ++++++------ .../verapdf-profile-6-9-t03.xml | 21 --------------- .../verapdf-profile-6-4-1-t01.xml | 4 +-- .../verapdf-profile-6-6-2-1-t01.xml | 4 +-- .../verapdf-profile-6-6-2-1-t04.xml | 2 +- PDF_A/PDFA-1A.xml | 26 ++++++------------- PDF_A/PDFA-1B.xml | 24 +++++------------ PDF_A/PDFA-2A.xml | 4 +-- PDF_A/PDFA-2B.xml | 4 +-- PDF_A/PDFA-2U.xml | 4 +-- PDF_A/PDFA-3A.xml | 4 +-- PDF_A/PDFA-3B.xml | 4 +-- PDF_A/PDFA-3U.xml | 4 +-- .../verapdf-profile-7-18-1-t01.xml | 3 ++- .../verapdf-profile-7-18-2-t01.xml | 2 +- .../verapdf-profile-7-18-4-t01.xml | 2 +- .../verapdf-profile-7-18-5-t01.xml | 2 +- .../verapdf-profile-7-18-5-t02.xml | 2 +- .../verapdf-profile-7-18-8-t01.xml | 2 +- PDF_UA/PDFUA-1.xml | 13 +++++----- PDF_UA/WCAG-21-Complete.xml | 13 +++++----- 25 files changed, 68 insertions(+), 106 deletions(-) delete mode 100644 PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml diff --git a/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml b/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml index ec315878..8439a4f9 100644 --- a/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml +++ b/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml @@ -6,7 +6,7 @@ as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections.
@@ -16,7 +16,7 @@ as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections. + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections. toUnicode != null The font does not define Unicode character map diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml index 164cd596..9962bc35 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml @@ -11,7 +11,7 @@ In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - (isLinearized != true)|| lastID == null || (firstPageID == lastID) + (isLinearized != true) || lastID == null || (firstPageID == lastID) Last ID is present in the Linearized PDF and does not match the first page ID diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml index f695ac5d..d8485539 100644 --- a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml @@ -6,10 +6,10 @@
- + Interactive form fields shall not perform actions of any type - Subtype != "Widget" || containsA == false + containsA == false Interactive form field contains an action object ('A' key) diff --git a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml index 1fb6ee7b..641f18df 100644 --- a/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml +++ b/PDF_A/1b/6.6 Actions/6.6.2 Trigger events/verapdf-profile-6-6-2-t01.xml @@ -6,10 +6,10 @@
- + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || containsAA == false + containsAA == false A Widget annotation contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml index bb140aae..471a2d2f 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml @@ -1,17 +1,17 @@ - -
- ISO 19005-1:2005 - 6.9 Interactive Fields - Widget annotations - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys + +
+ ISO 19005-1:2005 - 6.9 Interactive Forms - Form field appearance + Every form field shall have an appearance dictionary associated with the field's data.
- + - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (containsA == false && containsAA == false) + Every form field shall have an appearance dictionary associated with the field's data. + AP != null - A Widget annotation contains either A or AA entry + Form field does not have an appearance dictionary associated with the field's data. diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml deleted file mode 100644 index 1248c218..00000000 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t03.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 19005-1:2005 - 6.9 Interactive Forms - Form field appearance - Every form field shall have an appearance dictionary associated with the field's data. -
- - - - - Every form field shall have an appearance dictionary associated with the field's data. - Subtype != "Widget" || AP != null - - Form field does not have an appearance dictionary associated with the field's data. - - - - - - -
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index 4c8fc617..eca1bd7e 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -6,10 +6,10 @@
- + A Widget annotation dictionary shall not contains the A or AA keys. - Subtype != "Widget" || (containsA == false && containsAA == false) + containsA == false && containsAA == false A Widget annotation contains either A or AA entry diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml index 993c1f7b..7f2404e5 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml @@ -15,8 +15,8 @@ - - + + diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml index 77c21a96..c674b349 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml @@ -20,7 +20,7 @@
- +
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 65406616..6bf40a44 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -65,7 +65,7 @@ In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - (isLinearized != true)|| lastID == null || (firstPageID == lastID) + (isLinearized != true) || lastID == null || (firstPageID == lastID) Last ID is present in the Linearized PDF and does not match the first page ID @@ -784,7 +784,7 @@ as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 orAdobe-Korea1 character collections.
+ (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections. toUnicode != null The font does not define Unicode character map @@ -945,20 +945,20 @@ - + Interactive form fields shall not perform actions of any type - Subtype != "Widget" || containsA == false + containsA == false Interactive form field contains an action object ('A' key) - + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || containsAA == false + containsAA == false A Widget annotation contains an additional-actions dictionary (AA entry) @@ -1248,20 +1248,10 @@ - + - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (containsA == false && containsAA == false) - - A Widget annotation contains either A or AA entry - - - - - - Every form field shall have an appearance dictionary associated with the field's data. - Subtype != "Widget" || AP != null + AP != null Form field does not have an appearance dictionary associated with the field's data. diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 141f3377..24e02c85 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -65,7 +65,7 @@ In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical - (isLinearized != true)|| lastID == null || (firstPageID == lastID) + (isLinearized != true) || lastID == null || (firstPageID == lastID) Last ID is present in the Linearized PDF and does not match the first page ID @@ -931,20 +931,20 @@ - + Interactive form fields shall not perform actions of any type - Subtype != "Widget" || containsA == false + containsA == false Interactive form field contains an action object ('A' key) - + A Widget annotation dictionary shall not include an AA entry for an additional-actions dictionary - Subtype != "Widget" || containsAA == false + containsAA == false A Widget annotation contains an additional-actions dictionary (AA entry) @@ -1197,20 +1197,10 @@ - + - A Widget annotation dictionary or Field dictionary shall not contain the A or AA keys - Subtype != "Widget" || (containsA == false && containsAA == false) - - A Widget annotation contains either A or AA entry - - - - - - Every form field shall have an appearance dictionary associated with the field's data. - Subtype != "Widget" || AP != null + AP != null Form field does not have an appearance dictionary associated with the field's data. diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 747a2097..e0b6760d 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1102,10 +1102,10 @@ - + A Widget annotation dictionary shall not contains the A or AA keys. - Subtype != "Widget" || (containsA == false && containsAA == false) + containsA == false && containsAA == false A Widget annotation contains either A or AA entry diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 9b50ae7c..2f3d3bfe 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1064,10 +1064,10 @@ - + A Widget annotation dictionary shall not contains the A or AA keys. - Subtype != "Widget" || (containsA == false && containsAA == false) + containsA == false && containsAA == false A Widget annotation contains either A or AA entry diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 441fa346..eadd8d01 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1087,10 +1087,10 @@ - + A Widget annotation dictionary shall not contains the A or AA keys. - Subtype != "Widget" || (containsA == false && containsAA == false) + containsA == false && containsAA == false A Widget annotation contains either A or AA entry diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 4d3126e8..cd9b7531 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1102,10 +1102,10 @@ - + A Widget annotation dictionary shall not contains the A or AA keys. - Subtype != "Widget" || (containsA == false && containsAA == false) + containsA == false && containsAA == false A Widget annotation contains either A or AA entry diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d7e9158d..1ece98c5 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1064,10 +1064,10 @@ - + A Widget annotation dictionary shall not contains the A or AA keys. - Subtype != "Widget" || (containsA == false && containsAA == false) + containsA == false && containsAA == false A Widget annotation contains either A or AA entry diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index bbab4ed2..e221bd67 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1087,10 +1087,10 @@ - + A Widget annotation dictionary shall not contains the A or AA keys. - Subtype != "Widget" || (containsA == false && containsAA == false) + containsA == false && containsAA == false A Widget annotation contains either A or AA entry diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml index 94779f1a..4e731bd7 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml @@ -9,7 +9,8 @@ An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || structParentType == 'Annot' + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || + (F & 2) == 2 || structParentType == 'Annot' An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag diff --git a/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml index 34fdcd5c..40730cde 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml @@ -9,7 +9,7 @@ Annotations of subtype TrapNet shall not be permitted. - false + isOutsideCropBox == true || (F & 2) == 2 An annotation of subtype TrapNet exists diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml index 7d84d466..466b8443 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml @@ -9,7 +9,7 @@ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. - structParentType == 'Form' + structParentType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 A widget annotation is not nested within a Form tag diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml index 8e7f0f8e..8b108da3 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml @@ -9,7 +9,7 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - structParentType == 'Link' + structParentType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 A link annotation is not nested within a Link tag diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml index 55e734d4..fe19294d 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml @@ -9,7 +9,7 @@ Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. - Contents != null && Contents != '' + (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 A link annotation does not include an alternate description in the Contents Key diff --git a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml index ea3dba9c..bab37b17 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml @@ -11,7 +11,7 @@ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. - structParentType == null + structParentType == null || isOutsideCropBox == true || (F & 2) == 2 A PrinterMark annotation is included in logical structure diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 71495d24..cfea9e07 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -708,7 +708,8 @@ An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || structParentType == 'Annot' + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || + (F & 2) == 2 || structParentType == 'Annot' An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag @@ -748,7 +749,7 @@ Annotations of subtype TrapNet shall not be permitted. - false + isOutsideCropBox == true || (F & 2) == 2 An annotation of subtype TrapNet exists @@ -768,7 +769,7 @@ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. - structParentType == 'Form' + structParentType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 A widget annotation is not nested within a Form tag @@ -780,7 +781,7 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - structParentType == 'Link' + structParentType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 A link annotation is not nested within a Link tag @@ -792,7 +793,7 @@ Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. - Contents != null && Contents != '' + (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 A link annotation does not include an alternate description in the Contents Key @@ -832,7 +833,7 @@ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. - structParentType == null + structParentType == null || isOutsideCropBox == true || (F & 2) == 2 A PrinterMark annotation is included in logical structure diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 80e65440..9f5eb52a 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -728,7 +728,8 @@ An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || structParentType == 'Annot' + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || + (F & 2) == 2 || structParentType == 'Annot' An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag @@ -768,7 +769,7 @@ Annotations of subtype TrapNet shall not be permitted. - false + isOutsideCropBox == true || (F & 2) == 2 An annotation of subtype TrapNet exists @@ -788,7 +789,7 @@ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. - structParentType == 'Form' + structParentType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 A widget annotation is not nested within a Form tag @@ -800,7 +801,7 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - structParentType == 'Link' + structParentType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 A link annotation is not nested within a Link tag @@ -812,7 +813,7 @@ Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. - Contents != null && Contents != '' + (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 A link annotation does not include an alternate description in the Contents Key @@ -852,7 +853,7 @@ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. - structParentType == null + structParentType == null || isOutsideCropBox == true || (F & 2) == 2 A PrinterMark annotation is included in logical structure From 6fbbaa3dc4d8a0510a43c57468a3877c3321d49d Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 21 Dec 2020 15:54:38 +0300 Subject: [PATCH 327/557] Add PDF/A-4 profiles. --- .../verapdf-profile-6-1-11-t01.xml | 23 +++++++++++ .../verapdf-profile-6-1-2-t01.xml | 23 +++++++++++ .../verapdf-profile-6-1-2-t02.xml | 23 +++++++++++ .../verapdf-profile-6-1-3-t01.xml | 23 +++++++++++ .../verapdf-profile-6-1-3-t02.xml | 21 ++++++++++ .../verapdf-profile-6-1-3-t03.xml | 23 +++++++++++ .../verapdf-profile-6-1-4-t01.xml | 21 ++++++++++ .../verapdf-profile-6-1-5-t01.xml | 21 ++++++++++ .../verapdf-profile-6-1-5-t02.xml | 21 ++++++++++ .../verapdf-profile-6-1-6-1-t01.xml | 23 +++++++++++ .../verapdf-profile-6-1-6-1-t02.xml | 21 ++++++++++ .../verapdf-profile-6-1-6-2-t01.xml | 35 ++++++++++++++++ .../verapdf-profile-6-1-7-t01.xml | 25 ++++++++++++ .../verapdf-profile-6-1-8-t01.xml | 25 ++++++++++++ .../verapdf-profile-6-1-9-t01.xml | 32 +++++++++++++++ .../verapdf-profile-6-10-t01.xml | 23 +++++++++++ .../verapdf-profile-6-10-t02.xml | 23 +++++++++++ .../verapdf-profile-6-10-t03.xml | 23 +++++++++++ .../verapdf-profile-6-11-t01.xml | 21 ++++++++++ .../verapdf-profile-6-11-t02.xml | 21 ++++++++++ .../verapdf-profile-6-12-t01.xml | 21 ++++++++++ .../verapdf-profile-6-2-10-2-t01.xml | 30 ++++++++++++++ .../verapdf-profile-6-2-10-2-t02.xml | 35 ++++++++++++++++ .../verapdf-profile-6-2-10-2-t03.xml | 29 ++++++++++++++ .../verapdf-profile-6-2-10-2-t04.xml | 28 +++++++++++++ .../verapdf-profile-6-2-10-2-t05.xml | 28 +++++++++++++ .../verapdf-profile-6-2-10-2-t06.xml | 28 +++++++++++++ .../verapdf-profile-6-2-10-2-t07.xml | 31 ++++++++++++++ .../verapdf-profile-6-2-10-3-1-t01.xml | 33 +++++++++++++++ .../verapdf-profile-6-2-10-3-2-t01.xml | 27 +++++++++++++ .../verapdf-profile-6-2-10-3-3-t01.xml | 40 +++++++++++++++++++ .../verapdf-profile-6-2-10-3-3-t02.xml | 23 +++++++++++ .../verapdf-profile-6-2-10-3-3-t03.xml | 38 ++++++++++++++++++ .../verapdf-profile-6-2-10-4-1-t01.xml | 25 ++++++++++++ .../verapdf-profile-6-2-10-4-1-t02.xml | 23 +++++++++++ .../verapdf-profile-6-2-10-5-t01.xml | 25 ++++++++++++ .../verapdf-profile-6-2-10-6-t01.xml | 26 ++++++++++++ .../verapdf-profile-6-2-10-6-t02.xml | 30 ++++++++++++++ .../verapdf-profile-6-2-10-6-t03.xml | 21 ++++++++++ .../verapdf-profile-6-2-10-6-t04.xml | 26 ++++++++++++ .../verapdf-profile-6-2-10-7-t01.xml | 23 +++++++++++ .../verapdf-profile-6-2-10-9-t01.xml | 23 +++++++++++ .../verapdf-profile-6-2-2-t01.xml | 22 ++++++++++ .../verapdf-profile-6-2-2-t02.xml | 25 ++++++++++++ .../verapdf-profile-6-2-3-t01.xml | 25 ++++++++++++ .../verapdf-profile-6-2-3-t03.xml | 23 +++++++++++ .../verapdf-profile-6-2-4-2-t01.xml | 24 +++++++++++ .../verapdf-profile-6-2-4-2-t02.xml | 27 +++++++++++++ .../verapdf-profile-6-2-4-4-t01.xml | 23 +++++++++++ .../verapdf-profile-6-2-4-4-t02.xml | 26 ++++++++++++ .../verapdf-profile-6-2-5-t01.xml | 23 +++++++++++ .../verapdf-profile-6-2-5-t02.xml | 21 ++++++++++ .../verapdf-profile-6-2-5-t04.xml | 21 ++++++++++ .../verapdf-profile-6-2-5-t05.xml | 21 ++++++++++ .../verapdf-profile-6-2-5-t06.xml | 25 ++++++++++++ .../verapdf-profile-6-2-7-1-t01.xml | 21 ++++++++++ .../verapdf-profile-6-2-7-1-t02.xml | 21 ++++++++++ .../verapdf-profile-6-2-7-1-t03.xml | 23 +++++++++++ .../verapdf-profile-6-2-7-3-t01.xml | 21 ++++++++++ .../verapdf-profile-6-2-7-3-t02.xml | 23 +++++++++++ .../verapdf-profile-6-2-7-3-t03.xml | 23 +++++++++++ .../verapdf-profile-6-2-7-3-t04.xml | 21 ++++++++++ .../verapdf-profile-6-2-7-3-t05.xml | 21 ++++++++++ .../verapdf-profile-6-2-8-1-t01.xml | 21 ++++++++++ .../verapdf-profile-6-2-8-2-t01.xml | 21 ++++++++++ .../verapdf-profile-6-3-1-t01.xml | 30 ++++++++++++++ .../verapdf-profile-6-3-2-t01.xml | 21 ++++++++++ .../verapdf-profile-6-3-2-t02.xml | 21 ++++++++++ .../verapdf-profile-6-3-3-t01.xml | 31 ++++++++++++++ .../verapdf-profile-6-3-3-t02.xml | 26 ++++++++++++ .../verapdf-profile-6-4-1-t01.xml | 21 ++++++++++ .../verapdf-profile-6-4-1-t02.xml | 21 ++++++++++ .../verapdf-profile-6-4-2-t01.xml | 23 +++++++++++ .../verapdf-profile-6-4-2-t02.xml | 21 ++++++++++ .../verapdf-profile-6-6-1-t01.xml | 27 +++++++++++++ .../verapdf-profile-6-6-1-t02.xml | 23 +++++++++++ .../verapdf-profile-6-7-2-1-t01.xml | 25 ++++++++++++ .../verapdf-profile-6-7-2-1-t02.xml | 21 ++++++++++ .../verapdf-profile-6-7-2-1-t03.xml | 21 ++++++++++ .../verapdf-profile-6-7-2-1-t04.xml | 27 +++++++++++++ .../verapdf-profile-6-7-3-t01.xml | 21 ++++++++++ .../verapdf-profile-6-7-3-t02.xml | 23 +++++++++++ .../verapdf-profile-6-7-3-t03.xml | 21 ++++++++++ .../verapdf-profile-6-9-t01.xml | 25 ++++++++++++ .../verapdf-profile-6-9-t02.xml | 21 ++++++++++ .../verapdf-profile-6-3-1-t01.xml | 32 +++++++++++++++ .../verapdf-profile-6-6-1-t01.xml | 30 ++++++++++++++ .../verapdf-profile-6-7-3-t03.xml | 23 +++++++++++ .../verapdf-profile-6-3-1-t01.xml | 31 ++++++++++++++ .../verapdf-profile-6-7-3-t03.xml | 23 +++++++++++ .../verapdf-profile-6-9-t04.xml | 26 ++++++++++++ 91 files changed, 2241 insertions(+) create mode 100644 PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t01.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t02.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml create mode 100644 PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml create mode 100644 PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml create mode 100644 PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml create mode 100644 PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t01.xml create mode 100644 PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t02.xml create mode 100644 PDF_A/4/6.12 Document requirements/verapdf-profile-6-12-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t03.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t04.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t05.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t03.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.9 Use of .notdef glyph/verapdf-profile-6-2-10-9-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t03.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.1 Form XObjects/verapdf-profile-6-2-8-1-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.2 Reference XObjects/verapdf-profile-6-2-8-2-t01.xml create mode 100644 PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml create mode 100644 PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml create mode 100644 PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml create mode 100644 PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml create mode 100644 PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml create mode 100644 PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml create mode 100644 PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml create mode 100644 PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml create mode 100644 PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml create mode 100644 PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml create mode 100644 PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml create mode 100644 PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t01.xml create mode 100644 PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml create mode 100644 PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t03.xml create mode 100644 PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml create mode 100644 PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml create mode 100644 PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml create mode 100644 PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml create mode 100644 PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml create mode 100644 PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t02.xml create mode 100644 PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml create mode 100644 PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml create mode 100644 PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml create mode 100644 PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml create mode 100644 PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml create mode 100644 PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t04.xml diff --git a/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml b/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml new file mode 100644 index 00000000..b3bf42fa --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.1.11 Permissions - UR3 and DocMDP + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). +
+ + + + + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). + containsOtherEntries == false + + The document permissions dictionary contains keys other than UR3 and DocMDP + + + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml new file mode 100644 index 00000000..2f7ded54 --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.1.2 File header - PDF header + The file header shall begin at byte zero and shall consist of “%PDF-2.n” followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 9 (39h) +
+ + + + + The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 9 (39h) + headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-4 specification + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml new file mode 100644 index 00000000..004ee1f7 --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.1.2 File header - Binary comment + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values + shall have a decimal value greater than 127 +
+ + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml new file mode 100644 index 00000000..cce59394 --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.1.3 File trailer - ID keyword + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 +
+ + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID != null && lastID.length() > 0 + + Missing ID in the document trailer + + + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml new file mode 100644 index 00000000..fb277ec8 --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.1.3 File trailer - Encrypt + The Encrypt key shall not be present in the trailer dictionary. +
+ + + + + The Encrypt key shall not be present in the trailer dictionary. + isEncrypted != true + + The Encrypt key is present in the trailer dictionary + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml new file mode 100644 index 00000000..0c58af9d --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.1.3 File trailer - EOF + No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. +
+ + + + + No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml b/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml new file mode 100644 index 00000000..623013cd --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.1.4 Cross reference table - Spacings after xref + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker +
+ + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t01.xml b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t01.xml new file mode 100644 index 00000000..2a81b2da --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.1.5 String objects - Even number of characters + The number of hexadecimal digits in a hexadecimal string shall always be even +
+ + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t02.xml b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t02.xml new file mode 100644 index 00000000..1ad63180 --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.1.5 String objects - Characters range + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) +
+ + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml new file mode 100644 index 00000000..51e2a047 --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.1.6 Stream objects - 6.1.6.1 General - Correct Length + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. +
+ + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml new file mode 100644 index 00000000..7ae23228 --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.1.6 Stream objects - 6.1.6.1 General - File specification + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys +
+ + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml new file mode 100644 index 00000000..e43ae840 --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml @@ -0,0 +1,35 @@ + + +
+ ISO 19005-4:2020 - 6.1.6 Stream objects - 6.1.6.2 Filters + All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the + exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. In + addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters + dictionary is Identity. +
+ + + + + All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the + exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. + In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || + internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || + (internalRepresentation == "Crypt" && decodeParms == "Identity") + + + LZW compression is used + + + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml new file mode 100644 index 00000000..4c08e70a --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-4:2020 - 6.1.7 Name objects + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. +
+ + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml new file mode 100644 index 00000000..eb0ebf5c --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-4:2020 - 6.1.8 Indirect objects - Spacings + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. +
+ + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml b/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml new file mode 100644 index 00000000..3f99cb88 --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml @@ -0,0 +1,32 @@ + + +
+ ISO 19005-4:2020 - 6.1.9 Inline image dictionaries + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, + or an array containing any such value. +
+ + + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, + or an array containing any such value. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || + internalRepresentation == "AHx" || internalRepresentation == "A85" || + internalRepresentation == "Fl" || internalRepresentation == "RL" || + internalRepresentation == "CCF" || internalRepresentation == "DCT" + + + Inline image uses LZW, Crypt or one of the unknown filters + + + + + + + + +
diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml new file mode 100644 index 00000000..53d9e3a8 --- /dev/null +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.10 Optional content - Name key present + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. +
+ + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + +
diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml new file mode 100644 index 00000000..53d5c53f --- /dev/null +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.10 Optional content - Name key unique + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-4 file. +
+ + + + + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-4 file. + hasDuplicateName == false + + Optional content configuration dictionary has duplicated name + + + + + + +
diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml new file mode 100644 index 00000000..a9e645c1 --- /dev/null +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.10 Optional content - Order key + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. +
+ + + + + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. + doesOrderContainAllOCGs == true + + Not all optional content groups are present in the Order entry of the optional content configuration dictionary + + + + + + +
diff --git a/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t01.xml b/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t01.xml new file mode 100644 index 00000000..a5e4c2ed --- /dev/null +++ b/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.11 Use of alternate presentations and transitions - AlternatePresentations + There shall be no AlternatePresentations entry in the document's name dictionary +
+ + + + + There shall be no AlternatePresentations entry in the document's name dictionary + containsAlternatePresentations == false + + The document's name dictionary contains the AlternatePresentations entry + + + + + + +
diff --git a/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t02.xml b/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t02.xml new file mode 100644 index 00000000..66c6a7cc --- /dev/null +++ b/PDF_A/4/6.11 Use of alternate presentations and transitions/verapdf-profile-6-11-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.11 Use of alternate presentations and transitions - PresSteps + There shall be no PresSteps entry in any Page dictionary +
+ + + + + There shall be no PresSteps entry in any Page dictionary + containsPresSteps == false + + A Page dictionary contains the PresSteps entry + + + + + + +
diff --git a/PDF_A/4/6.12 Document requirements/verapdf-profile-6-12-t01.xml b/PDF_A/4/6.12 Document requirements/verapdf-profile-6-12-t01.xml new file mode 100644 index 00000000..96fc5e7b --- /dev/null +++ b/PDF_A/4/6.12 Document requirements/verapdf-profile-6-12-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.12 Document requirements + The document catalog shall not contain the Requirements key +
+ + + + + The document catalog shall not contain the Requirements key + Requirements == null + + The document catalog contains the Requirements key + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t01.xml new file mode 100644 index 00000000..4d00c245 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t01.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - Type entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary +
+ + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t02.xml new file mode 100644 index 00000000..f261ad2c --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t02.xml @@ -0,0 +1,35 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - Subtype entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts +
+ + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t03.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t03.xml new file mode 100644 index 00000000..d157ff60 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t03.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - BaseFont entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font +
+ + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t04.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t04.xml new file mode 100644 index 00000000..49c2a67a --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t04.xml @@ -0,0 +1,28 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - FirstChar entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array +
+ + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t05.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t05.xml new file mode 100644 index 00000000..93274051 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t05.xml @@ -0,0 +1,28 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - LastChat entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array +
+ + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml new file mode 100644 index 00000000..17299790 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml @@ -0,0 +1,28 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - Widths entry + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths +
+ + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml new file mode 100644 index 00000000..71e6bed8 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml @@ -0,0 +1,31 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.2 Font types - embedded fond Subtype + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. +
+ + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + + Unsupported font file format of the embedded font + + + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml new file mode 100644 index 00000000..e4696802 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml @@ -0,0 +1,33 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - CIDSystemInfo + 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 greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. +
+ + + + + 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 greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml new file mode 100644 index 00000000..a0c13990 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - CIDToGIDMap + ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. +
+ + + + + ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml new file mode 100644 index 00000000..1d184307 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml @@ -0,0 +1,40 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - CMaps + All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, 9.7.5.2 + Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5. +
+ + + + + All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, + 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5. + 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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml new file mode 100644 index 00000000..e38176ce --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - WMode + 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. +
+ + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml new file mode 100644 index 00000000..70271355 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml @@ -0,0 +1,38 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - CMaps + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116. +
+ + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116. + 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" + + A CMap references another non-standard CMap + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t01.xml new file mode 100644 index 00000000..77cdcbd5 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.4 Embedding - General + 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. +
+ + + + + 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. + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml new file mode 100644 index 00000000..f0b5e7dd --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.4 Embedding - Glyphs + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. +
+ + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml new file mode 100644 index 00000000..05fd5833 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.5 Font metrics + For every font embedded in a conforming file, the glyph width information in the font dictionary + and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that + are referenced only with rendering mode 3 are exempt from this requirement. +
+ + + + + For every font embedded in a conforming file, the glyph width information in the font + dictionary and in the embedded font program shall be consistent for every glyph referenced for + rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml new file mode 100644 index 00000000..911a2599 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - cmaps for non-symbolic TrueType fonts + 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 that all necessary glyph lookups are able to be carried out. +
+ + + + + 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 that all necessary glyph lookups are able to be carried out. + isSymbolic == true || cmap31Present == true || cmap10Present == true + + The embedded font program for a non-symbolic TrueType font does not contain contain Microsoft + Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding. + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml new file mode 100644 index 00000000..dbd3b4d9 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - Non-symbolic TrueType fonts + 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' subtable. +
+ + + + + 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' subtable. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t03.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t03.xml new file mode 100644 index 00000000..60855fc2 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t03.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - Symbolic TrueType fonts + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary +
+ + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml new file mode 100644 index 00000000..f8c0091d --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - cmaps in the symbolic TrueType font program + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and 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=0) encoding. +
+ + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and 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=0) encoding. + isSymbolic == false || cmap30Present == true || cmap10Present == true + + 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. + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml new file mode 100644 index 00000000..49a5958a --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.7 Unicode character maps - Valid Unicode values + If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than + zero (0), but not equal to either U+FEFF or U+FFFE. +
+ + + + + If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than + zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.9 Use of .notdef glyph/verapdf-profile-6-2-10-9-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.9 Use of .notdef glyph/verapdf-profile-6-2-10-9-t01.xml new file mode 100644 index 00000000..0ad63abe --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.9 Use of .notdef glyph/verapdf-profile-6-2-10-9-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.9 Use of .notdef glyph + A PDF/A-4 compliant document 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. +
+ + + + + A PDF/A-4 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml new file mode 100644 index 00000000..bd5bb313 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml @@ -0,0 +1,22 @@ + + +
+ ISO 19005-4:2020 - 6.2.2 Content streams + Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed by the BX/EX compatibility operators. +
+ + + + + Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed + by the BX/EX compatibility operators. + false + + A content stream contains an operator not defined in ISO 32000-2:2020 + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml new file mode 100644 index 00000000..b11f1564 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-4:2020 - 6.2.2 Content streams - Resources dictionary + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. +
+ + + + + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. + isInherited == false + + A content stream refers to resources not defined in an explicitly associated Resources dictionary + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml new file mode 100644 index 00000000..1245bde2 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-4:2020 - 6.2.3 Output intent - Valid ICC output profile + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". +
+ + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml new file mode 100644 index 00000000..4fc7147a --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.2.3 Output intent - DestOutputProfileRef entry + In addition, the DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. +
+ + + + + In addition, the DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + containsDestOutputProfileRef == false + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml new file mode 100644 index 00000000..41fe3a05 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml @@ -0,0 +1,24 @@ + + +
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased colour spaces + The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5. +
+ + + + + The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 2.0 requirements + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml new file mode 100644 index 00000000..17879492 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased color spaces + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. +
+ + + + + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. + overprintFlag == false || OPM == 0 + + Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml new file mode 100644 index 00000000..58ce7526 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - DeviceN colorants + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. +
+ + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml new file mode 100644 index 00000000..b83f83a7 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - Consistency of Separations + All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the same name shall have the + same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the + use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. +
+ + + + + All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml new file mode 100644 index 00000000..2dee30a7 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - TR key + A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key +
+ + + + + A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key + TR == null + + An graphics state parameter dictionary contains the TR key + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml new file mode 100644 index 00000000..4af59bd6 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - TR2 key + A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default +
+ + + + + A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An graphics state parameter dictionary contains the TR2 key with a value other than Default + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml new file mode 100644 index 00000000..64c47b82 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - Halftone type + All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. +
+ + + + + All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml new file mode 100644 index 00000000..7606b3ac --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - Halftone name + Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key. +
+ + + + + Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml new file mode 100644 index 00000000..39e4a6dd --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - TransferFunction in halftones + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. +
+ + + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. + colorantName == null || colorantName == 'Default' || ((colorantName == 'Cyan' || + colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? + TransferFunction == null : TransferFunction != null) + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t01.xml new file mode 100644 index 00000000..a5a0561c --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.7 Images - 6.2.7.1 General - Alternates + An Image dictionary shall not contain the Alternates key +
+ + + + + An Image dictionary shall not contain the Alternates key + containsAlternates == false + + Alternates key is present in the Image dictionary( + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml new file mode 100644 index 00000000..531f27c8 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.7 Images - 6.2.7.1 General - OPI + An Image dictionary shall not contain the OPI key. +
+ + + + + An Image dictionary shall not contain the OPI key + containsOPI == false + + OPI key is present in the XObject dictionary( + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t03.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t03.xml new file mode 100644 index 00000000..5e1ab1bc --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.2.7 Images - 6.2.7.1 General - Interpolate + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, + the I key, if present, shall have a value of false. +
+ + + + + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline + image, the I key, if present, shall have a value of false. + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml new file mode 100644 index 00000000..5fa23b21 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Number of channels + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. +
+ + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 + + JPEG2000 image has number of colour channels different from 1, 3 or 4. + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml new file mode 100644 index 00000000..aa91bc8c --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Colour spaces with APPROX field + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. +
+ + + + + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. + nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + + The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml new file mode 100644 index 00000000..daccc72f --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Colour specification method + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only + that colour space and shall ignore all other colour space specifications. +
+ + + + + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only + that colour space and shall ignore all other colour space specifications. + colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + + Colour specification of the JPEG2000 image has specification method. + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml new file mode 100644 index 00000000..fd10e299 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Enumerated colour space + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. +
+ + + + + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + colrEnumCS == null || colrEnumCS != 19 + + JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml new file mode 100644 index 00000000..e94ddf76 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Bit-depth + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. +
+ + + + + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + + JPEG2000 image has invalid bit-depth parameters + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.1 Form XObjects/verapdf-profile-6-2-8-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.1 Form XObjects/verapdf-profile-6-2-8-1-t01.xml new file mode 100644 index 00000000..ec4ef829 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.1 Form XObjects/verapdf-profile-6-2-8-1-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.8 Form XObjects - 6.2.8.1 Form XObjects + A form XObject dictionary shall not contain an OPI key. +
+ + + + + A form XObject dictionary shall not contain an OPI key. + containsOPI == false + + The form XObject dictionary contains an OPI key + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.2 Reference XObjects/verapdf-profile-6-2-8-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.2 Reference XObjects/verapdf-profile-6-2-8-2-t01.xml new file mode 100644 index 00000000..0e7c66c9 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.2 Reference XObjects/verapdf-profile-6-2-8-2-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.8 XObjects - 6.2.8.2 Reference XObjects + A conforming file shall not contain any reference XObjects +
+ + + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + +
diff --git a/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml new file mode 100644 index 00000000..768c4386 --- /dev/null +++ b/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-4:2020 - 6.3.1 Annotation types + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. + Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted. +
+ + + + + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. + Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || + Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || + Subtype == "Projection" + + Unknown or not permitted annotation type + + + + + + + + +
diff --git a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml new file mode 100644 index 00000000..b0eebd44 --- /dev/null +++ b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.3.2 Annotation dictionaries - F key + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. +
+ + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + + + + +
diff --git a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml new file mode 100644 index 00000000..8ea8321e --- /dev/null +++ b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.3.2 Annotation dictionaries - Generic flag values + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. +
+ + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + + + + +
diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml new file mode 100644 index 00000000..ce404a44 --- /dev/null +++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml @@ -0,0 +1,31 @@ + + +
+ ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance + Every annotation (including those whose Subtype value is Widget, as used for form fields), except + for the two cases listed below, shall have at least one appearance dictionary: + Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the + value at index 3 and the value at index 2 is equal to the value at index 4; + - annotations whose Subtype value is Popup or Link. +
+ + + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), + except for the two cases listed below, shall have at least one appearance dictionary: + Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to + the value at index 3 and the value at index 2 is equal to the value at index 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null + + An annotation does not contain an appearance dictionary + + + + + + + + +
diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml new file mode 100644 index 00000000..095e2d7f --- /dev/null +++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. +
+ + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || + (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + +
diff --git a/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml new file mode 100644 index 00000000..82c93a50 --- /dev/null +++ b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.4 Interactive Fields - 6.4.1 General - Widget annotation actions + A Widget annotation dictionary shall not contain the A key +
+ + + + + A Widget annotation dictionary shall not contain the A key. + containsA == false + + A Widget annotation contains A entry + + + + + + +
diff --git a/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml new file mode 100644 index 00000000..00c9f123 --- /dev/null +++ b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.4 Interactive Forms - 6.4.1 General - NeedAppearances flag + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. +
+ + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + +
diff --git a/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml new file mode 100644 index 00000000..f624ddba --- /dev/null +++ b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.4 Interactive Forms - 6.4.2 XFA forms - XFA key + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. +
+ + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + containsXFA == false + + The interactive form dictionary contains the XFA key + + + + + + +
diff --git a/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml new file mode 100644 index 00000000..a3af5895 --- /dev/null +++ b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.4 Interactive Forms - 6.4.2 XFA forms - NeedsRendering flag + A document's Catalog shall not contain the NeedsRendering key. +
+ + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + + + + +
diff --git a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml new file mode 100644 index 00000000..0f246bfa --- /dev/null +++ b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-4:2020 - 6.6 Actions - 6.6.1 General - Action types + The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView + actions shall not be permitted. Additionally, the obsoleted set-state and noop actions shall not be permitted. +
+ + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and + GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and noop actions shall + not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || + S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" + + Unknown or not permitted action type + + + + + + + + +
diff --git a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml new file mode 100644 index 00000000..800cb72e --- /dev/null +++ b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.6 Actions - 6.6.1 General - Named actions + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. +
+ + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + + + + + + +
diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t01.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t01.xml new file mode 100644 index 00000000..5b74410f --- /dev/null +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-4:2020 - 6.7.2.1 General - Metadata key in the Catalog + The document 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.2. +
+ + + + + The document 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.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + +
diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml new file mode 100644 index 00000000..5ad1a433 --- /dev/null +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.7.2.1 Genereal - bytes attribute + The bytes attribute shall not be used in the header of an XMP packet. +
+ + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + +
diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t03.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t03.xml new file mode 100644 index 00000000..4e1dd98d --- /dev/null +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t03.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.7.2.1 General - encoding attribute + The encoding attribute shall not be used in the header of an XMP packet. +
+ + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + +
diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml new file mode 100644 index 00000000..5a3e5c04 --- /dev/null +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-4:2020 - 6.7.2.1 General - Conforms to XMP Specification. + All content of all XMP packets located in any metadata stream present in the PDF shall be + well-formed as defined by XMP (ISO 16684-1). +
+ + + + + All content of all XMP packets located in any metadata stream present in the PDF shall be + well-formed as defined by XMP (ISO 16684-1). + isSerializationValid + + %1 + + errorMessage + + + + + + + + +
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml new file mode 100644 index 00000000..b83b3e17 --- /dev/null +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. +
+ + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + + +
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml new file mode 100644 index 00000000..a39f0deb --- /dev/null +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.7.3 Version identification - Part number. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. +
+ + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 4 + + The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file. + + part + + + + + + +
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml new file mode 100644 index 00000000..c90e9683 --- /dev/null +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.7.3 Version identification - Conformance level. + A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance. +
+ + + + + A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance. + conformance == null + + A file that does not conform to either PDF/A-4e or PDF/A-4f provides pdfaid:conformance. + + + + + + +
diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml new file mode 100644 index 00000000..9240bed3 --- /dev/null +++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-4:2020 - 6.9 Embedded files - Subtype + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. + If the MIME type is not known, the value "application/octet-stream" shall be used. +
+ + + + + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. + If the MIME type is not known, the value "application/octet-stream" shall be used. + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) + + The MIME type information (Subtype entry) of an embedded file is missing or invalid + + + + + + + + +
diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t02.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t02.xml new file mode 100644 index 00000000..757e339d --- /dev/null +++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.9 Embedded files - F and UF keys + The file specification dictionary for an embedded file shall contain the F and UF keys +
+ + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + containsEF == false || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + +
diff --git a/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml new file mode 100644 index 00000000..b116c895 --- /dev/null +++ b/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -0,0 +1,32 @@ + + +
+ ISO 19005-4:2020 - 6.3.1 Annotation types + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. + Additionally, the Sound, Screen and Movie and FileAttachment types shall not be permitted. 3D and RichMedia + types shall only be permitted in a PDF/A-4e compliant file as described in Annex B. +
+ + + + + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. + Additionally, the Sound, Screen, Movie and FileAttachment types shall not be permitted. 3D and RichMedia + types shall only be permitted in a PDF/A-4e compliant file as described in Annex B. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || + Subtype == "Redact" || Subtype == "3D" || Subtype == "Projection" || Subtype == "RichMedia" + + Unknown or not permitted annotation type + + + + + + + + +
diff --git a/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml new file mode 100644 index 00000000..10767281 --- /dev/null +++ b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-4:2020 - 6.6 Actions - 6.6.1 General - Action types + The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be + permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. The SetOCGState + and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in Annex B. +
+ + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be + permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. The + SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in + Annex B. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || + S == "SubmitForm" || S == "SetOCGState" || S == "GoTo3DView" || S == "JavaScript" || + S == "RichMediaExecute" || S == "GoToDp" + + Unknown or not permitted action type + + + + + + + + +
diff --git a/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml new file mode 100644 index 00000000..44fa3b5b --- /dev/null +++ b/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.7.3 Version and conformance level identification - Conformance level. + A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E. +
+ + + + + A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E. + conformance == "E" + + A PDF/A-4e conforming file does not specify the value of pdfaid:conformance as E. + + + + + + + + +
diff --git a/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml new file mode 100644 index 00000000..bcbe90ba --- /dev/null +++ b/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -0,0 +1,31 @@ + + +
+ ISO 19005-4:2020 - 6.3.1 Annotation types + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. + Additionally, the Sound, Screen, Movie, 3D and RichMedia types shall not be permitted. +
+ + + + + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. + Additionally, the Sound, Screen, Movie, 3D and RichMedia types shall not be permitted. The FileAttachment type shall + only be permitted in a PDF/A-4f compliant file as described in Annex A. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection" + + Unknown or not permitted annotation type + + + + + + + + +
diff --git a/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml new file mode 100644 index 00000000..b3d2f07c --- /dev/null +++ b/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.7.3 Version and conformance level identification - Conformance level. + A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F. +
+ + + + + A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F. + conformance == "F" + + A PDF/A-4f conforming file does not specify the value of pdfaid:conformance as F. + + + + + + + + +
diff --git a/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t04.xml b/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t04.xml new file mode 100644 index 00000000..930da20f --- /dev/null +++ b/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t04.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-4:2020 - 6.9 Embedded files + A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the + document catalog dictionary. +
+ + + + + A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the + document catalog dictionary. + containsEmbeddedFiles == true + + A PDF/A-4f conforming file does not contain an EmbeddedFiles key in the name dictionary of the + document catalog dictionary. + + + + + + + + +
From e544e73f121ae4bcdd91761ef0fc39d39332f4ba Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 22 Dec 2020 16:04:19 +0300 Subject: [PATCH 328/557] Add PDF/A-4 profiles. 6.1.3-4, 6.1.3-5, 6.1.6.1-4, 6.1.12-1, 6.2.5-3, 6.2.10.8-1, 6.7.3-4 --- .../verapdf-profile-6-1-12-t01.xml | 25 ++++++++++++++++++ .../verapdf-profile-6-1-3-t04.xml | 21 +++++++++++++++ .../verapdf-profile-6-1-3-t05.xml | 21 +++++++++++++++ .../verapdf-profile-6-2-10-8-t01.xml | 21 +++++++++++++++ .../verapdf-profile-6-2-5-t03.xml | 21 +++++++++++++++ .../verapdf-profile-6-7-3-t04.xml | 23 ++++++++++++++++ .../verapdf-profile-6-1-6-1-t04.xml | 26 +++++++++++++++++++ 7 files changed, 158 insertions(+) create mode 100644 PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml create mode 100644 PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml create mode 100644 PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml create mode 100644 PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t04.xml diff --git a/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml new file mode 100644 index 00000000..66555b50 --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-4:2020 - 6.1.12 Document catalog dictionary - Version + If the Version key is present in the document catalog dictionary, the first character in its value + shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third + character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. +
+ + + + + If the Version key is present in the document catalog dictionary, the first character in its value + shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third + character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. + Version == null || /^%2\.[0-9]$/.test(Version) + + The Version key is present and does not comply with the requirements of PDF/A-4 specification. + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml new file mode 100644 index 00000000..204f3020 --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.1.3 File trailer - Info key + The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary. +
+ + + + + The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary. + containsPieceInfo == true || containsInfo == false + + The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary + + + + + + +
diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml new file mode 100644 index 00000000..0c84771e --- /dev/null +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.1.3 File trailer - ModDate + If a document information dictionary is present, it shall only contain a ModDate entry. +
+ + + + + If a document information dictionary is present, it shall only contain a ModDate entry. + size == 1 && ModDate != null + + Document information dictionary is present and does not contain only a ModDate entry + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml new file mode 100644 index 00000000..d6bce39b --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.8 Use of ActualText + The ActualText entry shall not contain any PUA values. +
+ + + + + The ActualText entry shall not contain any PUA values. + actualTextContainsPUA == false + + The ActualText entry contains any PUA values. + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml new file mode 100644 index 00000000..9fdd7f2a --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.2.5 Extended graphics state - HTO key + An graphics state parameter dictionary shall not contain the HTO key +
+ + + + + An graphics state parameter dictionary shall not contain the HTO key + containsHTO == false + + An graphics state parameter dictionary contains the HTP key + + + + + + +
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml new file mode 100644 index 00000000..ebbb4063 --- /dev/null +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema properties. + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. + It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:rev (Open Choice of Integer). +
+ + + + + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. + It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:rev (Open Choice of Integer). + partPrefix == "pdfaid" && revPrefix == "pdfaid" + + A property of the PDF/A Identification Schema has an invalid namespace prefix + + + + + + +
diff --git a/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t04.xml b/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t04.xml new file mode 100644 index 00000000..3f173949 --- /dev/null +++ b/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t04.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-4:2020 - 6.1.6 Stream objects - 6.1.6.1 General - 3D stream + The Subtype entry in a 3D stream dictionary (ISO 32000-2:2020, 13.6.3) shall have a value which is + either U3D or PRC as described in Annex B. +
+ + + + + The Subtype entry in a 3D stream dictionary (ISO 32000-2:2020, 13.6.3) shall have a value which + is either U3D or PRC as described in Annex B. + Subtype == 'U3D' || Subtype == 'PRC' + + The Subtype entry in the 3D stream dictionary (ISO 32000-2:2020, 13.6.3) has a value that is + neither U3D nor PRC. + + + + + + + + +
From fa022984bb36ecbf8036731faba709572434c8dd Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 24 Dec 2020 13:29:27 +0300 Subject: [PATCH 329/557] Add PDF/A-4 rules. 6.2.3-2, 6.2.9-2, 6.6.3-1 --- .../verapdf-profile-6-2-3-t02.xml | 26 + .../verapdf-profile-6-2-9-t02.xml | 34 + .../verapdf-profile-6-6-3-t01.xml | 26 + .../verapdf-profile-6-9-t01.xml | 2 +- ...04.xml => verapdf-profile-6-1-6-1-t03.xml} | 2 +- PDF_A/PDFA-4.xml | 1189 ++++++++++++++++ PDF_A/PDFA-4E.xml | 1208 +++++++++++++++++ PDF_A/PDFA-4F.xml | 1206 ++++++++++++++++ 8 files changed, 3691 insertions(+), 2 deletions(-) create mode 100644 PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t02.xml create mode 100644 PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml rename PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/{verapdf-profile-6-1-6-1-t04.xml => verapdf-profile-6-1-6-1-t03.xml} (98%) create mode 100644 PDF_A/PDFA-4.xml create mode 100644 PDF_A/PDFA-4E.xml create mode 100644 PDF_A/PDFA-4F.xml diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml new file mode 100644 index 00000000..7b1c4f75 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-4:2020 - 6.2.3 Output intent - Matching multiple output profiles + If any OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 + and at the same time with PDF/X or PDF/E, then all entries that contain a DestOutputProfile key shall have as the value of that key the same + indirect object, which shall be a valid ICC profile stream. +
+ + + + + If any OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + sameOutputProfileIndirect == true + + OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t02.xml b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t02.xml new file mode 100644 index 00000000..5f3d827c --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t02.xml @@ -0,0 +1,34 @@ + + +
+ ISO 19005-4:2020 - 6.2.9 Transparency - Page transparency + If the document does not contain a PDF/A output intent, then all pages that contain transparency + shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and + the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall + be used as the default blending colour space. +
+ + + + + If the document does not contain a PDF/A output intent, then all pages that contain transparency + shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and + the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall + be used as the default blending colour space. + gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false + + The page contains transparent objects with no blending colour space defined. + + + + + + + + + + null + outputColorSpace + + +
diff --git a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml new file mode 100644 index 00000000..e5a7e050 --- /dev/null +++ b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-4:2020 - 6.6.3 Trigger events + If a document catalog dictionary or page dictionary or an annotation dictionary (other than a + Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) + shall only contain keys from the following list: E, X, D, U, Fo, and Bl. +
+ + + + + If a document catalog dictionary or page dictionary or an annotation dictionary (other than a + Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) + shall only contain keys from the following list: E, X, D, U, Fo, and Bl. + containsOtherActions == false + + A document catalog dictionary include an AA entry and its value (which is an additional-actions + dictionary) contains key not from the following list: E, X, D, U, Fo, and Bl + + + + + + +
diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml index 9240bed3..7dd51315 100644 --- a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml +++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml @@ -17,7 +17,7 @@
- +
diff --git a/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t04.xml b/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml similarity index 98% rename from PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t04.xml rename to PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml index 3f173949..a95292ec 100644 --- a/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t04.xml +++ b/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml @@ -8,7 +8,7 @@ - + The Subtype entry in a 3D stream dictionary (ISO 32000-2:2020, 13.6.3) shall have a value which is either U3D or PRC as described in Annex B. Subtype == 'U3D' || Subtype == 'PRC' diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml new file mode 100644 index 00000000..aff23e0b --- /dev/null +++ b/PDF_A/PDFA-4.xml @@ -0,0 +1,1189 @@ + + +
+ PDF/A-4 validation profile + Validation rules against ISO 19005-4:2020 +
+ + + + + The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 9 (39h) + headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-4 specification + + + + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID != null && lastID.length() > 0 + + Missing ID in the document trailer + + + + + + + + + The Encrypt key shall not be present in the trailer dictionary. + isEncrypted != true + + The Encrypt key is present in the trailer dictionary + + + + + + + No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + + + The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary. + containsPieceInfo == true || containsInfo == false + + The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary + + + + + + + If a document information dictionary is present, it shall only contain a ModDate entry. + size == 1 && ModDate != null + + Document information dictionary is present and does not contain only a ModDate entry + + + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the + exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. + In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || + internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || + (internalRepresentation == "Crypt" && decodeParms == "Identity") + + + LZW compression is used + + + + + + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, + or an array containing any such value. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || + internalRepresentation == "AHx" || internalRepresentation == "A85" || + internalRepresentation == "Fl" || internalRepresentation == "RL" || + internalRepresentation == "CCF" || internalRepresentation == "DCT" + + + Inline image uses LZW, Crypt or one of the unknown filters + + + + + + + + + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). + containsOtherEntries == false + + The document permissions dictionary contains keys other than UR3 and DocMDP + + + + + + + + + If the Version key is present in the document catalog dictionary, the first character in its value + shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third + character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. + Version == null || /^%2\.[0-9]$/.test(Version) + + The Version key is present and does not comply with the requirements of PDF/A-4 specification. + + + + + + + Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed + by the BX/EX compatibility operators. + false + + A content stream contains an operator not defined in ISO 32000-2:2020 + + + + + + + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. + isInherited == false + + A content stream refers to resources not defined in an explicitly associated Resources dictionary + + + + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + + + + + + + If any OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + sameOutputProfileIndirect == true + + OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + In addition, the DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + containsDestOutputProfileRef == false + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + + + + + + + The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 2.0 requirements + + + + + + + + + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. + overprintFlag == false || OPM == 0 + + Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting + + + + + + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + + + + All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + + + + + A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key + TR == null + + An graphics state parameter dictionary contains the TR key + + + + + + + + + A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An graphics state parameter dictionary contains the TR2 key with a value other than Default + + + + + + + An graphics state parameter dictionary shall not contain the HTO key + containsHTO == false + + An graphics state parameter dictionary contains the HTP key + + + + + + + All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + + + + + Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + + + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. + colorantName == null || colorantName == 'Default' || ((colorantName == 'Cyan' || + colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? + TransferFunction == null : TransferFunction != null) + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + + + + An Image dictionary shall not contain the Alternates key + containsAlternates == false + + Alternates key is present in the Image dictionary( + + + + + + + An Image dictionary shall not contain the OPI key + containsOPI == false + + OPI key is present in the XObject dictionary( + + + + + + + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline + image, the I key, if present, shall have a value of false. + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 + + JPEG2000 image has number of colour channels different from 1, 3 or 4. + + + + + + + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. + nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + + The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). + + + + + + + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only + that colour space and shall ignore all other colour space specifications. + colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + + Colour specification of the JPEG2000 image has specification method. + + + + + + + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + colrEnumCS == null || colrEnumCS != 19 + + JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A + + + + + + + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + + JPEG2000 image has invalid bit-depth parameters + + + + + + + A form XObject dictionary shall not contain an OPI key. + containsOPI == false + + The form XObject dictionary contains an OPI key + + + + + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + If the document does not contain a PDF/A output intent, then all pages that contain transparency + shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and + the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall + be used as the default blending colour space. + gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false + + The page contains transparent objects with no blending colour space defined. + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + + Unsupported font file format of the embedded font + + + + + + + + + + + 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 greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, + 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5. + 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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116. + 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" + + A CMap references another non-standard CMap + + + + + + + + + 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. + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + For every font embedded in a conforming file, the glyph width information in the font + dictionary and in the embedded font program shall be consistent for every glyph referenced for + rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + 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 that all necessary glyph lookups are able to be carried out. + isSymbolic == true || cmap31Present == true || cmap10Present == true + + The embedded font program for a non-symbolic TrueType font does not contain contain Microsoft + Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding. + + + + + + + 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' subtable. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and 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=0) encoding. + isSymbolic == false || cmap30Present == true || cmap10Present == true + + 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. + + + + + + + If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than + zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value + + + + + + + The ActualText entry shall not contain any PUA values. + actualTextContainsPUA == false + + The ActualText entry contains any PUA values. + + + + + + + A PDF/A-4 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. + Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || + Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || + Subtype == "Projection" + + Unknown or not permitted annotation type + + + + + + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + + + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), + except for the two cases listed below, shall have at least one appearance dictionary: + Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to + the value at index 3 and the value at index 2 is equal to the value at index 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null + + An annotation does not contain an appearance dictionary + + + + + + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || + (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + + A Widget annotation dictionary shall not contain the A key. + containsA == false + + A Widget annotation contains A entry + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + containsXFA == false + + The interactive form dictionary contains the XFA key + + + + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and + GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and noop actions shall + not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || + S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" + + Unknown or not permitted action type + + + + + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + + + + + + + If a document catalog dictionary or page dictionary or an annotation dictionary (other than a + Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) + shall only contain keys from the following list: E, X, D, U, Fo, and Bl. + containsOtherActions == false + + A document catalog dictionary include an AA entry and its value (which is an additional-actions + dictionary) contains key not from the following list: E, X, D, U, Fo, and Bl + + + + + + + The document 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.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + + All content of all XMP packets located in any metadata stream present in the PDF shall be + well-formed as defined by XMP (ISO 16684-1). + isSerializationValid + + %1 + + errorMessage + + + + + + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 4 + + The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file. + + part + + + + + + + A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance. + conformance == null + + A file that does not conform to either PDF/A-4e or PDF/A-4f provides pdfaid:conformance. + + + + + + + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. + It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:rev (Open Choice of Integer). + partPrefix == "pdfaid" && revPrefix == "pdfaid" + + A property of the PDF/A Identification Schema has an invalid namespace prefix + + + + + + + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. + If the MIME type is not known, the value "application/octet-stream" shall be used. + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) + + The MIME type information (Subtype entry) of an embedded file is missing or invalid + + + + + + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + containsEF == false || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-4 file. + hasDuplicateName == false + + Optional content configuration dictionary has duplicated name + + + + + + + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. + doesOrderContainAllOCGs == true + + Not all optional content groups are present in the Order entry of the optional content configuration dictionary + + + + + + + There shall be no AlternatePresentations entry in the document's name dictionary + containsAlternatePresentations == false + + The document's name dictionary contains the AlternatePresentations entry + + + + + + + There shall be no PresSteps entry in any Page dictionary + containsPresSteps == false + + A Page dictionary contains the PresSteps entry + + + + + + + The document catalog shall not contain the Requirements key + Requirements == null + + The document catalog contains the Requirements key + + + + + + + + null + outputColorSpace + + +
diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml new file mode 100644 index 00000000..a5772bf9 --- /dev/null +++ b/PDF_A/PDFA-4E.xml @@ -0,0 +1,1208 @@ + + +
+ PDF/A-4E validation profile + Validation rules against ISO 19005-4:2020, Level E +
+ + + + + The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 9 (39h) + headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-4 specification + + + + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID != null && lastID.length() > 0 + + Missing ID in the document trailer + + + + + + + + + The Encrypt key shall not be present in the trailer dictionary. + isEncrypted != true + + The Encrypt key is present in the trailer dictionary + + + + + + + No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + + + The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary. + containsPieceInfo == true || containsInfo == false + + The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary + + + + + + + If a document information dictionary is present, it shall only contain a ModDate entry. + size == 1 && ModDate != null + + Document information dictionary is present and does not contain only a ModDate entry + + + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + The Subtype entry in a 3D stream dictionary (ISO 32000-2:2020, 13.6.3) shall have a value which + is either U3D or PRC as described in Annex B. + Subtype == 'U3D' || Subtype == 'PRC' + + The Subtype entry in the 3D stream dictionary (ISO 32000-2:2020, 13.6.3) has a value that is + neither U3D nor PRC. + + + + + + + + + All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the + exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. + In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || + internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || + (internalRepresentation == "Crypt" && decodeParms == "Identity") + + + LZW compression is used + + + + + + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, + or an array containing any such value. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || + internalRepresentation == "AHx" || internalRepresentation == "A85" || + internalRepresentation == "Fl" || internalRepresentation == "RL" || + internalRepresentation == "CCF" || internalRepresentation == "DCT" + + + Inline image uses LZW, Crypt or one of the unknown filters + + + + + + + + + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). + containsOtherEntries == false + + The document permissions dictionary contains keys other than UR3 and DocMDP + + + + + + + + + If the Version key is present in the document catalog dictionary, the first character in its value + shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third + character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. + Version == null || /^%2\.[0-9]$/.test(Version) + + The Version key is present and does not comply with the requirements of PDF/A-4 specification. + + + + + + + Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed + by the BX/EX compatibility operators. + false + + A content stream contains an operator not defined in ISO 32000-2:2020 + + + + + + + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. + isInherited == false + + A content stream refers to resources not defined in an explicitly associated Resources dictionary + + + + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + + + + + + + If any OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + sameOutputProfileIndirect == true + + OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + In addition, the DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + containsDestOutputProfileRef == false + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + + + + + + + The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 2.0 requirements + + + + + + + + + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. + overprintFlag == false || OPM == 0 + + Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting + + + + + + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + + + + All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + + + + + A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key + TR == null + + An graphics state parameter dictionary contains the TR key + + + + + + + + + A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An graphics state parameter dictionary contains the TR2 key with a value other than Default + + + + + + + An graphics state parameter dictionary shall not contain the HTO key + containsHTO == false + + An graphics state parameter dictionary contains the HTP key + + + + + + + All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + + + + + Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + + + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. + colorantName == null || colorantName == 'Default' || ((colorantName == 'Cyan' || + colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? + TransferFunction == null : TransferFunction != null) + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + + + + An Image dictionary shall not contain the Alternates key + containsAlternates == false + + Alternates key is present in the Image dictionary( + + + + + + + An Image dictionary shall not contain the OPI key + containsOPI == false + + OPI key is present in the XObject dictionary( + + + + + + + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline + image, the I key, if present, shall have a value of false. + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 + + JPEG2000 image has number of colour channels different from 1, 3 or 4. + + + + + + + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. + nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + + The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). + + + + + + + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only + that colour space and shall ignore all other colour space specifications. + colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + + Colour specification of the JPEG2000 image has specification method. + + + + + + + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + colrEnumCS == null || colrEnumCS != 19 + + JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A + + + + + + + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + + JPEG2000 image has invalid bit-depth parameters + + + + + + + A form XObject dictionary shall not contain an OPI key. + containsOPI == false + + The form XObject dictionary contains an OPI key + + + + + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + If the document does not contain a PDF/A output intent, then all pages that contain transparency + shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and + the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall + be used as the default blending colour space. + gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false + + The page contains transparent objects with no blending colour space defined. + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + + Unsupported font file format of the embedded font + + + + + + + + + + + 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 greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, + 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5. + 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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116. + 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" + + A CMap references another non-standard CMap + + + + + + + + + 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. + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + For every font embedded in a conforming file, the glyph width information in the font + dictionary and in the embedded font program shall be consistent for every glyph referenced for + rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + 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 that all necessary glyph lookups are able to be carried out. + isSymbolic == true || cmap31Present == true || cmap10Present == true + + The embedded font program for a non-symbolic TrueType font does not contain contain Microsoft + Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding. + + + + + + + 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' subtable. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and 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=0) encoding. + isSymbolic == false || cmap30Present == true || cmap10Present == true + + 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. + + + + + + + If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than + zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value + + + + + + + The ActualText entry shall not contain any PUA values. + actualTextContainsPUA == false + + The ActualText entry contains any PUA values. + + + + + + + A PDF/A-4 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. + Additionally, the Sound, Screen, Movie and FileAttachment types shall not be permitted. 3D and RichMedia + types shall only be permitted in a PDF/A-4e compliant file as described in Annex B. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || + Subtype == "Redact" || Subtype == "3D" || Subtype == "Projection" || Subtype == "RichMedia" + + Unknown or not permitted annotation type + + + + + + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + + + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), + except for the two cases listed below, shall have at least one appearance dictionary: + Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to + the value at index 3 and the value at index 2 is equal to the value at index 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null + + An annotation does not contain an appearance dictionary + + + + + + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || + (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + + A Widget annotation dictionary shall not contain the A key. + containsA == false + + A Widget annotation contains A entry + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + containsXFA == false + + The interactive form dictionary contains the XFA key + + + + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be + permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. The + SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in + Annex B. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || + S == "SubmitForm" || S == "SetOCGState" || S == "GoTo3DView" || S == "JavaScript" || + S == "RichMediaExecute" || S == "GoToDp" + + Unknown or not permitted action type + + + + + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + + + + + + + If a document catalog dictionary or page dictionary or an annotation dictionary (other than a + Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) + shall only contain keys from the following list: E, X, D, U, Fo, and Bl. + containsOtherActions == false + + A document catalog dictionary include an AA entry and its value (which is an additional-actions + dictionary) contains key not from the following list: E, X, D, U, Fo, and Bl + + + + + + + The document 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.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + + All content of all XMP packets located in any metadata stream present in the PDF shall be + well-formed as defined by XMP (ISO 16684-1). + isSerializationValid + + %1 + + errorMessage + + + + + + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 4 + + The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file. + + part + + + + + + + A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E. + conformance == "E" + + A PDF/A-4e conforming file does not specify the value of pdfaid:conformance as E. + + + + + + + + + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. + It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:rev (Open Choice of Integer). + partPrefix == "pdfaid" && revPrefix == "pdfaid" + + A property of the PDF/A Identification Schema has an invalid namespace prefix + + + + + + + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. + If the MIME type is not known, the value "application/octet-stream" shall be used. + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) + + The MIME type information (Subtype entry) of an embedded file is missing or invalid + + + + + + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + containsEF == false || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-4 file. + hasDuplicateName == false + + Optional content configuration dictionary has duplicated name + + + + + + + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. + doesOrderContainAllOCGs == true + + Not all optional content groups are present in the Order entry of the optional content configuration dictionary + + + + + + + There shall be no AlternatePresentations entry in the document's name dictionary + containsAlternatePresentations == false + + The document's name dictionary contains the AlternatePresentations entry + + + + + + + There shall be no PresSteps entry in any Page dictionary + containsPresSteps == false + + A Page dictionary contains the PresSteps entry + + + + + + + The document catalog shall not contain the Requirements key + Requirements == null + + The document catalog contains the Requirements key + + + + + + + + null + outputColorSpace + + +
diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml new file mode 100644 index 00000000..d48f5bef --- /dev/null +++ b/PDF_A/PDFA-4F.xml @@ -0,0 +1,1206 @@ + + +
+ PDF/A-4F validation profile + Validation rules against ISO 19005-4:2020, Level F +
+ + + + + The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, + where 'n' is a single digit number between 0 (30h) and 9 (39h) + headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) + + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-4 specification + + + + + + + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded + byte values shall have a decimal value greater than 127 + headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 + + Binary comment in the file header is missing or does not comply PDF/A requirements + + + + + + + The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + lastID != null && lastID.length() > 0 + + Missing ID in the document trailer + + + + + + + + + The Encrypt key shall not be present in the trailer dictionary. + isEncrypted != true + + The Encrypt key is present in the trailer dictionary + + + + + + + No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. + postEOFDataSize == 0 + + Data is present after the last end-of-file marker + + + + + + + + + The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary. + containsPieceInfo == true || containsInfo == false + + The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary + + + + + + + If a document information dictionary is present, it shall only contain a ModDate entry. + size == 1 && ModDate != null + + Document information dictionary is present and does not contain only a ModDate entry + + + + + + + The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker + xrefEOLMarkersComplyPDFA + + Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + + + + + + + Hexadecimal strings shall contain an even number of non-white-space characters + (isHex != true) || hexCount % 2 == 0 + + The number of hexadecimal digits in a hexadecimal string shall always be even + + + + + + + A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) + (isHex != true) || containsOnlyHex + + Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f + + + + + + + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character + after the stream keyword and preceding the EOL marker before the endstream keyword. + isLengthCorrect + + Actual length of the stream does not match the value of the Length key in the Stream dictionary + + + + + + + A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + F == null && FFilter == null && FDecodeParms == null + + A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys + + + + + + + All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the + exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. + In addition, the Crypt filter shall not be used unless the value of the Name key in the decode + parameters dictionary is Identity. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || + internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || + (internalRepresentation == "Crypt" && decodeParms == "Identity") + + + LZW compression is used + + + + + + + + + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + isValidUtf8 == true + + The name object does not represent a correct Utf8 byte sequence + + + + + + + + + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be + separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj + keywords shall each be followed by an EOL marker. + spacingCompliesPDFA + + Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + + + + + + + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, + or an array containing any such value. + + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || + internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || + internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || + internalRepresentation == "AHx" || internalRepresentation == "A85" || + internalRepresentation == "Fl" || internalRepresentation == "RL" || + internalRepresentation == "CCF" || internalRepresentation == "DCT" + + + Inline image uses LZW, Crypt or one of the unknown filters + + + + + + + + + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). + containsOtherEntries == false + + The document permissions dictionary contains keys other than UR3 and DocMDP + + + + + + + + + If the Version key is present in the document catalog dictionary, the first character in its value + shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third + character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. + Version == null || /^%2\.[0-9]$/.test(Version) + + The Version key is present and does not comply with the requirements of PDF/A-4 specification. + + + + + + + Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed + by the BX/EX compatibility operators. + false + + A content stream contains an operator not defined in ISO 32000-2:2020 + + + + + + + A content stream that references other objects, such as images and fonts that are necessary to fully render or + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. + isInherited == false + + A content stream refers to resources not defined in an explicitly associated Resources dictionary + + + + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + + The embedded PDF/A Output Intent colour profile has invalid header + + + + + + + + + If any OutputIntents array contains more than one entry, as might be the case where a file is compliant + with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a + DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC + profile stream. + sameOutputProfileIndirect == true + + OutputIntents array contains output intent dictionaries with non-matching destination output profiles + + + + + + + In addition, the DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + containsDestOutputProfileRef == false + + The output intent dictionary contains forbidden entry DestOutputProfileRef + + + + + + + + + The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5. + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && + (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + + The embedded ICC profile is either invalid or does not satisfy PDF 2.0 requirements + + + + + + + + + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is + used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for + fill is set to true, or both. + overprintFlag == false || OPM == 0 + + Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting + + + + + + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + areColorantsPresent == true + + A colorant of the DeviceN color space is not defined in the Colorants dictionary + + + + + + + + + All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the + same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF + objects shall be compared, rather than the computational result of the use of those PDF objects. Compression + and whether or not an object is direct or indirect shall be ignored. + areTintAndAlternateConsistent == true + + Several occurrances of a Separation colour space with the same name are not consistent + + + + + + + A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key + TR == null + + An graphics state parameter dictionary contains the TR key + + + + + + + + + A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default + TR2 == null || TR2 == "Default" + + An graphics state parameter dictionary contains the TR2 key with a value other than Default + + + + + + + An graphics state parameter dictionary shall not contain the HTO key + containsHTO == false + + An graphics state parameter dictionary contains the HTP key + + + + + + + All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. + HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) + + A Halftone has type other than 1 or 5 + + + + + + + Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key. + HalftoneName == null + + A Halftone dictionary contains the HalftoneName key + + + + + + + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. + colorantName == null || colorantName == 'Default' || ((colorantName == 'Cyan' || + colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? + TransferFunction == null : TransferFunction != null) + + Invalid use of TransferFunction key in the Halftone dictionary + + + + + + + + + An Image dictionary shall not contain the Alternates key + containsAlternates == false + + Alternates key is present in the Image dictionary( + + + + + + + An Image dictionary shall not contain the OPI key + containsOPI == false + + OPI key is present in the XObject dictionary( + + + + + + + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline + image, the I key, if present, shall have a value of false. + Interpolate == false + + The value of the Interpolate key in the Image dictionary is true + + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 + + JPEG2000 image has number of colour channels different from 1, 3 or 4. + + + + + + + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space + specification that has the value 0x01 in the APPROX field. + nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + + The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). + + + + + + + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only + that colour space and shall ignore all other colour space specifications. + colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + + Colour specification of the JPEG2000 image has specification method. + + + + + + + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + colrEnumCS == null || colrEnumCS != 19 + + JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A + + + + + + + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + + JPEG2000 image has invalid bit-depth parameters + + + + + + + A form XObject dictionary shall not contain an OPI key. + containsOPI == false + + The form XObject dictionary contains an OPI key + + + + + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + If the document does not contain a PDF/A output intent, then all pages that contain transparency + shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and + the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall + be used as the default blending colour space. + gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false + + The page contains transparent objects with no blending colour space defined. + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to + the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" + + A Font dictionary has missing or invalid Type entry + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts + "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" + || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + + A Font dictionary has missing or invalid Subtype entry + + + + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null + + A BaseFont entry is missing or has invalid type + + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + isStandard == true || FirstChar != null + + A non-standard simple font dictionary has missing or invalid FirstChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + isStandard == true || LastChar != null + + A non-standard simple font dictionary has missing or invalid LastChar entry + + + + + + + + + + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions + in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. + Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) + + Widths array is missing or has invalid size + + + + + + + + + + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. + The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are + Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + + Unsupported font file format of the embedded font + + + + + + + + + + + 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 greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. + cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + + CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + + + + + + + ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. + Subtype != "CIDFontType2" || CIDToGIDMap != null + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, + 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5. + 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" || + embeddedFile_size == 1 + + A non-standard CMap is not embedded + + + + + + + + + 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. + WMode == dictWMode + + WMode entry in the embedded CMap and in the CMap dictionary are not identical + + + + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116. + 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" + + A CMap references another non-standard CMap + + + + + + + + + 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. + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely + in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + For every font embedded in a conforming file, the glyph width information in the font + dictionary and in the embedded font program shall be consistent for every glyph referenced for + rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. + renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + + Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary + + + + + + + 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 that all necessary glyph lookups are able to be carried out. + isSymbolic == true || cmap31Present == true || cmap10Present == true + + The embedded font program for a non-symbolic TrueType font does not contain contain Microsoft + Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding. + + + + + + + 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' subtable. + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + + A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and 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=0) encoding. + isSymbolic == false || cmap30Present == true || cmap10Present == true + + 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. + + + + + + + If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than + zero (0), but not equal to either U+FEFF or U+FFFE. + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value + + + + + + + The ActualText entry shall not contain any PUA values. + actualTextContainsPUA == false + + The ActualText entry contains any PUA values. + + + + + + + A PDF/A-4 compliant document 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. + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. + Additionally, the Sound, Screen, Movie, 3D and RichMedia types shall not be permitted. The FileAttachment type shall + only be permitted in a PDF/A-4f compliant file as described in Annex A. + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || + Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || + Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || + Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || + Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || + Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection" + + Unknown or not permitted annotation type + + + + + + + + + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Subtype == "Popup" || F != null + + A dictionary of a non-Popup annotation does not contain F key + + + + + + + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) + + One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 + + + + + + + Every annotation (including those whose Subtype value is Widget, as used for form fields), + except for the two cases listed below, shall have at least one appearance dictionary: + Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to + the value at index 3 and the value at index 2 is equal to the value at index 4; + - annotations whose Subtype value is Popup or Link. + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null + + An annotation does not contain an appearance dictionary + + + + + + + + + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall + contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a + value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || + (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + + Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type + + + + + + + A Widget annotation dictionary shall not contain the A key. + containsA == false + + A Widget annotation contains A entry + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + NeedAppearances == null || NeedAppearances == false + + The interactive form dictionary contains the NeedAppearances flag with value true + + + + + + + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + if present, shall not contain the XFA key. + containsXFA == false + + The interactive form dictionary contains the XFA key + + + + + + + A document's Catalog shall not contain the NeedsRendering key. + NeedsRendering == false + + A document's Catalog contains NeedsRendering flag set to true + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and + GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and noop actions shall + not be permitted. + S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || + S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" + + Unknown or not permitted action type + + + + + + + + + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + + Unknown or not permitted named action + + + + + + + + + If a document catalog dictionary or page dictionary or an annotation dictionary (other than a + Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) + shall only contain keys from the following list: E, X, D, U, Fo, and Bl. + containsOtherActions == false + + A document catalog dictionary include an AA entry and its value (which is an additional-actions + dictionary) contains key not from the following list: E, X, D, U, Fo, and Bl + + + + + + + The document 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.2. + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key. + + + + + + + + + The bytes attribute shall not be used in the header of an XMP packet. + bytes == null + + The XMP Package contains bytes attribute. + + + + + + + The encoding attribute shall not be used in the header of an XMP packet. + encoding == null + + The XMP Package contains encoding attribute. + + + + + + + All content of all XMP packets located in any metadata stream present in the PDF shall be + well-formed as defined by XMP (ISO 16684-1). + isSerializationValid + + %1 + + errorMessage + + + + + + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + Identification_size == 1 + + The document metadata stream doesn't contains PDF/A Identification Schema. + + + + + + + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + part == 4 + + The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file. + + part + + + + + + + A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F. + conformance == "F" + + A PDF/A-4f conforming file does not specify the value of pdfaid:conformance as F. + + + + + + + + + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. + It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:rev (Open Choice of Integer). + partPrefix == "pdfaid" && revPrefix == "pdfaid" + + A property of the PDF/A Identification Schema has an invalid namespace prefix + + + + + + + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. + If the MIME type is not known, the value "application/octet-stream" shall be used. + Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) + + The MIME type information (Subtype entry) of an embedded file is missing or invalid + + + + + + + + + The file specification dictionary for an embedded file shall contain the F and UF keys + containsEF == false || (F != null && UF != null) + + The file specification dictionary for an embedded file does not contain either F or EF key + + + + + + + A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the + document catalog dictionary. + containsEmbeddedFiles == true + + A PDF/A-4f conforming file does not contain an EmbeddedFiles key in the name dictionary of the + document catalog dictionary. + + + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the + value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration + dictionaries within the PDF/A-4 file. + hasDuplicateName == false + + Optional content configuration dictionary has duplicated name + + + + + + + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references + to all OCGs in the conforming file. + doesOrderContainAllOCGs == true + + Not all optional content groups are present in the Order entry of the optional content configuration dictionary + + + + + + + There shall be no AlternatePresentations entry in the document's name dictionary + containsAlternatePresentations == false + + The document's name dictionary contains the AlternatePresentations entry + + + + + + + There shall be no PresSteps entry in any Page dictionary + containsPresSteps == false + + A Page dictionary contains the PresSteps entry + + + + + + + The document catalog shall not contain the Requirements key + Requirements == null + + The document catalog contains the Requirements key + + + + + + + + null + outputColorSpace + + +
From 3c6bd51f94c129c2c0429eacc5c7b62627bb3b79 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 29 Dec 2020 12:53:25 +0300 Subject: [PATCH 330/557] Add PDF/A-4 rules. 6.2.9-1, 6.9-3 --- .../verapdf-profile-6-1-12-t01.xml | 2 +- .../verapdf-profile-6-2-9-t01.xml | 33 +++++++++++++++++++ .../verapdf-profile-6-9-t03.xml | 21 ++++++++++++ PDF_A/PDFA-4.xml | 33 ++++++++++++++++++- PDF_A/PDFA-4E.xml | 23 ++++++++++++- PDF_A/PDFA-4F.xml | 23 ++++++++++++- validationProfile.xsd | 5 +++ 7 files changed, 136 insertions(+), 4 deletions(-) create mode 100644 PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml create mode 100644 PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t03.xml diff --git a/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml index 66555b50..9cd38489 100644 --- a/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml @@ -13,7 +13,7 @@ If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. - Version == null || /^%2\.[0-9]$/.test(Version) + Version == null || /^2\.[0-9]$/.test(Version) The Version key is present and does not comply with the requirements of PDF/A-4 specification. diff --git a/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml new file mode 100644 index 00000000..c482c5a9 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml @@ -0,0 +1,33 @@ + + +
+ ISO 19005-4:2020 - 6.2.9 Transparency - Blend modes + Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM key + in a graphic state dictionary or an annotation dictionary. +
+ + + + + Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM + key in a graphic state dictionary or an annotation dictionary. + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || + internalRepresentation == "Multiply" || internalRepresentation == "Screen" || + internalRepresentation == "Overlay" || internalRepresentation == "Darken" || + internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || + internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || + internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || + internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || + internalRepresentation == "Saturation" || internalRepresentation == "Color" || + internalRepresentation == "Luminosity" + + The document uses the blend mode not defined in ISO 32000-2:2020 + + + + + + + + +
diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t03.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t03.xml new file mode 100644 index 00000000..9643bbbd --- /dev/null +++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t03.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.9 Embedded files + All of the embedded files shall be compliant with ISO 19005-1, 19005-2 or 19005-4 +
+ + + + + All of the embedded files shall be compliant with ISO 19005-1, 19005-2 or 19005-4 + isValidPDFA124 == true + + An embedded file does not comply to either ISO 19005-1, ISO 19005-2 or ISO 19005-4 + + + + + + +
diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index aff23e0b..96161f50 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -216,7 +216,7 @@ If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. - Version == null || /^%2\.[0-9]$/.test(Version) + Version == null || /^2\.[0-9]$/.test(Version) The Version key is present and does not comply with the requirements of PDF/A-4 specification. @@ -506,6 +506,27 @@
+ + + Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM + key in a graphic state dictionary or an annotation dictionary. + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || + internalRepresentation == "Multiply" || internalRepresentation == "Screen" || + internalRepresentation == "Overlay" || internalRepresentation == "Darken" || + internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || + internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || + internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || + internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || + internalRepresentation == "Saturation" || internalRepresentation == "Color" || + internalRepresentation == "Luminosity" + + The document uses the blend mode not defined in ISO 32000-2:2020 + + + + + + If the document does not contain a PDF/A output intent, then all pages that contain transparency @@ -1116,6 +1137,16 @@
+ + + All of the embedded files shall be compliant with ISO 19005-1, 19005-2 or 19005-4 + isValidPDFA124 == true + + An embedded file does not comply to either ISO 19005-1, ISO 19005-2 or ISO 19005-4 + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index a5772bf9..96cf3c9d 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -230,7 +230,7 @@ If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. - Version == null || /^%2\.[0-9]$/.test(Version) + Version == null || /^2\.[0-9]$/.test(Version) The Version key is present and does not comply with the requirements of PDF/A-4 specification. @@ -520,6 +520,27 @@ + + + Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM + key in a graphic state dictionary or an annotation dictionary. + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || + internalRepresentation == "Multiply" || internalRepresentation == "Screen" || + internalRepresentation == "Overlay" || internalRepresentation == "Darken" || + internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || + internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || + internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || + internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || + internalRepresentation == "Saturation" || internalRepresentation == "Color" || + internalRepresentation == "Luminosity" + + The document uses the blend mode not defined in ISO 32000-2:2020 + + + + + + If the document does not contain a PDF/A output intent, then all pages that contain transparency diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index d48f5bef..1529b41d 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -216,7 +216,7 @@ If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. - Version == null || /^%2\.[0-9]$/.test(Version) + Version == null || /^2\.[0-9]$/.test(Version) The Version key is present and does not comply with the requirements of PDF/A-4 specification. @@ -506,6 +506,27 @@ + + + Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM + key in a graphic state dictionary or an annotation dictionary. + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || + internalRepresentation == "Multiply" || internalRepresentation == "Screen" || + internalRepresentation == "Overlay" || internalRepresentation == "Darken" || + internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || + internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || + internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || + internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || + internalRepresentation == "Saturation" || internalRepresentation == "Color" || + internalRepresentation == "Luminosity" + + The document uses the blend mode not defined in ISO 32000-2:2020 + + + + + + If the document does not contain a PDF/A output intent, then all pages that contain transparency diff --git a/validationProfile.xsd b/validationProfile.xsd index b344a987..6ec2aafe 100644 --- a/validationProfile.xsd +++ b/validationProfile.xsd @@ -105,6 +105,9 @@ + + + @@ -114,6 +117,8 @@ + + From 4a5ce166afd6201d1059b20d8178eb623e9637f9 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 14 Jan 2021 22:36:54 +0300 Subject: [PATCH 331/557] Fix error messages for rules 6.1.3-1, 6.1.6.1-2, 6.1.7-3, 6.6.2.1-4, 6.6.2.3-7, 6.7.2.1-4, 6.7.9-1, 6.7.9-2 --- .../6.7.9 Validation/verapdf-profile-6-7-9-t01.xml | 6 ++---- .../6.7.9 Validation/verapdf-profile-6-7-9-t02.xml | 6 ++---- .../verapdf-profile-6-1-7-t03.xml | 4 ++-- .../verapdf-profile-6-6-2-1-t04.xml | 6 ++---- .../verapdf-profile-6-6-2-3-t07.xml | 6 ++---- .../verapdf-profile-6-1-3-t01.xml | 4 ++-- .../verapdf-profile-6-1-6-1-t02.xml | 4 ++-- .../verapdf-profile-6-7-2-1-t04.xml | 6 ++---- PDF_A/PDFA-1A.xml | 12 ++++-------- PDF_A/PDFA-1B.xml | 12 ++++-------- PDF_A/PDFA-2A.xml | 14 +++++--------- PDF_A/PDFA-2B.xml | 14 +++++--------- PDF_A/PDFA-2U.xml | 14 +++++--------- PDF_A/PDFA-3A.xml | 14 +++++--------- PDF_A/PDFA-3B.xml | 14 +++++--------- PDF_A/PDFA-3U.xml | 14 +++++--------- PDF_A/PDFA-4.xml | 10 ++++------ PDF_A/PDFA-4E.xml | 10 ++++------ PDF_A/PDFA-4F.xml | 10 ++++------ 19 files changed, 66 insertions(+), 114 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml index fa1bbda2..315ae724 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml @@ -11,10 +11,8 @@ The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions isSerializationValid - %1 - - errorMessage - + The serialization of the metadata stream does not conform to XMP Specification. + diff --git a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml index ff8bdf62..fa24605e 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml @@ -13,10 +13,8 @@ or extension schemas that comply with XMP Specification (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - %1 - - errorMessage - + A property is either not defined in XMP Specification, or is not defined in any of the extension schemas, or has an invalid value type. + diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml index 3c9b647f..ec52acf4 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - File specification - A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
- A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml index c674b349..c325517c 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml @@ -13,10 +13,8 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - %1 - - errorMessage - + A metadata stream is serialized icorrectly and can not be parsed. + diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t07.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t07.xml index b44f9a33..5a71d5f6 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t07.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t07.xml @@ -13,10 +13,8 @@ ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - %1 - - errorMessage - + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index cce59394..ef4dbfc1 100644 --- a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.1.3 File trailer - ID keyword - The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary
- The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary lastID != null && lastID.length() > 0 Missing ID in the document trailer diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml index 7ae23228..d1d574e5 100644 --- a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml +++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.1.6 Stream objects - 6.1.6.1 General - File specification - A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys
- A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml index 5a3e5c04..4996446e 100644 --- a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml @@ -13,10 +13,8 @@ well-formed as defined by XMP (ISO 16684-1). isSerializationValid - %1 - - errorMessage - + A metadata stream is serialized icorrectly and can not be parsed. + diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 6bf40a44..1969d658 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1132,10 +1132,8 @@ The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions isSerializationValid - %1 - - errorMessage - + The serialization of the metadata stream does not conform to XMP Specification. + @@ -1147,10 +1145,8 @@ or extension schemas that comply with XMP Specification (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - %1 - - errorMessage - + A property is either not defined in XMP Specification, or is not defined in any of the extension schemas, or has an invalid value type. + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 24e02c85..5f7a2d14 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1118,10 +1118,8 @@ The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions isSerializationValid - %1 - - errorMessage - + The serialization of the metadata stream does not conform to XMP Specification. + @@ -1133,10 +1131,8 @@ or extension schemas that comply with XMP Specification (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - %1 - - errorMessage - + A property is either not defined in XMP Specification, or is not defined in any of the extension schemas, or has an invalid value type. +
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index e0b6760d..5423475e 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -116,7 +116,7 @@
- A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys @@ -1266,10 +1266,8 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - %1 - - errorMessage - + A metadata stream is serialized icorrectly and can not be parsed. + @@ -1380,10 +1378,8 @@ ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - %1 - - errorMessage - + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 2f3d3bfe..29bafb3a 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -116,7 +116,7 @@
- A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys @@ -1228,10 +1228,8 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - %1 - - errorMessage - + A metadata stream is serialized icorrectly and can not be parsed. + @@ -1342,10 +1340,8 @@ ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - %1 - - errorMessage - + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index eadd8d01..af6c6a3b 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -116,7 +116,7 @@
- A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys @@ -1251,10 +1251,8 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - %1 - - errorMessage - + A metadata stream is serialized icorrectly and can not be parsed. + @@ -1365,10 +1363,8 @@ ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - %1 - - errorMessage - + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index cd9b7531..a2e2873c 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -116,7 +116,7 @@
- A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys @@ -1266,10 +1266,8 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - %1 - - errorMessage - + A metadata stream is serialized icorrectly and can not be parsed. + @@ -1380,10 +1378,8 @@ ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - %1 - - errorMessage - + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 1ece98c5..c68af91d 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -116,7 +116,7 @@
- A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys @@ -1228,10 +1228,8 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - %1 - - errorMessage - + A metadata stream is serialized icorrectly and can not be parsed. + @@ -1342,10 +1340,8 @@ ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - %1 - - errorMessage - + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index e221bd67..d13e470f 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -116,7 +116,7 @@
- A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys @@ -1251,10 +1251,8 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - %1 - - errorMessage - + A metadata stream is serialized icorrectly and can not be parsed. + @@ -1365,10 +1363,8 @@ ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - %1 - - errorMessage - + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 96161f50..7cfa4237 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -30,7 +30,7 @@
- The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary lastID != null && lastID.length() > 0 Missing ID in the document trailer @@ -125,7 +125,7 @@ - A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys @@ -1062,10 +1062,8 @@ well-formed as defined by XMP (ISO 16684-1). isSerializationValid - %1 - - errorMessage - + A metadata stream is serialized icorrectly and can not be parsed. + diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 96cf3c9d..b101cec8 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -30,7 +30,7 @@ - The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary lastID != null && lastID.length() > 0 Missing ID in the document trailer @@ -125,7 +125,7 @@ - A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys @@ -1079,10 +1079,8 @@ well-formed as defined by XMP (ISO 16684-1). isSerializationValid - %1 - - errorMessage - + A metadata stream is serialized icorrectly and can not be parsed. + diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 1529b41d..05892449 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -30,7 +30,7 @@ - The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 + File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary lastID != null && lastID.length() > 0 Missing ID in the document trailer @@ -125,7 +125,7 @@ - A stream dictionary shall not contain the F, FFilter, or FDecodeParams keys + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys @@ -1063,10 +1063,8 @@ well-formed as defined by XMP (ISO 16684-1). isSerializationValid - %1 - - errorMessage - + A metadata stream is serialized icorrectly and can not be parsed. + From fd7de415e62f701b386a712e4e5bd9b73aed0d42 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 20 Jan 2021 16:19:57 +0300 Subject: [PATCH 332/557] PDF/UA validation. Fix rule 7.18.6.2-2 --- .../verapdf-profile-7-18-6-2-t01.xml | 9 ++++----- .../verapdf-profile-7-18-6-2-t02.xml | 8 ++++---- PDF_UA/PDFUA-1.xml | 13 ++++++------- PDF_UA/WCAG-21-Complete.xml | 13 ++++++------- 4 files changed, 20 insertions(+), 23 deletions(-) diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml index 5691dedd..74e672b8 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml @@ -3,18 +3,17 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.6.2 Media clip data - CT in media clip dictionary In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) - are required. Value of CT should conform to the content type specification described in Internet RFC 2045 + is required.
In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) - are required. Value of CT should conform to the content type specification described in Internet RFC 2045 - CT != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(CT) + is required. + CT != null - CT key is missing from the media clip data dictionary or - value of CT not conform to the content type specification described in Internet RFC 2045 + CT key is missing from the media clip data dictionary diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml index a21b81b7..942c7e51 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml @@ -3,17 +3,17 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.6.2 Media clip data - Alt in media clip dictionary In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) - are required. + is required.
In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) - are required. - Alt != null && Alt != '' + is required. + hasCorrectAlt == true - Alt key is missing from the media clip data dictionary + Alt key is missing from the media clip data dictionary or has not correct value diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index cfea9e07..43357f99 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -805,11 +805,10 @@ In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) - are required. Value of CT should conform to the content type specification described in Internet RFC 2045 - CT != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(CT) + is required. + CT != null - CT key is missing from the media clip data dictionary or - value of CT not conform to the content type specification described in Internet RFC 2045 + CT key is missing from the media clip data dictionary @@ -819,10 +818,10 @@ In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) - are required. - Alt != null && Alt != '' + is required. + hasCorrectAlt == true - Alt key is missing from the media clip data dictionary + Alt key is missing from the media clip data dictionary or has not correct value diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 9f5eb52a..3caa4ab0 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -825,11 +825,10 @@ In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) - are required. Value of CT should conform to the content type specification described in Internet RFC 2045 - CT != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(CT) + is required. + CT != null - CT key is missing from the media clip data dictionary or - value of CT not conform to the content type specification described in Internet RFC 2045 + CT key is missing from the media clip data dictionary @@ -839,10 +838,10 @@ In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) - are required. - Alt != null && Alt != '' + is required. + hasCorrectAlt == true - Alt key is missing from the media clip data dictionary + Alt key is missing from the media clip data dictionary or has not correct value From 34e04a0657d4b4f7f4d0a4f6b8b9da3965ed386a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 29 Jan 2021 21:21:55 +0300 Subject: [PATCH 333/557] PDF/A-4 validation. Add rules 6.2.2-3, 6.2.4.3-4 --- .../verapdf-profile-6-2-4-t01.xml | 2 +- .../verapdf-profile-6-2-4-t02.xml | 2 +- .../verapdf-profile-6-3-5-t03.xml | 2 +- .../verapdf-profile-6-2-8-t01.xml | 2 +- .../verapdf-profile-6-2-8-t02.xml | 2 +- .../verapdf-profile-6-3-3-t02.xml | 2 +- .../verapdf-profile-6-2-2-t02.xml | 12 +++-- .../verapdf-profile-6-2-2-t03.xml | 29 ++++++++++++ .../verapdf-profile-6-2-3-t03.xml | 4 +- .../verapdf-profile-6-2-4-3-t04.xml | 32 +++++++++++++ .../verapdf-profile-6-2-7-1-t01.xml | 2 +- .../verapdf-profile-6-2-7-1-t02.xml | 2 +- .../verapdf-profile-6-3-3-t02.xml | 2 +- PDF_A/PDFA-1A.xml | 6 +-- PDF_A/PDFA-1B.xml | 6 +-- PDF_A/PDFA-2A.xml | 4 +- PDF_A/PDFA-2B.xml | 4 +- PDF_A/PDFA-2U.xml | 4 +- PDF_A/PDFA-3A.xml | 4 +- PDF_A/PDFA-3B.xml | 4 +- PDF_A/PDFA-3U.xml | 4 +- PDF_A/PDFA-4.xml | 45 ++++++++++++++++--- PDF_A/PDFA-4E.xml | 45 ++++++++++++++++--- PDF_A/PDFA-4F.xml | 45 ++++++++++++++++--- 24 files changed, 215 insertions(+), 51 deletions(-) create mode 100644 PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml index 36d1c8e3..0a184e62 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t01.xml @@ -11,7 +11,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml index fd721fc0..a0d5bd96 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t02.xml @@ -11,7 +11,7 @@ An XObject dictionary (Image or Form) shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the XObject dictionary diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml index ce56fba7..9060a5d7 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml @@ -11,7 +11,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml index a08e2139..6b1a46cc 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t01.xml @@ -11,7 +11,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml index ee497335..8608bc2b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml @@ -11,7 +11,7 @@ An Image dictionary shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the Image dictionary diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml index 9a0fcc43..9929f64b 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -14,7 +14,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml index b11f1564..3432679e 100644 --- a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml @@ -2,15 +2,19 @@
ISO 19005-4:2020 - 6.2.2 Content streams - Resources dictionary - A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. + A content stream that references other objects, such as images and fonts that are necessary to + fully render or process the stream, shall have an explicitly associated Resources dictionary as described + in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this + content stream.
- A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. + A content stream that references other objects, such as images and fonts that are necessary to + fully render or process the stream, shall have an explicitly associated Resources dictionary as + described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources + referenced by this content stream. isInherited == false A content stream refers to resources not defined in an explicitly associated Resources dictionary diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml new file mode 100644 index 00000000..2d16e5c9 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-4:2020 - 6.2.2 Content streams - Resources dictionary + A content stream's named resources shall be defined by a resource dictionary, which shall + enumerate the named resources needed by the operators in the content stream and the names by which + they can be referred to. +
+ + + + + A content stream's named resources shall be defined by a resource dictionary, which shall + enumerate the named resources needed by the operators in the content stream and the names by which + they can be referred to. + containsUndefinedResource == false + + A content stream's named resources not define by a resource dictionary, which shall enumerate + the named resources needed by the operators in the content stream and the names by which they can + be referred to. + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index 4fc7147a..5b2d00f4 100644 --- a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.3 Output intent - DestOutputProfileRef entry - In addition, the DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary.
- In addition, the DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml new file mode 100644 index 00000000..2ecc3fd9 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml @@ -0,0 +1,32 @@ + + +
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceGray + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when + the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect. +
+ + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when + the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect. + gPageOutputCS != null || gDocumentOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + + + + + null + outputColorSpace + + + null + outputColorSpace + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t01.xml index a5a0561c..b33a2c4c 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t01.xml @@ -11,7 +11,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml index 531f27c8..edbb97a6 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml @@ -11,7 +11,7 @@ An Image dictionary shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the Image dictionary diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml index 095e2d7f..6cee0778 100644 --- a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -14,7 +14,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || - (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 1969d658..2d7dc305 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -422,7 +422,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary @@ -432,7 +432,7 @@ An XObject dictionary (Image or Form) shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the XObject dictionary @@ -718,7 +718,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 5f7a2d14..19c2c252 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -422,7 +422,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary @@ -432,7 +432,7 @@ An XObject dictionary (Image or Form) shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the XObject dictionary @@ -718,7 +718,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 + fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 || cidSetListsAllGlyphs == true A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 5423475e..fab66daa 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -539,7 +539,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary @@ -549,7 +549,7 @@ An Image dictionary shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the Image dictionary diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 29bafb3a..db60c054 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -539,7 +539,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary @@ -549,7 +549,7 @@ An Image dictionary shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the Image dictionary diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index af6c6a3b..cf4400d2 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -539,7 +539,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary @@ -549,7 +549,7 @@ An Image dictionary shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the Image dictionary diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index a2e2873c..571f5de0 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -539,7 +539,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary @@ -549,7 +549,7 @@ An Image dictionary shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the Image dictionary diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index c68af91d..659d2671 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -539,7 +539,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary @@ -549,7 +549,7 @@ An Image dictionary shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the Image dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index d13e470f..6f71edfc 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -539,7 +539,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary @@ -549,7 +549,7 @@ An Image dictionary shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the Image dictionary diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 7cfa4237..71c3e6e7 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -236,8 +236,10 @@
- A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. + A content stream that references other objects, such as images and fonts that are necessary to + fully render or process the stream, shall have an explicitly associated Resources dictionary as + described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources + referenced by this content stream. isInherited == false A content stream refers to resources not defined in an explicitly associated Resources dictionary @@ -247,6 +249,22 @@
+ + + A content stream's named resources shall be defined by a resource dictionary, which shall + enumerate the named resources needed by the operators in the content stream and the names by which + they can be referred to. + containsUndefinedResource == false + + A content stream's named resources not define by a resource dictionary, which shall enumerate + the named resources needed by the operators in the content stream and the names by which they can + be referred to. + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile @@ -275,7 +293,7 @@ - In addition, the DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -312,6 +330,17 @@
+ + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when + the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect. + gPageOutputCS != null || gDocumentOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. @@ -408,7 +437,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary @@ -418,7 +447,7 @@ An Image dictionary shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the Image dictionary @@ -935,7 +964,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || - (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type @@ -1214,5 +1243,9 @@ null outputColorSpace + + null + outputColorSpace + diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index b101cec8..b3834a36 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -250,8 +250,10 @@ - A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. + A content stream that references other objects, such as images and fonts that are necessary to + fully render or process the stream, shall have an explicitly associated Resources dictionary as + described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources + referenced by this content stream. isInherited == false A content stream refers to resources not defined in an explicitly associated Resources dictionary @@ -261,6 +263,22 @@
+ + + A content stream's named resources shall be defined by a resource dictionary, which shall + enumerate the named resources needed by the operators in the content stream and the names by which + they can be referred to. + containsUndefinedResource == false + + A content stream's named resources not define by a resource dictionary, which shall enumerate + the named resources needed by the operators in the content stream and the names by which they can + be referred to. + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile @@ -289,7 +307,7 @@ - In addition, the DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -326,6 +344,17 @@
+ + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when + the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect. + gPageOutputCS != null || gDocumentOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. @@ -422,7 +451,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary @@ -432,7 +461,7 @@ An Image dictionary shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the Image dictionary @@ -950,7 +979,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || - (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type @@ -1224,4 +1253,8 @@ outputColorSpace + + null + outputColorSpace + diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 05892449..5f3dadfa 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -236,8 +236,10 @@ - A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. + A content stream that references other objects, such as images and fonts that are necessary to + fully render or process the stream, shall have an explicitly associated Resources dictionary as + described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources + referenced by this content stream. isInherited == false A content stream refers to resources not defined in an explicitly associated Resources dictionary @@ -247,6 +249,22 @@
+ + + A content stream's named resources shall be defined by a resource dictionary, which shall + enumerate the named resources needed by the operators in the content stream and the names by which + they can be referred to. + containsUndefinedResource == false + + A content stream's named resources not define by a resource dictionary, which shall enumerate + the named resources needed by the operators in the content stream and the names by which they can + be referred to. + + + + + + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile @@ -275,7 +293,7 @@ - In addition, the DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -312,6 +330,17 @@
+ + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when + the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect. + gPageOutputCS != null || gDocumentOutputCS != null + + DeviceGray colour space is used without output intent profile + + + + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. @@ -408,7 +437,7 @@ An Image dictionary shall not contain the Alternates key containsAlternates == false - Alternates key is present in the Image dictionary( + Alternates key is present in the Image dictionary @@ -418,7 +447,7 @@ An Image dictionary shall not contain the OPI key containsOPI == false - OPI key is present in the XObject dictionary( + OPI key is present in the Image dictionary @@ -936,7 +965,7 @@ contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || - (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size == 1) ) ) + (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type @@ -1221,5 +1250,9 @@ null outputColorSpace + + null + outputColorSpace + From 21c3a1245fdbed14490c678b200801156cca9b2f Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 11 Feb 2021 19:38:01 +0300 Subject: [PATCH 334/557] Fix PDF/A-1 rule 6.3.5-2 --- .../6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml | 2 +- .../6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml | 2 +- PDF_A/PDFA-1A.xml | 4 ++-- PDF_A/PDFA-1B.xml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml index 3a6c638a..04befb54 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml @@ -11,7 +11,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null + fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) A Type1 font subset does not define CharSet entry in its Descriptor dictionary diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml index 9060a5d7..4911cf43 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml @@ -11,7 +11,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 || cidSetListsAllGlyphs == true + fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 2d7dc305..4a182ed9 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -705,7 +705,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null + fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) A Type1 font subset does not define CharSet entry in its Descriptor dictionary @@ -718,7 +718,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 || cidSetListsAllGlyphs == true + fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) A CID Font subset does not define CIDSet entry in its Descriptor dictionary diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 19c2c252..3efe40ef 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -705,7 +705,7 @@ For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 - fontName.search(/[A-Z]{6}\+/) != 0 || CharSet != null + fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) A Type1 font subset does not define CharSet entry in its Descriptor dictionary @@ -718,7 +718,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 1 || cidSetListsAllGlyphs == true + fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) A CID Font subset does not define CIDSet entry in its Descriptor dictionary From de638e3f6dbdbece7b353b0c3a360d7a3fa4a6ac Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 1 Mar 2021 20:09:41 +0300 Subject: [PATCH 335/557] PDF/A-4 validation. Add rules 6.7.3-5, 6.9-4. Fix rule 6.2.10.8-1. --- .../verapdf-profile-6-2-10-8-t01.xml | 4 +-- .../verapdf-profile-6-7-3-t05.xml | 21 +++++++++++++++ .../verapdf-profile-6-9-t04.xml | 25 +++++++++++++++++ ...-9-t04.xml => verapdf-profile-6-9-t05.xml} | 2 +- PDF_A/PDFA-4.xml | 27 +++++++++++++++++-- PDF_A/PDFA-4E.xml | 27 +++++++++++++++++-- PDF_A/PDFA-4F.xml | 16 ++++++++--- 7 files changed, 112 insertions(+), 10 deletions(-) create mode 100644 PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml create mode 100644 PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml rename PDF_A/4f/6.9 Embedded files/{verapdf-profile-6-9-t04.xml => verapdf-profile-6-9-t05.xml} (99%) diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml index d6bce39b..4dbd17cf 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml @@ -6,10 +6,10 @@
- + The ActualText entry shall not contain any PUA values. - actualTextContainsPUA == false + containsPUA == false The ActualText entry contains any PUA values. diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml new file mode 100644 index 00000000..9755c479 --- /dev/null +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-4:2020 - 6.7.3 Version identification - rev property + The value of pdfaid:rev shall be the four digit year. +
+ + + + + The value of pdfaid:rev shall be the four digit year. + /^\d{4}$/.test(rev) + + The value of pdfaid:rev not the four digit year. + + + + + + +
diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml new file mode 100644 index 00000000..c713562f --- /dev/null +++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-4:2020 - 6.9 Embedded files - AFRelationship + Each embedded file’s file specification dictionary shall contain an AFRelationship key + (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. +
+ + + + + Each embedded file’s file specification dictionary shall contain an AFRelationship key + (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. + AFRelationship != null + + The file specification dictionary for an embedded file does not contain the AFRelationship key + + + + + + + + +
diff --git a/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t04.xml b/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t05.xml similarity index 99% rename from PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t04.xml rename to PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t05.xml index 930da20f..6c061d0e 100644 --- a/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t04.xml +++ b/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t05.xml @@ -8,7 +8,7 @@ - + A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the document catalog dictionary. containsEmbeddedFiles == true diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 71c3e6e7..86f23f7b 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -883,10 +883,10 @@
- + The ActualText entry shall not contain any PUA values. - actualTextContainsPUA == false + containsPUA == false The ActualText entry contains any PUA values. @@ -1141,6 +1141,16 @@ + + + The value of pdfaid:rev shall be the four digit year. + /^\d{4}$/.test(rev) + + The value of pdfaid:rev not the four digit year. + + + + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. @@ -1174,6 +1184,19 @@ + + + Each embedded file’s file specification dictionary shall contain an AFRelationship key + (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. + AFRelationship != null + + The file specification dictionary for an embedded file does not contain the AFRelationship key + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index b3834a36..f7304431 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -897,10 +897,10 @@ - + The ActualText entry shall not contain any PUA values. - actualTextContainsPUA == false + containsPUA == false The ActualText entry contains any PUA values. @@ -1160,6 +1160,16 @@ + + + The value of pdfaid:rev shall be the four digit year. + /^\d{4}$/.test(rev) + + The value of pdfaid:rev not the four digit year. + + + + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. @@ -1183,6 +1193,19 @@ + + + Each embedded file’s file specification dictionary shall contain an AFRelationship key + (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. + AFRelationship != null + + The file specification dictionary for an embedded file does not contain the AFRelationship key + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 5f3dadfa..c385e3ba 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -883,10 +883,10 @@ - + The ActualText entry shall not contain any PUA values. - actualTextContainsPUA == false + containsPUA == false The ActualText entry contains any PUA values. @@ -1144,6 +1144,16 @@ + + + The value of pdfaid:rev shall be the four digit year. + /^\d{4}$/.test(rev) + + The value of pdfaid:rev not the four digit year. + + + + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. @@ -1168,7 +1178,7 @@ - + A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the document catalog dictionary. containsEmbeddedFiles == true From 38b2deee89986b0dec94c41c15064361cb9c187a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 3 Mar 2021 12:17:50 +0300 Subject: [PATCH 336/557] Add rules to WCAG profile --- PDF_UA/WCAG-21-Complete.xml | 26 +++++++++++++++++++ PDF_UA/WCAG-21.xml | 26 +++++++++++++++++++ .../verapdf-profile-1-3-4-t01.xml | 0 .../verapdf-profile-1-4-3-t01.xml | 25 ++++++++++++++++++ .../verapdf-profile-4-1-2-t01.xml | 24 +++++++++++++++++ 5 files changed, 101 insertions(+) rename PDF_UA/WCAG/{ => 1 Perceivable}/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml (100%) create mode 100644 PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml create mode 100644 PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 3caa4ab0..dba7e77c 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -16,6 +16,32 @@ + + + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. + Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. + (textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5) + + contrastRatio = %1 + + contrastRatio + + + + + + + The structure type and attributes of a structure element shall be semantically appropriate. + hasCorrectType == null || (hasCorrectType == true && correctSemanticScore > 0.8) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 135cee19..e26fe815 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -16,6 +16,32 @@ + + + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. + Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. + (textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5) + + contrastRatio = %1 + + contrastRatio + + + + + + + The structure type and attributes of a structure element shall be semantically appropriate. + hasCorrectType == null || (hasCorrectType == true && correctSemanticScore > 0.8) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + +
diff --git a/PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml b/PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml similarity index 100% rename from PDF_UA/WCAG/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml rename to PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml diff --git a/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml b/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml new file mode 100644 index 00000000..bdbe9265 --- /dev/null +++ b/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 1.4 Distinguishable - 1.4.3 Contrast (Minimum) + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. + Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. +
+ + + + + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. + Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. + (textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5) + + contrastRatio = %1 + + contrastRatio + + + + + + +
diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml new file mode 100644 index 00000000..5203fac3 --- /dev/null +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Semantic type + The structure type and attributes of a structure element shall be semantically appropriate. +
+ + + + + The structure type and attributes of a structure element shall be semantically appropriate. + hasCorrectType == null || (hasCorrectType == true && correctSemanticScore > 0.8) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
From 4edf021439f7d0a22f5ed72d6a608bb41a0e7157 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 3 Mar 2021 17:41:19 +0300 Subject: [PATCH 337/557] Fix PDF/A-4E profile --- PDF_A/PDFA-4E.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index f7304431..bf3b449c 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1275,9 +1275,9 @@ null outputColorSpace
+ + null + outputColorSpace +
- - null - outputColorSpace -
From 38a0bf051c5c205928cb97a47e6c0ad62ececf55 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 15 Mar 2021 21:34:23 +0300 Subject: [PATCH 338/557] PDF/A-4 validation. Add rules 6.2.4.2-3, 6.2.4.3-2, 6.2.4.3-3, 6.7.2.1-5 Fix rules 6.3.3-1, 6.6.1-1, 6.7.3-1 --- .../verapdf-profile-6-5-1-t01.xml | 4 +- .../verapdf-profile-6-2-4-2-t03.xml | 35 ++++++++ .../verapdf-profile-6-2-4-3-t02.xml | 42 ++++++++++ .../verapdf-profile-6-2-4-3-t03.xml | 41 +++++++++ .../verapdf-profile-6-2-5-t01.xml | 2 +- .../verapdf-profile-6-2-5-t02.xml | 2 +- .../verapdf-profile-6-2-5-t03.xml | 6 +- .../verapdf-profile-6-3-3-t01.xml | 4 +- .../verapdf-profile-6-6-1-t01.xml | 4 +- .../verapdf-profile-6-7-2-1-t05.xml | 23 +++++ .../verapdf-profile-6-7-3-t01.xml | 6 +- .../verapdf-profile-6-6-1-t01.xml | 4 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- PDF_A/PDFA-4.xml | 82 ++++++++++++++++-- PDF_A/PDFA-4E.xml | 83 +++++++++++++++++-- PDF_A/PDFA-4F.xml | 82 ++++++++++++++++-- 21 files changed, 390 insertions(+), 42 deletions(-) create mode 100644 PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml create mode 100644 PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml index 890d0a5d..8c337cc5 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.5 Actions - 6.5.1 General - Action types The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted.
The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted.
S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml new file mode 100644 index 00000000..1e000a85 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml @@ -0,0 +1,35 @@ + + +
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased color spaces + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and is + identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. +
+ + + + + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && + ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || + (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) + + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + + + + + + + + null + destOutputProfileIndirect + + + null + ICCProfileMD5 + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml new file mode 100644 index 00000000..5c8c211f --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml @@ -0,0 +1,42 @@ + + +
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceRGB + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the + DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB colour + space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, when the + DeviceRGB colour space is used, contains an 'RGB ' destination profile. +
+ + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when + the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB + colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, + when the DeviceRGB colour space is used, contains an 'RGB ' destination profile. + (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || + gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' + + DeviceRGB colour space is used without RGB output intent profile and + without current transparency RGB blending space + + + + + + + + null + outputColorSpace + + + null + outputColorSpace + + + null + colorSpaceType + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml new file mode 100644 index 00000000..3b5382b7 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml @@ -0,0 +1,41 @@ + + +
+ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceCMYK + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set when + the DeviceCMYK colour space is used or if the current transparency blending space, when the DeviceCMYK + colour space is used, is a device independent CMYK-based colour space or the current PDF/A OutputIntent, + when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. +
+ + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set + when the DeviceCMYK colour space is used or if the current transparency blending space, when the + DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A + OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. + (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' + + DeviceCMYK colour space is used without CMYK output intent profile and + without current transparency CMYK blending space + + + + + + + + null + outputColorSpace + + + null + outputColorSpace + + + null + colorSpaceType + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml index 2dee30a7..9d3b8290 100644 --- a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t01.xml @@ -11,7 +11,7 @@ A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key TR == null - An graphics state parameter dictionary contains the TR key + A graphics state parameter dictionary contains the TR key diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml index 4af59bd6..684e3570 100644 --- a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml @@ -11,7 +11,7 @@ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An graphics state parameter dictionary contains the TR2 key with a value other than Default + A graphics state parameter dictionary contains the TR2 key with a value other than Default diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml index 9fdd7f2a..9b06667f 100644 --- a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml @@ -2,16 +2,16 @@
ISO 19005-4:2020 - 6.2.5 Extended graphics state - HTO key - An graphics state parameter dictionary shall not contain the HTO key + A graphics state parameter dictionary shall not contain the HTO key
- An graphics state parameter dictionary shall not contain the HTO key + A graphics state parameter dictionary shall not contain the HTO key containsHTO == false - An graphics state parameter dictionary contains the HTP key + A graphics state parameter dictionary contains the HTP key diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml index ce404a44..e148c3b2 100644 --- a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml +++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml @@ -6,7 +6,7 @@ for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - - annotations whose Subtype value is Popup or Link. + - annotations whose Subtype value is Popup, Link or Projection.
@@ -16,7 +16,7 @@ except for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - - annotations whose Subtype value is Popup or Link. + - annotations whose Subtype value is Popup, Link or Projection. (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null An annotation does not contain an appearance dictionary diff --git a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml index 0f246bfa..4d8738e5 100644 --- a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml +++ b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.6 Actions - 6.6.1 General - Action types The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView - actions shall not be permitted. Additionally, the obsoleted set-state and noop actions shall not be permitted. + actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted.
The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and - GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and noop actions shall + GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml new file mode 100644 index 00000000..509c48e1 --- /dev/null +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.7.2.1 General - Conforms to XMP Specification. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. +
+ + + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + + + +
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml index b83b3e17..53af6778 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml @@ -2,13 +2,15 @@
ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema. - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/".
- The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". Identification_size == 1 The document metadata stream doesn't contains PDF/A Identification Schema. diff --git a/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml index 10767281..f2f4932d 100644 --- a/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml +++ b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -3,7 +3,7 @@
ISO 19005-4:2020 - 6.6 Actions - 6.6.1 General - Action types The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be - permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. The SetOCGState + permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in Annex B.
@@ -11,7 +11,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be - permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. The + permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in Annex B. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index fab66daa..04aad69c 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1186,7 +1186,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index db60c054..e97282a7 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1148,7 +1148,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index cf4400d2..e2617454 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1171,7 +1171,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 571f5de0..6529cc87 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1186,7 +1186,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 659d2671..ccb6a48f 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1148,7 +1148,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 6f71edfc..19b50edc 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1171,7 +1171,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and noop actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 86f23f7b..54bd21fd 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -330,6 +330,49 @@ + + + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && + ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || + (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) + + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + + + + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when + the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB + colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, + when the DeviceRGB colour space is used, contains an 'RGB ' destination profile. + (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || + gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' + + DeviceRGB colour space is used without RGB output intent profile and + without current transparency RGB blending space + + + + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set + when the DeviceCMYK colour space is used or if the current transparency blending space, when the + DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A + OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. + (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' + + DeviceCMYK colour space is used without CMYK output intent profile and + without current transparency CMYK blending space + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when @@ -371,7 +414,7 @@ A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key TR == null - An graphics state parameter dictionary contains the TR key + A graphics state parameter dictionary contains the TR key @@ -383,17 +426,17 @@ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An graphics state parameter dictionary contains the TR2 key with a value other than Default + A graphics state parameter dictionary contains the TR2 key with a value other than Default - An graphics state parameter dictionary shall not contain the HTO key + A graphics state parameter dictionary shall not contain the HTO key containsHTO == false - An graphics state parameter dictionary contains the HTP key + A graphics state parameter dictionary contains the HTP key @@ -948,7 +991,7 @@ except for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - - annotations whose Subtype value is Popup or Link. + - annotations whose Subtype value is Popup, Link or Projection. (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null An annotation does not contain an appearance dictionary @@ -1015,7 +1058,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and - GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and noop actions shall + GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" @@ -1098,9 +1141,22 @@ + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". Identification_size == 1 The document metadata stream doesn't contains PDF/A Identification Schema. @@ -1270,5 +1326,17 @@ null outputColorSpace + + null + destOutputProfileIndirect + + + null + ICCProfileMD5 + + + null + colorSpaceType +
diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index bf3b449c..dfbcae52 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -344,6 +344,49 @@
+ + + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && + ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || + (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) + + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + + + + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when + the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB + colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, + when the DeviceRGB colour space is used, contains an 'RGB ' destination profile. + (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || + gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' + + DeviceRGB colour space is used without RGB output intent profile and + without current transparency RGB blending space + + + + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set + when the DeviceCMYK colour space is used or if the current transparency blending space, when the + DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A + OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. + (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' + + DeviceCMYK colour space is used without CMYK output intent profile and + without current transparency CMYK blending space + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when @@ -385,7 +428,7 @@ A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key TR == null - An graphics state parameter dictionary contains the TR key + A graphics state parameter dictionary contains the TR key @@ -397,17 +440,17 @@ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An graphics state parameter dictionary contains the TR2 key with a value other than Default + A graphics state parameter dictionary contains the TR2 key with a value other than Default - An graphics state parameter dictionary shall not contain the HTO key + A graphics state parameter dictionary shall not contain the HTO key containsHTO == false - An graphics state parameter dictionary contains the HTP key + A graphics state parameter dictionary contains the HTP key @@ -963,7 +1006,7 @@ except for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - - annotations whose Subtype value is Popup or Link. + - annotations whose Subtype value is Popup, Link or Projection. (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null An annotation does not contain an appearance dictionary @@ -1030,7 +1073,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be - permitted. Additionally, the deprecated set-state and noop actions shall not be permitted. The + permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in Annex B. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || @@ -1115,9 +1158,22 @@ + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". Identification_size == 1 The document metadata stream doesn't contains PDF/A Identification Schema. @@ -1279,5 +1335,18 @@ null outputColorSpace + + null + destOutputProfileIndirect + + + null + ICCProfileMD5 + + + null + colorSpaceType + +
diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index c385e3ba..651e654a 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -330,6 +330,49 @@ + + + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && + ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || + (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) + + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + + + + + + + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when + the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB + colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, + when the DeviceRGB colour space is used, contains an 'RGB ' destination profile. + (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || + gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' + + DeviceRGB colour space is used without RGB output intent profile and + without current transparency RGB blending space + + + + + + + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set + when the DeviceCMYK colour space is used or if the current transparency blending space, when the + DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A + OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. + (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' + + DeviceCMYK colour space is used without CMYK output intent profile and + without current transparency CMYK blending space + + + + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when @@ -371,7 +414,7 @@ A graphics state parameter dictionary (ISO 32000-2:2020, 8.4.5) shall not contain the TR key TR == null - An graphics state parameter dictionary contains the TR key + A graphics state parameter dictionary contains the TR key @@ -383,17 +426,17 @@ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An graphics state parameter dictionary contains the TR2 key with a value other than Default + A graphics state parameter dictionary contains the TR2 key with a value other than Default - An graphics state parameter dictionary shall not contain the HTO key + A graphics state parameter dictionary shall not contain the HTO key containsHTO == false - An graphics state parameter dictionary contains the HTP key + A graphics state parameter dictionary contains the HTP key @@ -949,7 +992,7 @@ except for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - - annotations whose Subtype value is Popup or Link. + - annotations whose Subtype value is Popup, Link or Projection. (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null An annotation does not contain an appearance dictionary @@ -1016,7 +1059,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and - GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and noop actions shall + GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" @@ -1099,9 +1142,22 @@ + + + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + actualEncoding == "UTF-8" + + The XMP package uses an encoding different from UTF-8 + + + + + + - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". Identification_size == 1 The document metadata stream doesn't contains PDF/A Identification Schema. @@ -1264,5 +1320,17 @@ null outputColorSpace + + null + destOutputProfileIndirect + + + null + ICCProfileMD5 + + + null + colorSpaceType +
From d62c07728f781bba63c14ddb08f24d555029362b Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 14 Apr 2021 17:41:10 +0300 Subject: [PATCH 339/557] WCAG validation. Rules 4.1.2-1, 4.1.2-2 --- PDF_UA/WCAG-21-Complete.xml | 19 ++++++++++++--- PDF_UA/WCAG-21.xml | 19 ++++++++++++--- .../verapdf-profile-4-1-2-t01.xml | 10 ++++---- .../verapdf-profile-4-1-2-t02.xml | 24 +++++++++++++++++++ 4 files changed, 61 insertions(+), 11 deletions(-) create mode 100644 PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index dba7e77c..7cb6fed8 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -29,10 +29,23 @@ - + - The structure type and attributes of a structure element shall be semantically appropriate. - hasCorrectType == null || (hasCorrectType == true && correctSemanticScore > 0.8) + The structure type and attributes of a paragraph shall be semantically appropriate. + correctType == null || (correctType == 'P' && correctSemanticScore > 0.8) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a span shall be semantically appropriate. + correctType == null || (correctType == 'Span' && correctSemanticScore > 0.8) score = %1, correct type = %2 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index e26fe815..d740abc1 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -29,10 +29,23 @@ - + - The structure type and attributes of a structure element shall be semantically appropriate. - hasCorrectType == null || (hasCorrectType == true && correctSemanticScore > 0.8) + The structure type and attributes of a paragraph shall be semantically appropriate. + correctType == null || (correctType == 'P' && correctSemanticScore > 0.8) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a span shall be semantically appropriate. + correctType == null || (correctType == 'Span' && correctSemanticScore > 0.8) score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml index 5203fac3..d3a13fb0 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml @@ -1,15 +1,15 @@
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Semantic type - The structure type and attributes of a structure element shall be semantically appropriate. + ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Paragraph + The structure type and attributes of a paragraph shall be semantically appropriate.
- + - The structure type and attributes of a structure element shall be semantically appropriate. - hasCorrectType == null || (hasCorrectType == true && correctSemanticScore > 0.8) + The structure type and attributes of a paragraph shall be semantically appropriate. + correctType == null || (correctType == 'P' && correctSemanticScore > 0.8) score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml new file mode 100644 index 00000000..d0a68d52 --- /dev/null +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Span + The structure type and attributes of a span shall be semantically appropriate. +
+ + + + + The structure type and attributes of a span shall be semantically appropriate. + correctType == null || (correctType == 'Span' && correctSemanticScore > 0.8) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
From 0952b90e3c66327c9637f425d0fce4fc39df5a90 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 20 Apr 2021 09:32:50 +0300 Subject: [PATCH 340/557] WCAG validation. Add rules 4.1.2-3, 4.1.2-4, 4.1.2-5 --- PDF_UA/WCAG-21-Complete.xml | 40 +++++++++++++++++++ PDF_UA/WCAG-21.xml | 40 +++++++++++++++++++ .../verapdf-profile-4-1-2-t03.xml | 24 +++++++++++ .../verapdf-profile-4-1-2-t04.xml | 25 ++++++++++++ .../verapdf-profile-4-1-2-t05.xml | 24 +++++++++++ 5 files changed, 153 insertions(+) create mode 100644 PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml create mode 100644 PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml create mode 100644 PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 7cb6fed8..ab2fca4b 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -55,6 +55,46 @@
+ + + The structure type and attributes of a table shall be semantically appropriate. + correctType == null || (correctType == 'Table' && correctSemanticScore > 0.8) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of table elements shall be semantically appropriate. + ((((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) == false) || isTableChild) && + (((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) || (isTableElem == false)) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a table shall be semantically appropriate. + ((correctType == 'Table' && correctSemanticScore > 0.8) == false) || standardType == 'Table' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index d740abc1..5f79a3f9 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -55,6 +55,46 @@
+ + + The structure type and attributes of a table shall be semantically appropriate. + correctType == null || (correctType == 'Table' && correctSemanticScore > 0.8) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of table elements shall be semantically appropriate. + ((((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) == false) || isTableChild) && + (((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) || (isTableElem == false)) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a table shall be semantically appropriate. + ((correctType == 'Table' && correctSemanticScore > 0.8) == false) || standardType == 'Table' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml new file mode 100644 index 00000000..c4420799 --- /dev/null +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Table + The structure type and attributes of a table shall be semantically appropriate. +
+ + + + + The structure type and attributes of a table shall be semantically appropriate. + correctType == null || (correctType == 'Table' && correctSemanticScore > 0.8) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml new file mode 100644 index 00000000..24744e4d --- /dev/null +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Table elements + The structure type and attributes of table elements shall be semantically appropriate. +
+ + + + + The structure type and attributes of table elements shall be semantically appropriate. + ((((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) == false) || isTableChild) && + (((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) || (isTableElem == false)) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml new file mode 100644 index 00000000..6c2dc3ef --- /dev/null +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Table + The structure type and attributes of a table shall be semantically appropriate. +
+ + + + + The structure type and attributes of a table shall be semantically appropriate. + ((correctType == 'Table' && correctSemanticScore > 0.8) == false) || standardType == 'Table' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
From 83fa664b77febd11263f3be423eab692b302b563 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 3 May 2021 11:20:38 +0300 Subject: [PATCH 341/557] WCAG validation. Fix rules 4.1.2-1, 4.1.2.2 --- .../7.1 General/verapdf-profile-7-1-t13.xml | 21 ------------------ PDF_UA/PDFUA-1-Human.xml | 21 ------------------ PDF_UA/WCAG-21-Complete.xml | 22 ++++--------------- PDF_UA/WCAG-21.xml | 22 ++++--------------- .../verapdf-profile-4-1-2-t01.xml | 2 +- .../verapdf-profile-4-1-2-t02.xml | 2 +- .../verapdf-profile-4-1-2-t03.xml | 2 +- .../verapdf-profile-4-1-2-t04.xml | 4 ++-- .../verapdf-profile-4-1-2-t05.xml | 2 +- 9 files changed, 14 insertions(+), 84 deletions(-) delete mode 100644 PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml delete mode 100644 PDF_UA/PDFUA-1-Human.xml diff --git a/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml b/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml deleted file mode 100644 index 6a7ca82e..00000000 --- a/PDF_UA/1-Human/7.1 General/verapdf-profile-7-1-t13.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.1 General - Semantically appropriate structure type and attributes - The structure type and attributes of a structure element shall be semantically appropriate. -
- - - - - The structure type and attributes of a structure element shall be semantically appropriate. - (!/^H([1-9][0-9]*)*$/.test(parentStandardTag) || suspectRole == 'H') && (parentStandardTag != 'P' || suspectRole == 'P') - - The structure type and attributes of a structure element are not semantically appropriate for the structure element. - - - - - - -
diff --git a/PDF_UA/PDFUA-1-Human.xml b/PDF_UA/PDFUA-1-Human.xml deleted file mode 100644 index 15ccad9c..00000000 --- a/PDF_UA/PDFUA-1-Human.xml +++ /dev/null @@ -1,21 +0,0 @@ - - -
- PDF/UA-1 validation profile (Human) - Validation rules against ISO 14289-1:2014 (Matterhorn Human-verifiable checks) -
- - - - - The structure type and attributes of a structure element shall be semantically appropriate. - (!/^H([1-9][0-9]*)*$/.test(parentStandardTag) || suspectRole == 'H') && (parentStandardTag != 'P' || suspectRole == 'P') - - The structure type and attributes of a structure element are not semantically appropriate for the structure element. - - - - - - -
diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index ab2fca4b..871ed7ef 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -32,7 +32,7 @@ The structure type and attributes of a paragraph shall be semantically appropriate. - correctType == null || (correctType == 'P' && correctSemanticScore > 0.8) + (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'P' && correctSemanticScore > 0.8) score = %1, correct type = %2 @@ -45,7 +45,7 @@ The structure type and attributes of a span shall be semantically appropriate. - correctType == null || (correctType == 'Span' && correctSemanticScore > 0.8) + (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'Span' && correctSemanticScore > 0.8) score = %1, correct type = %2 @@ -58,21 +58,7 @@ The structure type and attributes of a table shall be semantically appropriate. - correctType == null || (correctType == 'Table' && correctSemanticScore > 0.8) - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of table elements shall be semantically appropriate. - ((((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) == false) || isTableChild) && - (((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) || (isTableElem == false)) + correctType == 'Table' && correctSemanticScore > 0.75 score = %1, correct type = %2 @@ -85,7 +71,7 @@ The structure type and attributes of a table shall be semantically appropriate. - ((correctType == 'Table' && correctSemanticScore > 0.8) == false) || standardType == 'Table' + ((correctType == 'Table' && correctSemanticScore > 0.75) == false) || standardType == 'Table' score = %1, correct type = %2 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 5f79a3f9..9d54be86 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -32,7 +32,7 @@ The structure type and attributes of a paragraph shall be semantically appropriate. - correctType == null || (correctType == 'P' && correctSemanticScore > 0.8) + (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'P' && correctSemanticScore > 0.8) score = %1, correct type = %2 @@ -45,7 +45,7 @@ The structure type and attributes of a span shall be semantically appropriate. - correctType == null || (correctType == 'Span' && correctSemanticScore > 0.8) + (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'Span' && correctSemanticScore > 0.8) score = %1, correct type = %2 @@ -58,21 +58,7 @@ The structure type and attributes of a table shall be semantically appropriate. - correctType == null || (correctType == 'Table' && correctSemanticScore > 0.8) - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of table elements shall be semantically appropriate. - ((((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) == false) || isTableChild) && - (((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) || (isTableElem == false)) + correctType == 'Table' && correctSemanticScore > 0.75 score = %1, correct type = %2 @@ -85,7 +71,7 @@ The structure type and attributes of a table shall be semantically appropriate. - ((correctType == 'Table' && correctSemanticScore > 0.8) == false) || standardType == 'Table' + ((correctType == 'Table' && correctSemanticScore > 0.75) == false) || standardType == 'Table' score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml index d3a13fb0..b43e91cb 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml @@ -9,7 +9,7 @@ The structure type and attributes of a paragraph shall be semantically appropriate. - correctType == null || (correctType == 'P' && correctSemanticScore > 0.8) + correctType == 'P' && correctSemanticScore > 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml index d0a68d52..5f666901 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml @@ -9,7 +9,7 @@ The structure type and attributes of a span shall be semantically appropriate. - correctType == null || (correctType == 'Span' && correctSemanticScore > 0.8) + correctType == 'Span' && correctSemanticScore > 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml index c4420799..0f2ab5d5 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml @@ -9,7 +9,7 @@ The structure type and attributes of a table shall be semantically appropriate. - correctType == null || (correctType == 'Table' && correctSemanticScore > 0.8) + correctType == 'Table' && correctSemanticScore > 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml index 24744e4d..ba503933 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml @@ -9,8 +9,8 @@ The structure type and attributes of table elements shall be semantically appropriate. - ((((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) == false) || isTableChild) && - (((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.8) || (isTableElem == false)) + ((((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.75) == false) || isTableChild) && + (((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.75) || (isTableElem == false)) score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml index 6c2dc3ef..34404af8 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml @@ -9,7 +9,7 @@ The structure type and attributes of a table shall be semantically appropriate. - ((correctType == 'Table' && correctSemanticScore > 0.8) == false) || standardType == 'Table' + ((correctType == 'Table' && correctSemanticScore > 0.75) == false) || standardType == 'Table' score = %1, correct type = %2 From f3e348862bd6ef48fbbc8a1b6931bc7a771567ce Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 7 May 2021 15:43:41 +0300 Subject: [PATCH 342/557] WCAG validation. Fix WCAG complete profile --- PDF_UA/WCAG-21-Complete.xml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 871ed7ef..7270c2c7 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -216,16 +216,6 @@ - - - The structure type and attributes of a structure element shall be semantically appropriate. - (!/^H([1-9][0-9]*)*$/.test(gStructureTag) || suspectRole == 'H') && (gStructureTag != 'P' || suspectRole == 'P') - - The structure type and attributes of a structure element are not semantically appropriate for the structure element. - - - - Natural language in the Outline entries shall be determined From d4f0dc501cdb25120054d2b7badad4fa2a36d869 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 17 May 2021 20:55:37 +0300 Subject: [PATCH 343/557] WCAG validaton. Fix rules 4.1.2-1, 4.1.2-2 --- PDF_UA/WCAG-21-Complete.xml | 8 ++++---- PDF_UA/WCAG-21.xml | 8 ++++---- .../4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml | 4 ++-- .../4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml | 4 ++-- .../4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml | 4 ++-- .../4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml | 6 +++--- .../4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml | 4 ++-- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 7270c2c7..814b5b1f 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -32,7 +32,7 @@ The structure type and attributes of a paragraph shall be semantically appropriate. - (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'P' && correctSemanticScore > 0.8) + (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'P' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -45,7 +45,7 @@ The structure type and attributes of a span shall be semantically appropriate. - (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'Span' && correctSemanticScore > 0.8) + (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'Span' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -58,7 +58,7 @@ The structure type and attributes of a table shall be semantically appropriate. - correctType == 'Table' && correctSemanticScore > 0.75 + correctType == 'Table' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -71,7 +71,7 @@ The structure type and attributes of a table shall be semantically appropriate. - ((correctType == 'Table' && correctSemanticScore > 0.75) == false) || standardType == 'Table' + ((correctType == 'Table' && correctSemanticScore >= 0.75) == false) || standardType == 'Table' score = %1, correct type = %2 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 9d54be86..782c9fce 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -32,7 +32,7 @@ The structure type and attributes of a paragraph shall be semantically appropriate. - (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'P' && correctSemanticScore > 0.8) + (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'P' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -45,7 +45,7 @@ The structure type and attributes of a span shall be semantically appropriate. - (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'Span' && correctSemanticScore > 0.8) + (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'Span' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -58,7 +58,7 @@ The structure type and attributes of a table shall be semantically appropriate. - correctType == 'Table' && correctSemanticScore > 0.75 + correctType == 'Table' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -71,7 +71,7 @@ The structure type and attributes of a table shall be semantically appropriate. - ((correctType == 'Table' && correctSemanticScore > 0.75) == false) || standardType == 'Table' + ((correctType == 'Table' && correctSemanticScore >= 0.75) == false) || standardType == 'Table' score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml index b43e91cb..d56c7dea 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Paragraph + ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph The structure type and attributes of a paragraph shall be semantically appropriate.
@@ -9,7 +9,7 @@ The structure type and attributes of a paragraph shall be semantically appropriate. - correctType == 'P' && correctSemanticScore > 0.75 + correctType == 'P' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml index 5f666901..802c38d3 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Span + ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Span The structure type and attributes of a span shall be semantically appropriate.
@@ -9,7 +9,7 @@ The structure type and attributes of a span shall be semantically appropriate. - correctType == 'Span' && correctSemanticScore > 0.75 + correctType == 'Span' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml index 0f2ab5d5..69c37368 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml @@ -1,7 +1,7 @@
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Table + ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table The structure type and attributes of a table shall be semantically appropriate.
@@ -9,7 +9,7 @@ The structure type and attributes of a table shall be semantically appropriate. - correctType == 'Table' && correctSemanticScore > 0.75 + correctType == 'Table' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml index ba503933..3b19c2c8 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml @@ -1,7 +1,7 @@
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Table elements + ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table elements The structure type and attributes of table elements shall be semantically appropriate.
@@ -9,8 +9,8 @@ The structure type and attributes of table elements shall be semantically appropriate. - ((((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.75) == false) || isTableChild) && - (((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore > 0.75) || (isTableElem == false)) + ((((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore >= 0.75) == false) || isTableChild) && + (((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore >= 0.75) || (isTableElem == false)) score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml index 34404af8..f26f5128 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml @@ -1,7 +1,7 @@
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Contrast (Minimum) - Name, Role, Value - Table + ISO 14289-1:2014 - 4.1 Compatible - Name, Role, Value - Table The structure type and attributes of a table shall be semantically appropriate.
@@ -9,7 +9,7 @@ The structure type and attributes of a table shall be semantically appropriate. - ((correctType == 'Table' && correctSemanticScore > 0.75) == false) || standardType == 'Table' + ((correctType == 'Table' && correctSemanticScore >= 0.75) == false) || standardType == 'Table' score = %1, correct type = %2 From 457e84080e30ec70e9ce6b9ec9fc353795730ad4 Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Fri, 7 May 2021 19:55:47 +0300 Subject: [PATCH 344/557] Fix rule 6.2.10-01 --- .../verapdf-profile-6-2-10-t01.xml | 14 ++++++++++---- PDF_A/PDFA-2A.xml | 14 ++++++++++---- PDF_A/PDFA-2B.xml | 14 ++++++++++---- PDF_A/PDFA-2U.xml | 14 ++++++++++---- PDF_A/PDFA-3A.xml | 14 ++++++++++---- PDF_A/PDFA-3B.xml | 14 ++++++++++---- PDF_A/PDFA-3U.xml | 14 ++++++++++---- 7 files changed, 70 insertions(+), 28 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml index 61581753..a17e148f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml @@ -6,12 +6,18 @@
- + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || + internalRepresentation == "Multiply" || internalRepresentation == "Screen" || + internalRepresentation == "Overlay" || internalRepresentation == "Darken" || + internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || + internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || + internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || + internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || + internalRepresentation == "Saturation" || internalRepresentation == "Color" || + internalRepresentation == "Luminosity" The document uses the blend mode not defined in ISO 32000-1:2008 diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 04aad69c..0dd902a2 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -647,12 +647,18 @@ - + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || + internalRepresentation == "Multiply" || internalRepresentation == "Screen" || + internalRepresentation == "Overlay" || internalRepresentation == "Darken" || + internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || + internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || + internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || + internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || + internalRepresentation == "Saturation" || internalRepresentation == "Color" || + internalRepresentation == "Luminosity" The document uses the blend mode not defined in ISO 32000-1:2008 diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index e97282a7..aa78252e 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -647,12 +647,18 @@ - + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || + internalRepresentation == "Multiply" || internalRepresentation == "Screen" || + internalRepresentation == "Overlay" || internalRepresentation == "Darken" || + internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || + internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || + internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || + internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || + internalRepresentation == "Saturation" || internalRepresentation == "Color" || + internalRepresentation == "Luminosity" The document uses the blend mode not defined in ISO 32000-1:2008 diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index e2617454..96c6f27f 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -647,12 +647,18 @@ - + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || + internalRepresentation == "Multiply" || internalRepresentation == "Screen" || + internalRepresentation == "Overlay" || internalRepresentation == "Darken" || + internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || + internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || + internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || + internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || + internalRepresentation == "Saturation" || internalRepresentation == "Color" || + internalRepresentation == "Luminosity" The document uses the blend mode not defined in ISO 32000-1:2008 diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 6529cc87..67719d21 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -647,12 +647,18 @@ - + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || + internalRepresentation == "Multiply" || internalRepresentation == "Screen" || + internalRepresentation == "Overlay" || internalRepresentation == "Darken" || + internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || + internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || + internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || + internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || + internalRepresentation == "Saturation" || internalRepresentation == "Color" || + internalRepresentation == "Luminosity" The document uses the blend mode not defined in ISO 32000-1:2008 diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index ccb6a48f..4982dc98 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -647,12 +647,18 @@ - + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || + internalRepresentation == "Multiply" || internalRepresentation == "Screen" || + internalRepresentation == "Overlay" || internalRepresentation == "Darken" || + internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || + internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || + internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || + internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || + internalRepresentation == "Saturation" || internalRepresentation == "Color" || + internalRepresentation == "Luminosity" The document uses the blend mode not defined in ISO 32000-1:2008 diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 19b50edc..38df253b 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -647,12 +647,18 @@ - + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - BM == null || BM == "Normal" || BM == "Compatible" || BM == "Multiply" || BM == "Screen" || BM == "Overlay" || BM == "Darken" || - BM == "Lighten" || BM == "ColorDodge" || BM == "ColorBurn" || BM == "HardLight" || BM == "SoftLight" || BM == "Difference" || BM == "Exclusion" || - BM == "Hue" || BM == "Saturation" || BM == "Color" || BM == "Luminosity" + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || + internalRepresentation == "Multiply" || internalRepresentation == "Screen" || + internalRepresentation == "Overlay" || internalRepresentation == "Darken" || + internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || + internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || + internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || + internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || + internalRepresentation == "Saturation" || internalRepresentation == "Color" || + internalRepresentation == "Luminosity" The document uses the blend mode not defined in ISO 32000-1:2008 From 4f7990ffe2bbbe8c61a37341f3563fdca01d1d6a Mon Sep 17 00:00:00 2001 From: jenechkaaaaaaaaaaa Date: Wed, 19 May 2021 20:07:29 +0300 Subject: [PATCH 345/557] Fix rule 6.2.2-02 --- .../6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml | 11 +++-------- .../6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml | 11 +++-------- PDF_A/PDFA-1A.xml | 6 +----- PDF_A/PDFA-1B.xml | 8 ++------ PDF_A/PDFA-2A.xml | 6 +----- PDF_A/PDFA-2B.xml | 8 ++------ PDF_A/PDFA-2U.xml | 8 ++------ PDF_A/PDFA-3A.xml | 8 ++------ PDF_A/PDFA-3B.xml | 8 ++------ PDF_A/PDFA-3U.xml | 8 ++------ 10 files changed, 20 insertions(+), 62 deletions(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml index adbf4ae3..7e0b87b5 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml @@ -7,11 +7,11 @@
- + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -19,10 +19,5 @@ - - - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect - - +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml index 80ba38b9..ca9d7bfc 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml @@ -8,13 +8,13 @@
- + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -22,10 +22,5 @@ - - - null - gOutputProfileIndirect== null ? destOutputProfileIndirect : gOutputProfileIndirect - - +
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 4a182ed9..20389c62 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -353,7 +353,7 @@ If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -1260,9 +1260,5 @@ null S == "GTS_PDFA1" ? colorSpace : gOutputCS - - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect -
diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 3efe40ef..dfb1730c 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -349,11 +349,11 @@ - + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -1209,9 +1209,5 @@ null S == "GTS_PDFA1" ? colorSpace : gOutputCS - - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect - diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 04aad69c..3ce10daf 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -355,7 +355,7 @@ with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -1586,9 +1586,5 @@ null S == "GTS_PDFA1" ? colorSpace : gOutputCS - - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect - diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index e97282a7..e518c6ee 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -349,13 +349,13 @@ - + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -1494,9 +1494,5 @@ null S == "GTS_PDFA1" ? colorSpace : gOutputCS - - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect - diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index e2617454..da7cafc3 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -349,13 +349,13 @@ - + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -1517,9 +1517,5 @@ null S == "GTS_PDFA1" ? colorSpace : gOutputCS - - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect - diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 6529cc87..e9d860af 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -349,13 +349,13 @@ - + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -1608,9 +1608,5 @@ null S == "GTS_PDFA1" ? colorSpace : gOutputCS - - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect - diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index ccb6a48f..cddbb7ca 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -349,13 +349,13 @@ - + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -1516,9 +1516,5 @@ null S == "GTS_PDFA1" ? colorSpace : gOutputCS - - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect - diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 19b50edc..d437171b 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -349,13 +349,13 @@ - + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream. - destOutputProfileIndirect == null || gOutputProfileIndirect == null || destOutputProfileIndirect == gOutputProfileIndirect + sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles @@ -1539,9 +1539,5 @@ null S == "GTS_PDFA1" ? colorSpace : gOutputCS - - null - gOutputProfileIndirect == null ? destOutputProfileIndirect : gOutputProfileIndirect - From a6d2abb6a632f2b8a04bf7a1c051184bea1fc624 Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Fri, 21 May 2021 16:31:05 +0300 Subject: [PATCH 346/557] Fix rule 6.9-04 --- PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml | 2 +- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml index c713562f..dd5c1042 100644 --- a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml +++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml @@ -11,7 +11,7 @@ Each embedded file’s file specification dictionary shall contain an AFRelationship key (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. - AFRelationship != null + containsEF == false || AFRelationship != null The file specification dictionary for an embedded file does not contain the AFRelationship key diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 54bd21fd..48a4b5cf 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -1244,7 +1244,7 @@ Each embedded file’s file specification dictionary shall contain an AFRelationship key (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. - AFRelationship != null + containsEF == false || AFRelationship != null The file specification dictionary for an embedded file does not contain the AFRelationship key diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index dfbcae52..5bad7b7f 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1253,7 +1253,7 @@ Each embedded file’s file specification dictionary shall contain an AFRelationship key (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. - AFRelationship != null + containsEF == false || AFRelationship != null The file specification dictionary for an embedded file does not contain the AFRelationship key From 46d8f634251934b57076a0c0d2e979a5d9b6ae7d Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 28 May 2021 12:22:21 +0300 Subject: [PATCH 347/557] WCAG validation. Add rules 4.1.2-6, 4.1.2-7 --- PDF_UA/WCAG-21-Complete.xml | 26 +++++++++++++++++++ PDF_UA/WCAG-21.xml | 26 +++++++++++++++++++ .../verapdf-profile-4-1-2-t06.xml | 24 +++++++++++++++++ .../verapdf-profile-4-1-2-t07.xml | 24 +++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml create mode 100644 PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 814b5b1f..02e80ea2 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -81,6 +81,32 @@ + + + The structure type and attributes of a heading shall be semantically appropriate. + correctType == 'H' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a number heading shall be semantically appropriate. + correctType == 'Hn' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 782c9fce..f5f74a7e 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -81,6 +81,32 @@ + + + The structure type and attributes of a heading shall be semantically appropriate. + correctType == 'H' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a number heading shall be semantically appropriate. + correctType == 'Hn' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml new file mode 100644 index 00000000..fe78603c --- /dev/null +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading + The structure type and attributes of a heading shall be semantically appropriate. +
+ + + + + The structure type and attributes of a heading shall be semantically appropriate. + correctType == 'H' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml new file mode 100644 index 00000000..a439945f --- /dev/null +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Number heading + The structure type and attributes of a number heading shall be semantically appropriate. +
+ + + + + The structure type and attributes of a number heading shall be semantically appropriate. + correctType == 'Hn' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
From 1a3a63d15b18f1af2809532ea2b02b1cf56c8493 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 4 Jun 2021 23:21:03 +0300 Subject: [PATCH 348/557] WCAG validation. Add rules 4.1.2-8, 4.1.2-9, 4.1.2-10 and 4.1.2-11 --- PDF_UA/WCAG-21-Complete.xml | 66 +++++++++++++++---- PDF_UA/WCAG-21.xml | 66 +++++++++++++++---- ...-t05.xml => verapdf-profile-4-1-2-t08.xml} | 12 ++-- .../verapdf-profile-4-1-2-t09.xml | 24 +++++++ .../verapdf-profile-4-1-2-t10.xml | 24 +++++++ ...-t04.xml => verapdf-profile-4-1-2-t11.xml} | 10 +-- 6 files changed, 168 insertions(+), 34 deletions(-) rename PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/{verapdf-profile-4-1-2-t05.xml => verapdf-profile-4-1-2-t08.xml} (69%) create mode 100644 PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml create mode 100644 PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml rename PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/{verapdf-profile-4-1-2-t04.xml => verapdf-profile-4-1-2-t11.xml} (66%) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 02e80ea2..e1ced002 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -68,10 +68,10 @@
- - - The structure type and attributes of a table shall be semantically appropriate. - ((correctType == 'Table' && correctSemanticScore >= 0.75) == false) || standardType == 'Table' + + + The structure type and attributes of a heading shall be semantically appropriate. + correctType == 'H' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -81,10 +81,10 @@ - - - The structure type and attributes of a heading shall be semantically appropriate. - correctType == 'H' && correctSemanticScore >= 0.75 + + + The structure type and attributes of a number heading shall be semantically appropriate. + correctType == 'Hn' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -94,10 +94,10 @@ - - - The structure type and attributes of a number heading shall be semantically appropriate. - correctType == 'Hn' && correctSemanticScore >= 0.75 + + + The structure type and attributes of a table row shall be semantically appropriate. + correctType == 'TR' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -107,6 +107,48 @@ + + + The structure type and attributes of a table header cell shall be semantically appropriate. + correctType == 'TH' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a table cell shall be semantically appropriate. + correctType == 'TD' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of table elements shall be semantically appropriate. + (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && + correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && + correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index f5f74a7e..10c9f5ae 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -68,10 +68,10 @@ - - - The structure type and attributes of a table shall be semantically appropriate. - ((correctType == 'Table' && correctSemanticScore >= 0.75) == false) || standardType == 'Table' + + + The structure type and attributes of a heading shall be semantically appropriate. + correctType == 'H' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -81,10 +81,10 @@ - - - The structure type and attributes of a heading shall be semantically appropriate. - correctType == 'H' && correctSemanticScore >= 0.75 + + + The structure type and attributes of a number heading shall be semantically appropriate. + correctType == 'Hn' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -94,10 +94,10 @@ - - - The structure type and attributes of a number heading shall be semantically appropriate. - correctType == 'Hn' && correctSemanticScore >= 0.75 + + + The structure type and attributes of a table row shall be semantically appropriate. + correctType == 'TR' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -107,6 +107,48 @@ + + + The structure type and attributes of a table header cell shall be semantically appropriate. + correctType == 'TH' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a table cell shall be semantically appropriate. + correctType == 'TD' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of table elements shall be semantically appropriate. + (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && + correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && + correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml similarity index 69% rename from PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml rename to PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml index f26f5128..2bcfc403 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml @@ -1,15 +1,15 @@
- ISO 14289-1:2014 - 4.1 Compatible - Name, Role, Value - Table - The structure type and attributes of a table shall be semantically appropriate. + ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table row + The structure type and attributes of a table row shall be semantically appropriate.
- - - The structure type and attributes of a table shall be semantically appropriate. - ((correctType == 'Table' && correctSemanticScore >= 0.75) == false) || standardType == 'Table' + + + The structure type and attributes of a table row shall be semantically appropriate. + correctType == 'TR' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml new file mode 100644 index 00000000..20db4567 --- /dev/null +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table header cell + The structure type and attributes of a table header cell shall be semantically appropriate. +
+ + + + + The structure type and attributes of a table header cell shall be semantically appropriate. + correctType == 'TH' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml new file mode 100644 index 00000000..c09adac6 --- /dev/null +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell + The structure type and attributes of a table cell shall be semantically appropriate. +
+ + + + + The structure type and attributes of a table cell shall be semantically appropriate. + correctType == 'TD' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml similarity index 66% rename from PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml rename to PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml index 3b19c2c8..a2a02438 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml @@ -7,15 +7,17 @@ - + The structure type and attributes of table elements shall be semantically appropriate. - ((((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore >= 0.75) == false) || isTableChild) && - (((correctType == 'TD' || correctType == 'TR' || correctType == 'TH') && correctSemanticScore >= 0.75) || (isTableElem == false)) + (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && + correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && + correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') - score = %1, correct type = %2 + score = %1, correct type = %2, structure id = %3 correctSemanticScore correctType + structureID From 85167979c7a1ab996fa132fa7463f60c2af031b1 Mon Sep 17 00:00:00 2001 From: jenechkaaaaaaaaaaa Date: Mon, 7 Jun 2021 17:20:18 +0300 Subject: [PATCH 349/557] Fix rule 6.2.2-02 --- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 20389c62..89381775 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -349,7 +349,7 @@ - + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 3ce10daf..9f9a6f92 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -349,7 +349,7 @@ - + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a From efe49b24adcd7105bb5f1e3be5789723d0855b31 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 8 Jun 2021 14:32:39 +0300 Subject: [PATCH 350/557] WCAG validation. Add WCAG-Dev profile --- PDF_UA/WCAG-21-Complete.xml | 176 ++++++++++++++++++++++++++++++++---- PDF_UA/WCAG-21-Dev.xml | 159 ++++++++++++++++++++++++++++++++ PDF_UA/WCAG-21.xml | 176 ++++++++++++++++++++++++++++++++---- 3 files changed, 473 insertions(+), 38 deletions(-) create mode 100644 PDF_UA/WCAG-21-Dev.xml diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index e1ced002..bfa809be 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -31,8 +31,8 @@ - The structure type and attributes of a paragraph shall be semantically appropriate. - (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'P' && correctSemanticScore >= 0.75) + Incorrect use of a paragraph + correctType != 'P' || correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -44,8 +44,8 @@ - The structure type and attributes of a span shall be semantically appropriate. - (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'Span' && correctSemanticScore >= 0.75) + Incorrect use of a span + correctType != 'Span' || correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -58,7 +58,9 @@ The structure type and attributes of a table shall be semantically appropriate. - correctType == 'Table' && correctSemanticScore >= 0.75 + (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'TR' score = %1, correct type = %2 @@ -69,9 +71,9 @@ - - The structure type and attributes of a heading shall be semantically appropriate. - correctType == 'H' && correctSemanticScore >= 0.75 + + Incorrect use of a heading + correctType != 'H' || correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -82,9 +84,9 @@ - - The structure type and attributes of a number heading shall be semantically appropriate. - correctType == 'Hn' && correctSemanticScore >= 0.75 + + Incorrect use of a numbered heading + correctType != 'Hn' || correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -95,9 +97,11 @@ - + The structure type and attributes of a table row shall be semantically appropriate. - correctType == 'TR' && correctSemanticScore >= 0.75 + (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' score = %1, correct type = %2 @@ -108,9 +112,11 @@ - + The structure type and attributes of a table header cell shall be semantically appropriate. - correctType == 'TH' && correctSemanticScore >= 0.75 + (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || + correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' score = %1, correct type = %2 @@ -121,9 +127,11 @@ - + The structure type and attributes of a table cell shall be semantically appropriate. - correctType == 'TD' && correctSemanticScore >= 0.75 + (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' score = %1, correct type = %2 @@ -134,8 +142,8 @@ - - The structure type and attributes of table elements shall be semantically appropriate. + + Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') @@ -149,6 +157,136 @@ + + + This structure element should be a heading instead of a paragraph + correctType != 'H' && correctType != 'Hn' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a span instead of a paragraph + correctType != 'Span' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a span + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a heading instead of a span + correctType != 'H' && correctType != 'Hn' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a heading + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a numbered heading + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant paragraph + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant span + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant heading + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant numbered heading + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml new file mode 100644 index 00000000..68778c73 --- /dev/null +++ b/PDF_UA/WCAG-21-Dev.xml @@ -0,0 +1,159 @@ + + +
+ WCAG 2.1 validation profile + Extra rules for WCAG 2.1 validation in addition to PDF/UA-1 +
+ + + + + Pages shall have the same orientation + gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation + + Pages are not have the same orientation + + + + + + + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. + Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. + (textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5) + + contrastRatio = %1 + + contrastRatio + + + + + + + The structure type and attributes of a paragraph shall be semantically appropriate. + correctType == 'P' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a span shall be semantically appropriate. + correctType == 'Span' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a table shall be semantically appropriate. + correctType == 'Table' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a heading shall be semantically appropriate. + correctType == 'H' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a numbered heading shall be semantically appropriate. + correctType == 'Hn' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a table row shall be semantically appropriate. + correctType == 'TR' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a table header cell shall be semantically appropriate. + correctType == 'TH' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a table cell shall be semantically appropriate. + correctType == 'TD' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of table elements shall be semantically appropriate. + (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && + correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && + correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + + 'Square' + orientation == 'Square' ? gPageOrientation : orientation + + +
diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 10c9f5ae..e7a189ea 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -31,8 +31,8 @@
- The structure type and attributes of a paragraph shall be semantically appropriate. - (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'P' && correctSemanticScore >= 0.75) + Incorrect use of a paragraph + correctType != 'P' || correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -44,8 +44,8 @@ - The structure type and attributes of a span shall be semantically appropriate. - (correctType == 'TD' || correctType == 'TR' || correctType == 'TH') || (correctType == 'Span' && correctSemanticScore >= 0.75) + Incorrect use of a span + correctType != 'Span' || correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -58,7 +58,9 @@ The structure type and attributes of a table shall be semantically appropriate. - correctType == 'Table' && correctSemanticScore >= 0.75 + (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'TR' score = %1, correct type = %2 @@ -69,9 +71,9 @@ - - The structure type and attributes of a heading shall be semantically appropriate. - correctType == 'H' && correctSemanticScore >= 0.75 + + Incorrect use of a heading + correctType != 'H' || correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -82,9 +84,9 @@ - - The structure type and attributes of a number heading shall be semantically appropriate. - correctType == 'Hn' && correctSemanticScore >= 0.75 + + Incorrect use of a numbered heading + correctType != 'Hn' || correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -95,9 +97,11 @@ - + The structure type and attributes of a table row shall be semantically appropriate. - correctType == 'TR' && correctSemanticScore >= 0.75 + (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' score = %1, correct type = %2 @@ -108,9 +112,11 @@ - + The structure type and attributes of a table header cell shall be semantically appropriate. - correctType == 'TH' && correctSemanticScore >= 0.75 + (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || + correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' score = %1, correct type = %2 @@ -121,9 +127,11 @@ - + The structure type and attributes of a table cell shall be semantically appropriate. - correctType == 'TD' && correctSemanticScore >= 0.75 + (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' score = %1, correct type = %2 @@ -134,8 +142,8 @@ - - The structure type and attributes of table elements shall be semantically appropriate. + + Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') @@ -149,6 +157,136 @@ + + + This structure element should be a heading instead of a paragraph + correctType != 'H' && correctType != 'Hn' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a span instead of a paragraph + correctType != 'Span' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a span + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a heading instead of a span + correctType != 'H' && correctType != 'Hn' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a heading + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a numbered heading + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant paragraph + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant span + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant heading + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant numbered heading + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + +
From d808e4155a7b71410dfeea6fdae1fa446d20e2d1 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 15 Jun 2021 21:11:08 +0300 Subject: [PATCH 351/557] WCAG validation. Add rule 4.1.2.1-10. Fix rule 4.1.2-9 --- PDF_UA/WCAG-21-Complete.xml | 2 +- PDF_UA/WCAG-21-Dev.xml | 13 +++++++++++++ PDF_UA/WCAG-21.xml | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index bfa809be..80e09edd 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -146,7 +146,7 @@ Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && - correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') + correctType != 'THead' && correctType != 'TFoot') score = %1, correct type = %2, structure id = %3 diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 68778c73..b9465a40 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -149,6 +149,19 @@
+ + + Non-standard structure type shall not be used + false + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + +
diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index e7a189ea..7f1d85c7 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -146,7 +146,7 @@ Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && - correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') + correctType != 'THead' && correctType != 'TFoot') score = %1, correct type = %2, structure id = %3 From 38be8c32b2b12a379068ff257c24355ec6584af4 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 16 Jun 2021 11:14:22 +0300 Subject: [PATCH 352/557] PDF/A validation. Fix rules 6.2.3-2, 6.4.2-1, 6.9-4 --- .../6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml | 4 ++-- PDF_A/PDFA-3U.xml | 2 +- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 15 ++++++++++++++- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml index f624ddba..b838c6eb 100644 --- a/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml +++ b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml @@ -2,14 +2,14 @@
ISO 19005-4:2020 - 6.4 Interactive Forms - 6.4.2 XFA forms - XFA key - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, if present, shall not contain the XFA key.
- The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, if present, shall not contain the XFA key. containsXFA == false diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 00d85464..2bd2b53e 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -349,7 +349,7 @@ - + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 48a4b5cf..32826359 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -1036,7 +1036,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, if present, shall not contain the XFA key. containsXFA == false diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 5bad7b7f..6214f7da 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1051,7 +1051,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, if present, shall not contain the XFA key. containsXFA == false diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 651e654a..9b76aa88 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -1037,7 +1037,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, if present, shall not contain the XFA key. containsXFA == false @@ -1233,6 +1233,19 @@ + + + Each embedded file’s file specification dictionary shall contain an AFRelationship key + (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. + containsEF == false || AFRelationship != null + + The file specification dictionary for an embedded file does not contain the AFRelationship key + + + + + + A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the From 51b770ed2f743cebd6432a362d90a5e21a0ad4d0 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 17 Jun 2021 13:08:04 +0300 Subject: [PATCH 353/557] WCAG validation. Add rules 4.1.2.1-11, 4.1.2.1-12 --- PDF_UA/WCAG-21-Dev.xml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index b9465a40..5e697d16 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -162,6 +162,32 @@
+ + + The structure type and attributes of a caption shall be semantically appropriate. + correctType == 'Caption' && correctSemanticScore >= 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a caption shall be semantically appropriate. + standardType == 'Caption' || correctType != 'Caption' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + From 5d258dc0a2de6f2d265193b27444e8b747f1b31e Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 28 Jun 2021 11:07:28 +0300 Subject: [PATCH 354/557] WCAG validation. Add rules 4.1.2-20, 4.1.2.1-13 Fix rules 4.1.2-7, 4.1.2-8 --- PDF_UA/WCAG-21-Complete.xml | 17 +++++++++++++++-- PDF_UA/WCAG-21-Dev.xml | 15 +++++++++++++++ PDF_UA/WCAG-21.xml | 17 +++++++++++++++-- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 80e09edd..e14c5bfa 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -116,7 +116,7 @@ The structure type and attributes of a table header cell shall be semantically appropriate. (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' + correctType == 'TFoot' || correctType == 'Table' || correctType == null score = %1, correct type = %2 @@ -131,7 +131,7 @@ The structure type and attributes of a table cell shall be semantically appropriate. (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' + correctType == 'TFoot' || correctType == 'Table' || correctType == null score = %1, correct type = %2 @@ -287,6 +287,19 @@
+ + + This structure element should be a caption instead of a paragraph + correctType != 'Caption' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 5e697d16..d2e234b1 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -188,6 +188,21 @@ + + + The structure type and attributes of list elements shall be semantically appropriate. + (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'L' && + correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 7f1d85c7..a782676a 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -116,7 +116,7 @@ The structure type and attributes of a table header cell shall be semantically appropriate. (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' + correctType == 'TFoot' || correctType == 'Table' || correctType == null score = %1, correct type = %2 @@ -131,7 +131,7 @@ The structure type and attributes of a table cell shall be semantically appropriate. (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' + correctType == 'TFoot' || correctType == 'Table' || correctType == null score = %1, correct type = %2 @@ -287,6 +287,19 @@
+ + + This structure element should be a caption instead of a paragraph + correctType != 'Caption' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + From 88f7a3974209d8ecd985fb854c4c2d0de3fa50dc Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 30 Jun 2021 11:07:38 +0300 Subject: [PATCH 355/557] WCAG validation. Add rules 4.1.2.1-14 - 4.1.2.1-18 --- PDF_UA/WCAG-21-Dev.xml | 91 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 86 insertions(+), 5 deletions(-) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index d2e234b1..1b7fae7b 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -58,7 +58,9 @@ The structure type and attributes of a table shall be semantically appropriate. - correctType == 'Table' && correctSemanticScore >= 0.75 + (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'TR' score = %1, correct type = %2 @@ -97,7 +99,9 @@ The structure type and attributes of a table row shall be semantically appropriate. - correctType == 'TR' && correctSemanticScore >= 0.75 + (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' score = %1, correct type = %2 @@ -110,7 +114,9 @@ The structure type and attributes of a table header cell shall be semantically appropriate. - correctType == 'TH' && correctSemanticScore >= 0.75 + (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || + correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == null score = %1, correct type = %2 @@ -123,7 +129,9 @@ The structure type and attributes of a table cell shall be semantically appropriate. - correctType == 'TD' && correctSemanticScore >= 0.75 + (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == null score = %1, correct type = %2 @@ -138,7 +146,8 @@ The structure type and attributes of table elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && - correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') + correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || + (standardType == 'L' || standardType == 'LI' || standardType == 'Lbl' || standardType == 'LBody') score = %1, correct type = %2, structure id = %3 @@ -203,6 +212,78 @@ + + + The structure type and attributes of a list shall be semantically appropriate. + (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || + correctType == 'Lbl' || correctType == 'LBody' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list item shall be semantically appropriate. + (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'Lbl' || correctType == 'LBody' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list label shall be semantically appropriate. + (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'LBody' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list body shall be semantically appropriate. + (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + A table element is incorrectly tagged as a list element or a list has the wrong numbering + (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && + correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && + correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && + standardType != 'Lbl' && standardType != 'LBody') + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + From 728704c4a97d086c0a2c02b2806370104c2e3bb3 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 8 Jul 2021 23:28:15 +0300 Subject: [PATCH 356/557] WCAG validation. Add rules 4.1.2-21 - 4.1.2-26 --- PDF_UA/WCAG-21-Complete.xml | 107 +++++++++++++++++++++++++++++++++-- PDF_UA/WCAG-21-Dev.xml | 29 +++++++--- PDF_UA/WCAG-21.xml | 110 ++++++++++++++++++++++++++++++++++-- 3 files changed, 229 insertions(+), 17 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index e14c5bfa..e30292d2 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -101,7 +101,8 @@ The structure type and attributes of a table row shall be semantically appropriate. (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' + correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' score = %1, correct type = %2 @@ -116,7 +117,8 @@ The structure type and attributes of a table header cell shall be semantically appropriate. (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == null + correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null score = %1, correct type = %2 @@ -131,7 +133,8 @@ The structure type and attributes of a table cell shall be semantically appropriate. (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == null + correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null score = %1, correct type = %2 @@ -146,7 +149,8 @@ Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && - correctType != 'THead' && correctType != 'TFoot') + correctType != 'THead' && correctType != 'TFoot') || (standardType == 'L' || + standardType == 'LI' || standardType == 'Lbl' || standardType == 'LBody') score = %1, correct type = %2, structure id = %3 @@ -300,6 +304,101 @@ + + + The structure type and attributes of list elements shall be semantically appropriate. + (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && + correctType != 'Lbl' && correctType != 'LBody') + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + The structure type and attributes of a list shall be semantically appropriate. + (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list item shall be semantically appropriate. + (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list label shall be semantically appropriate. + (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list body shall be semantically appropriate. + (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + A table element is incorrectly tagged as a list element or a list has the wrong numbering + (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && + correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && + correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && + standardType != 'Lbl' && standardType != 'LBody') + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 1b7fae7b..8d6ee5a6 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -60,7 +60,8 @@ The structure type and attributes of a table shall be semantically appropriate. (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'TR' + correctType == 'TFoot' || correctType == 'TR' || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' score = %1, correct type = %2 @@ -101,7 +102,8 @@ The structure type and attributes of a table row shall be semantically appropriate. (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' + correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' score = %1, correct type = %2 @@ -116,7 +118,9 @@ The structure type and attributes of a table header cell shall be semantically appropriate. (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == null + correctType == 'TFoot' || correctType == 'Table' || correctType == 'LI' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null score = %1, correct type = %2 @@ -131,7 +135,8 @@ The structure type and attributes of a table cell shall be semantically appropriate. (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == null + correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null score = %1, correct type = %2 @@ -216,7 +221,9 @@ The structure type and attributes of a list shall be semantically appropriate. (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || - correctType == 'Lbl' || correctType == 'LBody' + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' score = %1, correct type = %2 @@ -230,7 +237,9 @@ The structure type and attributes of a list item shall be semantically appropriate. (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'Lbl' || correctType == 'LBody' + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' score = %1, correct type = %2 @@ -244,7 +253,9 @@ The structure type and attributes of a list label shall be semantically appropriate. (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'LBody' + correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' score = %1, correct type = %2 @@ -258,7 +269,9 @@ The structure type and attributes of a list body shall be semantically appropriate. (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' + correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' score = %1, correct type = %2 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index a782676a..3661b1a9 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -60,7 +60,8 @@ The structure type and attributes of a table shall be semantically appropriate. (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'TR' + correctType == 'TFoot' || correctType == 'TR' || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' score = %1, correct type = %2 @@ -101,7 +102,8 @@ The structure type and attributes of a table row shall be semantically appropriate. (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' + correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' score = %1, correct type = %2 @@ -116,7 +118,8 @@ The structure type and attributes of a table header cell shall be semantically appropriate. (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == null + correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null score = %1, correct type = %2 @@ -131,7 +134,8 @@ The structure type and attributes of a table cell shall be semantically appropriate. (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == null + correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null score = %1, correct type = %2 @@ -146,7 +150,8 @@ Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && - correctType != 'THead' && correctType != 'TFoot') + correctType != 'THead' && correctType != 'TFoot') || (standardType == 'L' || + standardType == 'LI' || standardType == 'Lbl' || standardType == 'LBody') score = %1, correct type = %2, structure id = %3 @@ -300,6 +305,101 @@ + + + The structure type and attributes of list elements shall be semantically appropriate. + (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && + correctType != 'Lbl' && correctType != 'LBody') + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + The structure type and attributes of a list shall be semantically appropriate. + (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list item shall be semantically appropriate. + (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list label shall be semantically appropriate. + (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list body shall be semantically appropriate. + (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + A table element is incorrectly tagged as a list element or a list has the wrong numbering + (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && + correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && + correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && + standardType != 'Lbl' && standardType != 'LBody') + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + From cdf9f27fd94bc7bbc5e34d06a562c1601af06ab3 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Mon, 12 Jul 2021 15:10:46 +0300 Subject: [PATCH 357/557] Disabled list related rules for the moment --- PDF_UA/WCAG-21-Complete.xml | 64 ------------------------------------- 1 file changed, 64 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index e30292d2..67093e90 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -319,70 +319,6 @@ - - - The structure type and attributes of a list shall be semantically appropriate. - (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list item shall be semantically appropriate. - (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list label shall be semantically appropriate. - (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list body shall be semantically appropriate. - (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - A table element is incorrectly tagged as a list element or a list has the wrong numbering From e17a3766260627d639961c11bff8bd9994a39052 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Tue, 13 Jul 2021 11:54:51 +0300 Subject: [PATCH 358/557] Disabled rule WCAG 4.1.2-26 --- PDF_UA/WCAG-21-Complete.xml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 67093e90..c55177db 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -319,22 +319,6 @@ - - - A table element is incorrectly tagged as a list element or a list has the wrong numbering - (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && - correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && - correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && - standardType != 'Lbl' && standardType != 'LBody') - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. From 7d9d1c24968f394125d2ade312b83ccc18c5f957 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Tue, 13 Jul 2021 12:01:33 +0300 Subject: [PATCH 359/557] Disabled list related rules --- PDF_UA/WCAG-21.xml | 80 ---------------------------------------------- 1 file changed, 80 deletions(-) diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 3661b1a9..836db758 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -320,86 +320,6 @@ - - - The structure type and attributes of a list shall be semantically appropriate. - (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list item shall be semantically appropriate. - (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list label shall be semantically appropriate. - (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list body shall be semantically appropriate. - (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - A table element is incorrectly tagged as a list element or a list has the wrong numbering - (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && - correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && - correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && - standardType != 'Lbl' && standardType != 'LBody') - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - From a2a3e0238eda58237231124456f8648ed5b4ec69 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 3 Aug 2021 15:02:28 +0300 Subject: [PATCH 360/557] WCAG validation. Add rule 4.1.2.1-19 to dev profile --- PDF_UA/WCAG-21-Dev.xml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 8d6ee5a6..9a9efd73 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -206,7 +206,7 @@ The structure type and attributes of list elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'L' && - correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') + correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') || (standardType == 'LBody' && correctType == 'LI') score = %1, correct type = %2, structure id = %3 @@ -297,6 +297,20 @@
+ + + List item does not contain a label + correctType != 'LI' + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + From a985c8ab6c7e29a4c9c09fda0cd1cc842bf99146 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 5 Aug 2021 15:48:21 +0300 Subject: [PATCH 361/557] PDF/A validation. Fix typos --- .../verapdf-profile-6-7-11-t03.xml | 0 .../verapdf-profile-6-3-6-t01.xml | 0 .../6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml | 2 +- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml | 2 +- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml | 2 +- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml | 2 +- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml | 2 +- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml | 2 +- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml | 2 +- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml | 2 +- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml | 2 +- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml | 2 +- .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml | 2 +- .../verapdf-profile-6-2-11-5-t01.xml | 0 .../verapdf-profile-6-2-4-4-t02.xml | 2 +- .../6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml | 2 +- .../6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml | 2 +- .../verapdf-profile-6-2-11-7-t01.xml | 0 .../verapdf-profile-6-2-11-7-t02.xml | 0 .../verapdf-profile-6-2-4-4-t02.xml | 2 +- .../6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 2 +- 30 files changed, 25 insertions(+), 25 deletions(-) rename PDF_A/1a/6.7 Metadata/{6.7.11 => 6.7.11 Version and conformance level identification}/verapdf-profile-6-7-11-t03.xml (100%) rename PDF_A/1b/6.3 Fonts/{6.3.6 Font metics => 6.3.6 Font metrics}/verapdf-profile-6-3-6-t01.xml (100%) rename PDF_A/2b/6.2 Graphics/6.2.11 Fonts/{6.2.11.5 Font metics => 6.2.11.5 Font metrics}/verapdf-profile-6-2-11-5-t01.xml (100%) rename PDF_A/2u/6.2 Graphics/{6.1.11 Fonts => 6.2.11 Fonts}/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml (100%) rename PDF_A/2u/6.2 Graphics/{6.1.11 Fonts => 6.2.11 Fonts}/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml (100%) diff --git a/PDF_A/1a/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml b/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml similarity index 100% rename from PDF_A/1a/6.7 Metadata/6.7.11/verapdf-profile-6-7-11-t03.xml rename to PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml diff --git a/PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml similarity index 100% rename from PDF_A/1b/6.3 Fonts/6.3.6 Font metics/verapdf-profile-6-3-6-t01.xml rename to PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml index ffddbefa..66cca0dd 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.8 Extension schemas - Conatiner schema fields + ISO 19005-1:2005 - 6.7.8 Extension schemas - Container schema fields Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause.
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml index 830fe29d..227c66db 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.1.12 Implementation limits - Integer + ISO 19005-2:2011 - 6.1.13 Implementation limits - Integer A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648.
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml index 9c258dac..50214065 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.1.12 Implementation limits - Real (max) + ISO 19005-2:2011 - 6.1.13 Implementation limits - Real (max) A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml index 73658bf0..ad2adeea 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.1.12 Implementation limits - String + ISO 19005-2:2011 - 6.1.13 Implementation limits - String A conforming file shall not contain any string longer than 32767 bytes.
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml index 222223c4..ff62771e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.1.12 Implementation limits - Name + ISO 19005-2:2011 - 6.1.13 Implementation limits - Name A conforming file shall not contain any name longer than 127 bytes.
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml index 44b8bda0..db4a6f0a 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.1.12 Implementation limits - Real (min) + ISO 19005-2:2011 - 6.1.13 Implementation limits - Real (min) A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38).
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml index 95b0f87e..74e2ea1e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.1.12 Implementation limits - Indirect obejcts + ISO 19005-2:2011 - 6.1.13 Implementation limits - Indirect obejcts A conforming file shall not contain more than 8388607 indirect objects
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml index 88228823..670c1cae 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.1.12 Implementation limits - Graphics state nesting + ISO 19005-2:2011 - 6.1.13 Implementation limits - Graphics state nesting A conforming file shall not nest q/Q pairs by more than 28 nesting levels.
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml index c790828d..cb06b86b 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.1.12 Implementation limits - DeviceN components + ISO 19005-2:2011 - 6.1.13 Implementation limits - DeviceN components A conforming file shall not contain a DeviceN colour space with more than 32 colourants.
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml index 21ec7e63..deb75ea9 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.1.12 Implementation limits - CID + ISO 19005-2:2011 - 6.1.13 Implementation limits - CID A conforming file shall not contain a CID value greater than 65535.
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml index cc218f21..49dce111 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.1.12 Implementation limits - page boundaries + ISO 19005-2:2011 - 6.1.13 Implementation limits - page boundaries The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction.
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml similarity index 100% rename from PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metics/verapdf-profile-6-2-11-5-t01.xml rename to PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml index c0e3dab2..322f3df1 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml @@ -16,7 +16,7 @@ and whether or not an object is direct or indirect shall be ignored. areTintAndAlternateConsistent == true - Several occurrances of a Separation colour space with the same name are not consistent + Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml index f8a91cfb..932c666e 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.3 PostScript XObjects/verapdf-profile-6-2-9-t03.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.2.9 XObjects - 6.2.9.3 PostScript XObjects + ISO 19005-2:2011 - 6.2.9 XObjects - 6.2.9.3 PostScript XObjects A conforming file shall not contain any PostScript XObjects
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml index 57564680..8d745bf7 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.6.2.1 Genereal - bytes attribute + ISO 19005-2:2011 - 6.6.2.1 General - bytes attribute The bytes attribute shall not be used in the header of an XMP packet.
diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml similarity index 100% rename from PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml rename to PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml diff --git a/PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml similarity index 100% rename from PDF_A/2u/6.2 Graphics/6.1.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml rename to PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml index b83f83a7..1dbf7c6b 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml @@ -16,7 +16,7 @@ and whether or not an object is direct or indirect shall be ignored. areTintAndAlternateConsistent == true - Several occurrances of a Separation colour space with the same name are not consistent + Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml index 5ad1a433..df98b1ad 100644 --- a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-4:2020 - 6.7.2.1 Genereal - bytes attribute + ISO 19005-4:2020 - 6.7.2.1 General - bytes attribute The bytes attribute shall not be used in the header of an XMP packet.
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 80c16ca4..1b6e53cd 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -454,7 +454,7 @@ and whether or not an object is direct or indirect shall be ignored. areTintAndAlternateConsistent == true - Several occurrances of a Separation colour space with the same name are not consistent + Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index c55b1b77..2e38d0d3 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -454,7 +454,7 @@ and whether or not an object is direct or indirect shall be ignored. areTintAndAlternateConsistent == true - Several occurrances of a Separation colour space with the same name are not consistent + Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index f6916842..f49ee7d5 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -454,7 +454,7 @@ and whether or not an object is direct or indirect shall be ignored. areTintAndAlternateConsistent == true - Several occurrances of a Separation colour space with the same name are not consistent + Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index f804be91..6c98dd20 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -454,7 +454,7 @@ and whether or not an object is direct or indirect shall be ignored. areTintAndAlternateConsistent == true - Several occurrances of a Separation colour space with the same name are not consistent + Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 3b0a2758..ca2321aa 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -454,7 +454,7 @@ and whether or not an object is direct or indirect shall be ignored. areTintAndAlternateConsistent == true - Several occurrances of a Separation colour space with the same name are not consistent + Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 2bd2b53e..82e3abf7 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -454,7 +454,7 @@ and whether or not an object is direct or indirect shall be ignored. areTintAndAlternateConsistent == true - Several occurrances of a Separation colour space with the same name are not consistent + Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 32826359..7c8ba91c 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -404,7 +404,7 @@ and whether or not an object is direct or indirect shall be ignored. areTintAndAlternateConsistent == true - Several occurrances of a Separation colour space with the same name are not consistent + Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 6214f7da..781e8245 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -418,7 +418,7 @@ and whether or not an object is direct or indirect shall be ignored. areTintAndAlternateConsistent == true - Several occurrances of a Separation colour space with the same name are not consistent + Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 9b76aa88..58bf9643 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -404,7 +404,7 @@ and whether or not an object is direct or indirect shall be ignored. areTintAndAlternateConsistent == true - Several occurrances of a Separation colour space with the same name are not consistent + Several occurrences of a Separation colour space with the same name are not consistent From 6b4e4a3c21889f9936f6da061c8471f83679e53b Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 6 Aug 2021 17:24:27 +0300 Subject: [PATCH 362/557] PDF/A validation. Fix rules 6.2.5-6 --- .../verapdf-profile-6-2-5-t06.xml | 6 +++--- .../verapdf-profile-6-2-5-t06.xml | 2 +- PDF_A/PDFA-2A.xml | 6 +++--- PDF_A/PDFA-2B.xml | 6 +++--- PDF_A/PDFA-2U.xml | 6 +++--- PDF_A/PDFA-3A.xml | 6 +++--- PDF_A/PDFA-3B.xml | 6 +++--- PDF_A/PDFA-3U.xml | 6 +++--- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 2 +- 11 files changed, 25 insertions(+), 25 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml index b4a2b6cd..b6dfe129 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -9,9 +9,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == null || colorantName == 'Default' || - ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || - colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || + colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || + colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml index 39e4a6dd..1f4882a0 100644 --- a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -9,7 +9,7 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. - colorantName == null || colorantName == 'Default' || ((colorantName == 'Cyan' || + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 1b6e53cd..2facf789 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == null || colorantName == 'Default' || - ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || - colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || + colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || + colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 2e38d0d3..2ff2f5b8 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == null || colorantName == 'Default' || - ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || - colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || + colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || + colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index f49ee7d5..1201c5e5 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == null || colorantName == 'Default' || - ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || - colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || + colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || + colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 6c98dd20..c7499afe 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == null || colorantName == 'Default' || - ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || - colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || + colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || + colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index ca2321aa..f43b32dd 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == null || colorantName == 'Default' || - ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || - colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || + colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || + colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 82e3abf7..960ff8f6 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == null || colorantName == 'Default' || - ( (colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || - colorantName == 'Green' || colorantName == 'Blue') ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || + colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || + colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 7c8ba91c..53308a36 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -464,7 +464,7 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. - colorantName == null || colorantName == 'Default' || ((colorantName == 'Cyan' || + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 781e8245..0101229b 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -478,7 +478,7 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. - colorantName == null || colorantName == 'Default' || ((colorantName == 'Cyan' || + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 58bf9643..29594b44 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -464,7 +464,7 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. - colorantName == null || colorantName == 'Default' || ((colorantName == 'Cyan' || + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) From a4291c2670de158fab7d72b25025b59e0b0362b8 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 19 Aug 2021 16:41:24 +0300 Subject: [PATCH 363/557] PDF/A validation. Fix rules 6.5.1-1, 6.6.1-1 --- PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml | 2 +- PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml | 2 +- PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml index 8c337cc5..8d982854 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml @@ -11,7 +11,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml index 4d8738e5..e20236cc 100644 --- a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml +++ b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -12,7 +12,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" Unknown or not permitted action type diff --git a/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml index f2f4932d..f8f95e5f 100644 --- a/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml +++ b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -14,7 +14,7 @@ permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in Annex B. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "SetOCGState" || S == "GoTo3DView" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 2facf789..d2546018 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1193,7 +1193,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 2ff2f5b8..fd37c416 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1155,7 +1155,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 1201c5e5..a66829e8 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1178,7 +1178,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index c7499afe..f542f94b 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1193,7 +1193,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index f43b32dd..9422afe9 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1155,7 +1155,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 960ff8f6..1f83b4fc 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1178,7 +1178,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted action type diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 53308a36..3a08896d 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -1060,7 +1060,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" Unknown or not permitted action type diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 0101229b..6e7bdcac 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1076,7 +1076,7 @@ permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in Annex B. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "SetOCGState" || S == "GoTo3DView" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 29594b44..47ca8b11 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -1061,7 +1061,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GotToE" || S == "Thread" || S == "URI" || S == "Named" || + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" Unknown or not permitted action type From 81a79fe171eed71e3369879fd5353a521e91c16a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 19 Aug 2021 23:36:20 +0300 Subject: [PATCH 364/557] WCAG validation. Fix rules 4.1.2-9, 4.1.2.1-13. --- PDF_UA/WCAG-21-Complete.xml | 6 +++--- PDF_UA/WCAG-21-Dev.xml | 39 +++++++++++++++++++++++++++++++++---- PDF_UA/WCAG-21.xml | 6 +++--- 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index c55177db..639bef84 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -148,9 +148,9 @@ Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && - correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && - correctType != 'THead' && correctType != 'TFoot') || (standardType == 'L' || - standardType == 'LI' || standardType == 'Lbl' || standardType == 'LBody') + correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && + correctType != 'TFoot') || (standardType == 'L' || standardType == 'LI' || standardType == 'Lbl' || + standardType == 'LBody') || (isTableChild && isTableElem == false) score = %1, correct type = %2, structure id = %3 diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 9a9efd73..95e77412 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -6,6 +6,36 @@
+ + + Document should not contain illegible font + fontName.indexOf('Adobe Devanagari') == -1 && fontName.indexOf('Agency FB') == -1 && + fontName.indexOf('Blackadder ITC') == -1 && fontName.indexOf('Bodoni MT Poster Compressed') == -1 && + fontName.indexOf('Bradley Hand ITC') == -1 && fontName.indexOf('Brush Script MT') == -1 && + fontName.indexOf('Chiller') == -1 && fontName.indexOf('Colonna MT') == -1 && + fontName.indexOf('Curlz MT') == -1 && fontName.indexOf('Edwardian Script ITC') == -1 && + fontName.indexOf('ESRI ArcGIS TDN') == -1 && fontName.indexOf('Freestyle Script') == -1 && + fontName.indexOf('French Script MT') == -1 && fontName.indexOf('Gabriola') == -1 && + fontName.indexOf('Gigi') == -1 && fontName.indexOf('Gill Sans MT Ext Condensed Bold') == -1 && + fontName.indexOf('Harlow Solid Italic') == -1 && fontName.indexOf('Harrington') == -1 && + fontName.indexOf('Informal Roman') == -1 && fontName.indexOf('Jokerman') == -1 && + fontName.indexOf('French Script MT') == -1 && fontName.indexOf('Gabriola') == -1 && + fontName.indexOf('Juice ITC') == -1 && fontName.indexOf('Kunstler Script') == -1 && + fontName.indexOf('Magneto') == -1 && fontName.indexOf('Matura MT Script Capitals') == -1 && + fontName.indexOf('Microsoft Uighur') == -1 && fontName.indexOf('Mistral') == -1 && + fontName.indexOf('Old English Text MT') == -1 && fontName.indexOf('Onyx') == -1 && + fontName.indexOf('Palace Script MT') == -1 && fontName.indexOf('Parchment') == -1 && + fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && + fontName.indexOf('Rage Italic') == -1 && fontName.indexOf('Ravie') == -1 && + fontName.indexOf('Segoe Script') == -1 && fontName.indexOf('Showcard Gothic') == -1 && + fontName.indexOf('Snap ITC') == -1 && fontName.indexOf('Vivaldi') == -1 && + fontName.indexOf('Vladimir Script') == -1 + + Document contains illegible font + + + + Pages shall have the same orientation @@ -150,9 +180,9 @@ The structure type and attributes of table elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && - correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && - correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || - (standardType == 'L' || standardType == 'LI' || standardType == 'Lbl' || standardType == 'LBody') + correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && + correctType != 'TFoot') || (standardType == 'L' || standardType == 'LI' || standardType == 'Lbl' || + standardType == 'LBody') || (isTableChild && isTableElem == false) score = %1, correct type = %2, structure id = %3 @@ -206,7 +236,8 @@ The structure type and attributes of list elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'L' && - correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') || (standardType == 'LBody' && correctType == 'LI') + correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') || + (standardType == 'LBody' && correctType == 'LI') score = %1, correct type = %2, structure id = %3 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 836db758..5c1bec34 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -149,9 +149,9 @@ Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && - correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && - correctType != 'THead' && correctType != 'TFoot') || (standardType == 'L' || - standardType == 'LI' || standardType == 'Lbl' || standardType == 'LBody') + correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && + correctType != 'TFoot') || (standardType == 'L' || standardType == 'LI' || standardType == 'Lbl' || + standardType == 'LBody') || (isTableChild && isTableElem == false) score = %1, correct type = %2, structure id = %3 From 8c687985bfdaa575cfb079e9e6cc7164c84c4ae0 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 20 Aug 2021 14:43:08 +0300 Subject: [PATCH 365/557] PDF/A-1A validation. Add rule 6.8.4-1 --- .../verapdf-profile-6-8-4-t01.xml | 28 +++++++++++++++++++ PDF_A/PDFA-1A.xml | 15 ++++++++++ 2 files changed, 43 insertions(+) create mode 100644 PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml new file mode 100644 index 00000000..cd9c1567 --- /dev/null +++ b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml @@ -0,0 +1,28 @@ + + +
+ ISO 19005-1:2005 - 6.8.4 Natural language specification + If the Lang entry is present in the document catalog dictionary or in a structure element + dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for the + Identification of Languages, as described in PDF Reference 9.8.1. +
+ + + + + If the Lang entry is present in the document catalog dictionary or in a structure element + dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for + the Identification of Languages, as described in PDF Reference 9.8.1. + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})*$/.test(unicodeValue) + + The Lang value is invalid + + + + + + + + + +
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 89381775..f5375b5a 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1234,6 +1234,21 @@
+ + + If the Lang entry is present in the document catalog dictionary or in a structure element + dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for + the Identification of Languages, as described in PDF Reference 9.8.1. + unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})*$/.test(unicodeValue) + + The Lang value is invalid + + + + + + + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false From 9f2425e57f500ccc976346561247252aeba74a95 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 24 Aug 2021 12:49:52 +0300 Subject: [PATCH 366/557] WCAG validation. Fix rules 4.1.2.1-13, 7.1-9 --- PDF_UA/WCAG-21-Complete.xml | 2 +- PDF_UA/WCAG-21-Dev.xml | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 639bef84..d69c7af9 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -437,7 +437,7 @@ The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document. - dc_title != null + dc_title != null && dc_title != '' Metadata stream does not contain dc:title diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 95e77412..5b09ac4c 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -36,6 +36,26 @@ + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + Pages shall have the same orientation @@ -237,7 +257,7 @@ The structure type and attributes of list elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'L' && correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') || - (standardType == 'LBody' && correctType == 'LI') + (standardType == 'LBody' && correctType == 'LI') || (isListChild && isListElem == false) score = %1, correct type = %2, structure id = %3 From a42b18bda846b3b24c59fd00bc5812f619e63310 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 21 Jul 2021 19:37:17 +0300 Subject: [PATCH 367/557] PDF validation. Fix rules 6.2.11.6-2, 6.2.10.6-2, 7.21.6-2 --- .../verapdf-profile-6-7-4-t01.xml | 2 +- .../verapdf-profile-6-2-11-6-t02.xml | 4 ++-- .../verapdf-profile-6-2-10-6-t02.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 2 +- .../7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml | 2 +- PDF_UA/PDFUA-1.xml | 2 +- PDF_UA/WCAG-21-Complete.xml | 2 +- 15 files changed, 16 insertions(+), 16 deletions(-) diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml index 63567f71..f1030650 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml @@ -10,7 +10,7 @@ - + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml index 8f7aa8b6..14149dbe 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml @@ -16,8 +16,8 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml index dbd3b4d9..778d517d 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml @@ -17,7 +17,7 @@ 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' subtable.
isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index d2546018..61de2901 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -967,7 +967,7 @@ 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index fd37c416..baf4c909 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -967,7 +967,7 @@ 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index a66829e8..e8fbc013 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -967,7 +967,7 @@ 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index f542f94b..7032e9bb 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -967,7 +967,7 @@ 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 9422afe9..e4632d3a 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -967,7 +967,7 @@ 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 1f83b4fc..ce000eb5 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -967,7 +967,7 @@ 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 3a08896d..0791c372 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -884,7 +884,7 @@ 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' subtable. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 6e7bdcac..5dde116c 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -898,7 +898,7 @@ 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' subtable. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 47ca8b11..1bf02efb 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -884,7 +884,7 @@ 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' subtable. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml index 1da493ee..d768d4ca 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml @@ -17,7 +17,7 @@ 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 43357f99..02d84126 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -1034,7 +1034,7 @@ 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index d69c7af9..03894850 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1344,7 +1344,7 @@ 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. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (Encoding == "Custom" && differencesAreUnicodeCompliant == true) + (containsDifferences == true && differencesAreUnicodeCompliant == true) A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List From 27351109a5bb78799ebf1b60f4ebf29fbfe122b4 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 25 Aug 2021 12:13:28 +0300 Subject: [PATCH 368/557] PDF/A validation. Fix rules 6.7.4-1, 6.8.4-1 --- .../verapdf-profile-6-8-4-t01.xml | 2 +- .../verapdf-profile-6-7-4-t01.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml index cd9c1567..b009efac 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml @@ -9,7 +9,7 @@ - + If the Lang entry is present in the document catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for the Identification of Languages, as described in PDF Reference 9.8.1. diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml index f1030650..63567f71 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml @@ -10,7 +10,7 @@ - + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index f5375b5a..b8b100b2 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1235,7 +1235,7 @@ - + If the Lang entry is present in the document catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for the Identification of Languages, as described in PDF Reference 9.8.1. From 8bed80ae2e76ee3a428f14ea6eaaeae4436ac0ff Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 27 Aug 2021 13:57:58 +0300 Subject: [PATCH 369/557] WCAG validation. Fix rule 1-1. Add rules 1-4, 1-5 --- PDF_UA/WCAG-21-Dev.xml | 63 ++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 5b09ac4c..83f09dc0 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -9,27 +9,27 @@ Document should not contain illegible font - fontName.indexOf('Adobe Devanagari') == -1 && fontName.indexOf('Agency FB') == -1 && - fontName.indexOf('Blackadder ITC') == -1 && fontName.indexOf('Bodoni MT Poster Compressed') == -1 && - fontName.indexOf('Bradley Hand ITC') == -1 && fontName.indexOf('Brush Script MT') == -1 && - fontName.indexOf('Chiller') == -1 && fontName.indexOf('Colonna MT') == -1 && - fontName.indexOf('Curlz MT') == -1 && fontName.indexOf('Edwardian Script ITC') == -1 && - fontName.indexOf('ESRI ArcGIS TDN') == -1 && fontName.indexOf('Freestyle Script') == -1 && - fontName.indexOf('French Script MT') == -1 && fontName.indexOf('Gabriola') == -1 && - fontName.indexOf('Gigi') == -1 && fontName.indexOf('Gill Sans MT Ext Condensed Bold') == -1 && - fontName.indexOf('Harlow Solid Italic') == -1 && fontName.indexOf('Harrington') == -1 && - fontName.indexOf('Informal Roman') == -1 && fontName.indexOf('Jokerman') == -1 && - fontName.indexOf('French Script MT') == -1 && fontName.indexOf('Gabriola') == -1 && - fontName.indexOf('Juice ITC') == -1 && fontName.indexOf('Kunstler Script') == -1 && - fontName.indexOf('Magneto') == -1 && fontName.indexOf('Matura MT Script Capitals') == -1 && - fontName.indexOf('Microsoft Uighur') == -1 && fontName.indexOf('Mistral') == -1 && - fontName.indexOf('Old English Text MT') == -1 && fontName.indexOf('Onyx') == -1 && - fontName.indexOf('Palace Script MT') == -1 && fontName.indexOf('Parchment') == -1 && + fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && + fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && + fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && + fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && + fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && + fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && + fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && + fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMTExtCondensedBold') == -1 && + fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && + fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && + fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && + fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && + fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && + fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && + fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && + fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && - fontName.indexOf('Rage Italic') == -1 && fontName.indexOf('Ravie') == -1 && - fontName.indexOf('Segoe Script') == -1 && fontName.indexOf('Showcard Gothic') == -1 && - fontName.indexOf('Snap ITC') == -1 && fontName.indexOf('Vivaldi') == -1 && - fontName.indexOf('Vladimir Script') == -1 + fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && + fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && + fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && + fontName.indexOf('VladimirScript') == -1 Document contains illegible font @@ -56,6 +56,29 @@ + + + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. + (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 || + (textValue != null && textValue != '' && hasLinkValue == false) + + A link annotation does not include an alternate description in the Contents Key + + + + + + + + + Text should not contain repeated characters + isLeafElem == false || numberOfSameCharacters < 5 + + Text contains repeated characters + + + + Pages shall have the same orientation From ac1f871b30664d9b9de0acd9bc6f5587bb1e2b28 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 1 Sep 2021 22:47:14 +0300 Subject: [PATCH 370/557] PDF/A-1 validation. Fix rules 6.3.5-2, 6.3.5-3 --- .../6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml | 2 +- .../6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml | 2 +- PDF_A/PDFA-1A.xml | 4 ++-- PDF_A/PDFA-1B.xml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml index 04befb54..6077a151 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t02.xml @@ -7,7 +7,7 @@
- + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml index 4911cf43..5db1050e 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml @@ -7,7 +7,7 @@
- + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index b8b100b2..978b073c 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -701,7 +701,7 @@ - + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 @@ -714,7 +714,7 @@ - + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index dfb1730c..93c936a4 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -701,7 +701,7 @@ - + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 @@ -714,7 +714,7 @@ - + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 From cc776f754e77f0b51f44a23f047a823c20651529 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 27 Sep 2021 16:29:43 +0300 Subject: [PATCH 371/557] WCAG validation. Update profiles --- PDF_UA/WCAG-21-Complete.xml | 86 ++++++++++++++++++++++++++++----- PDF_UA/WCAG-21-Dev.xml | 95 +++++++++++++++++++------------------ PDF_UA/WCAG-21.xml | 74 +++++++++++++++++++++++++++++ 3 files changed, 196 insertions(+), 59 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 03894850..b8472cb6 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -6,6 +6,16 @@
+ + + Text should not contain repeated characters + isLeafElem == false || numberOfSameCharacters < 5 + + Text contains repeated characters + + + + Pages shall have the same orientation @@ -29,6 +39,70 @@ + + + Document should not contain illegible font + fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && + fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && + fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && + fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && + fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && + fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && + fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && + fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && + fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && + fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && + fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && + fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && + fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && + fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && + fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && + fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && + fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && + fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && + fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && + fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && + fontName.indexOf('VladimirScript') == -1 && + (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) + + Document contains illegible font + + + + + + + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. + (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 || + (textValue != null && textValue != '' && hasLinkValue == false) + + A link annotation does not include an alternate description in the Contents Key + + + + + + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + Incorrect use of a paragraph @@ -1103,18 +1177,6 @@ - - - Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. - (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 - - A link annotation does not include an alternate description in the Contents Key - - - - - - In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 83f09dc0..8da121c8 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -6,8 +6,41 @@
+ + + Text should not contain repeated characters + isLeafElem == false || numberOfSameCharacters < 5 + + Text contains repeated characters + + + + + + + Pages shall have the same orientation + gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation + + Pages are not have the same orientation + + + + + + + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. + Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. + (textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5) + + contrastRatio = %1 + + contrastRatio + + + + - + Document should not contain illegible font fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && @@ -16,7 +49,7 @@ fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && - fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMTExtCondensedBold') == -1 && + fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && @@ -29,35 +62,16 @@ fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && - fontName.indexOf('VladimirScript') == -1 + fontName.indexOf('VladimirScript') == -1 && + (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) Document contains illegible font - - - Table shouldn't have merged cells - ColSpan == 1 && RowSpan == 1 - - Table has merged cells - - - - - - - Table shouldn't have merged cells - ColSpan == 1 && RowSpan == 1 - - Table has merged cells - - - - - + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && hasLinkValue == false) @@ -69,39 +83,26 @@ - - - Text should not contain repeated characters - isLeafElem == false || numberOfSameCharacters < 5 + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 - Text contains repeated characters + Table has merged cells - - - Pages shall have the same orientation - gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 - Pages are not have the same orientation + Table has merged cells - - - The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. - Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - (textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5) - - contrastRatio = %1 - - contrastRatio - - - - The structure type and attributes of a paragraph shall be semantically appropriate. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 5c1bec34..3b7cd26e 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -6,6 +6,16 @@
+ + + Text should not contain repeated characters + isLeafElem == false || numberOfSameCharacters < 5 + + Text contains repeated characters + + + + Pages shall have the same orientation @@ -29,6 +39,70 @@ + + + Document should not contain illegible font + fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && + fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && + fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && + fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && + fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && + fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && + fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && + fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && + fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && + fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && + fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && + fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && + fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && + fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && + fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && + fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && + fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && + fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && + fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && + fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && + fontName.indexOf('VladimirScript') == -1 && + (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) + + Document contains illegible font + + + + + + + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. + (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 || + (textValue != null && textValue != '' && hasLinkValue == false) + + A link annotation does not include an alternate description in the Contents Key + + + + + + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + Incorrect use of a paragraph From 2e044e65f1fd8b8c316d35aa982c6f8971975c9f Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 4 Oct 2021 12:20:47 +0300 Subject: [PATCH 372/557] WCAG validation. Fix rules 4.1.2-9, 4.1.2.1-13 --- PDF_UA/WCAG-21-Complete.xml | 2 +- PDF_UA/WCAG-21-Dev.xml | 4 ++-- PDF_UA/WCAG-21.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index b8472cb6..72838fe7 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -224,7 +224,7 @@ (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot') || (standardType == 'L' || standardType == 'LI' || standardType == 'Lbl' || - standardType == 'LBody') || (isTableChild && isTableElem == false) + standardType == 'LBody') || (isTableChild == true && isTableElem == false) score = %1, correct type = %2, structure id = %3 diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 8da121c8..57eff11b 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -226,7 +226,7 @@ (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot') || (standardType == 'L' || standardType == 'LI' || standardType == 'Lbl' || - standardType == 'LBody') || (isTableChild && isTableElem == false) + standardType == 'LBody') || (isTableChild == true && isTableElem == false) score = %1, correct type = %2, structure id = %3 @@ -281,7 +281,7 @@ The structure type and attributes of list elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'L' && correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') || - (standardType == 'LBody' && correctType == 'LI') || (isListChild && isListElem == false) + (standardType == 'LBody' && correctType == 'LI') || (isListChild == true && isListElem == false) score = %1, correct type = %2, structure id = %3 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 3b7cd26e..b1bc1322 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -225,7 +225,7 @@ (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot') || (standardType == 'L' || standardType == 'LI' || standardType == 'Lbl' || - standardType == 'LBody') || (isTableChild && isTableElem == false) + standardType == 'LBody') || (isTableChild == true && isTableElem == false) score = %1, correct type = %2, structure id = %3 From 78ae5bf7e897f274f0987da9ec9257c69c553171 Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Tue, 5 Oct 2021 15:05:21 +0300 Subject: [PATCH 373/557] Fixed boolean property name checking --- .../6.1.6 String objects/verapdf-profile-6-1-6-t02.xml | 2 +- .../6.1.6 String objects/verapdf-profile-6-1-6-t02.xml | 2 +- .../6.1.5 String objects/verapdf-profile-6-1-5-t02.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml index b869b819..a17237aa 100644 --- a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml @@ -9,7 +9,7 @@ All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml index 3be5fd99..88a118f0 100644 --- a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t02.xml @@ -9,7 +9,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t02.xml b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t02.xml index 1ad63180..ce0aea56 100644 --- a/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t02.xml +++ b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t02.xml @@ -9,7 +9,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 978b073c..3c2ae54f 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -107,7 +107,7 @@ All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 93c936a4..0d6f7ff9 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -107,7 +107,7 @@ All non-white-space characters in hexadecimal strings shall be in the range 0 to 9, A to F or a to f - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 61de2901..656282f7 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -85,7 +85,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index baf4c909..aed81558 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -85,7 +85,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index e8fbc013..fcb9a28c 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -85,7 +85,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 7032e9bb..c2eb8ede 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -85,7 +85,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index e4632d3a..8be732cf 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -85,7 +85,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index ce000eb5..ae742bde 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -85,7 +85,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 0791c372..5c537450 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -105,7 +105,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 5dde116c..80b7a4ed 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -105,7 +105,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 1bf02efb..1e30be94 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -105,7 +105,7 @@ A hexadecimal string is written as a sequence of hexadecimal digits (0–9 and either A–F or a–f) - (isHex != true) || containsOnlyHex + (isHex != true) || containsOnlyHex == true Hexadecimal string contains non-white-space characters outside the range 0 to 9, A to F or a to f From 1964c0814f29d5728920976f40d52658216e8546 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 7 Oct 2021 13:35:33 +0300 Subject: [PATCH 374/557] WCAG validation. Add rule about span detection --- PDF_UA/WCAG-21-Dev.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 57eff11b..335db30b 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -6,6 +6,16 @@
+ + + If text has a different style, it shall tagged as Span + hasSpecialStyle == false + + Text has a different style and not tagged as Span + + + + Text should not contain repeated characters From c113b6621a3b85135ef1b9cfb02bc2e0d550d3ea Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Mon, 1 Nov 2021 12:52:39 +0300 Subject: [PATCH 375/557] Added WCAG flavour --- PDF_UA/WCAG-21-Complete.xml | 2 +- PDF_UA/WCAG-21-Dev.xml | 2 +- PDF_UA/WCAG-21.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 72838fe7..2414d98b 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1,5 +1,5 @@ - +
WCAG-2.1-Complete validation profile Validation rules against WCAG 2.1 and ISO 14289-1:2014 diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 335db30b..1259c024 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -1,5 +1,5 @@ - +
WCAG 2.1 validation profile Extra rules for WCAG 2.1 validation in addition to PDF/UA-1 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index b1bc1322..cdabc758 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -1,5 +1,5 @@ - +
WCAG 2.1 validation profile Extra rules for WCAG 2.1 validation in addition to PDF/UA-1 From 1087073a56d72c717a4ece2b2a9a0c8c7724fb1a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 12 Nov 2021 15:12:41 +0300 Subject: [PATCH 376/557] PDF/A validation. Fix rules 6.2.4.4-2, 6.2.7.3-2 - 6.2.7.3-4 and 6.2.8.3-2 - 6.2.8.3-4 --- .../verapdf-profile-6-2-4-4-t02.xml | 2 +- .../6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml | 2 +- .../6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml | 2 +- .../6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml | 2 +- .../verapdf-profile-6-2-4-4-t02.xml | 2 +- .../6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml | 2 +- .../6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml | 2 +- .../6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml | 2 +- PDF_A/PDFA-2A.xml | 8 ++++---- PDF_A/PDFA-2B.xml | 8 ++++---- PDF_A/PDFA-2U.xml | 8 ++++---- PDF_A/PDFA-3A.xml | 8 ++++---- PDF_A/PDFA-3B.xml | 8 ++++---- PDF_A/PDFA-3U.xml | 8 ++++---- PDF_A/PDFA-4.xml | 8 ++++---- PDF_A/PDFA-4E.xml | 8 ++++---- PDF_A/PDFA-4F.xml | 8 ++++---- 17 files changed, 44 insertions(+), 44 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml index 322f3df1..34914936 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml @@ -14,7 +14,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + name == 'All' || name == 'None' || areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml index a2836b45..38894e7f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml @@ -11,7 +11,7 @@ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. - nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml index d36bc707..fff37937 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml @@ -11,7 +11,7 @@ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications. - colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Colour specification of the JPEG2000 image has specification method. diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml index 6af2e7a3..de44f229 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml @@ -9,7 +9,7 @@ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. - colrEnumCS == null || colrEnumCS != 19 + hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml index 1dbf7c6b..3330261e 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml @@ -14,7 +14,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + name == 'All' || name == 'None' || areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml index aa91bc8c..9ef4bddf 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml @@ -11,7 +11,7 @@ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. - nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml index daccc72f..86e695c8 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml @@ -11,7 +11,7 @@ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only that colour space and shall ignore all other colour space specifications. - colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Colour specification of the JPEG2000 image has specification method. diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml index fd10e299..495685b8 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml @@ -9,7 +9,7 @@ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. - colrEnumCS == null || colrEnumCS != 19 + hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 656282f7..1b2e5ccc 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -452,7 +452,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + name == 'All' || name == 'None' || areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -579,7 +579,7 @@ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. - nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). @@ -590,7 +590,7 @@ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications. - colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Colour specification of the JPEG2000 image has specification method. @@ -600,7 +600,7 @@ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. - colrEnumCS == null || colrEnumCS != 19 + hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index aed81558..e12cef2d 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -452,7 +452,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + name == 'All' || name == 'None' || areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -579,7 +579,7 @@ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. - nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). @@ -590,7 +590,7 @@ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications. - colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Colour specification of the JPEG2000 image has specification method. @@ -600,7 +600,7 @@ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. - colrEnumCS == null || colrEnumCS != 19 + hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index fcb9a28c..c3ae8fbc 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -452,7 +452,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + name == 'All' || name == 'None' || areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -579,7 +579,7 @@ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. - nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). @@ -590,7 +590,7 @@ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications. - colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Colour specification of the JPEG2000 image has specification method. @@ -600,7 +600,7 @@ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. - colrEnumCS == null || colrEnumCS != 19 + hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index c2eb8ede..0ee16bcc 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -452,7 +452,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + name == 'All' || name == 'None' || areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -579,7 +579,7 @@ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. - nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). @@ -590,7 +590,7 @@ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications. - colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Colour specification of the JPEG2000 image has specification method. @@ -600,7 +600,7 @@ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. - colrEnumCS == null || colrEnumCS != 19 + hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 8be732cf..16be67db 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -452,7 +452,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + name == 'All' || name == 'None' || areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -579,7 +579,7 @@ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. - nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). @@ -590,7 +590,7 @@ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications. - colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Colour specification of the JPEG2000 image has specification method. @@ -600,7 +600,7 @@ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. - colrEnumCS == null || colrEnumCS != 19 + hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index ae742bde..6242c44f 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -452,7 +452,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + name == 'All' || name == 'None' || areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -579,7 +579,7 @@ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. - nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). @@ -590,7 +590,7 @@ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications. - colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Colour specification of the JPEG2000 image has specification method. @@ -600,7 +600,7 @@ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. - colrEnumCS == null || colrEnumCS != 19 + hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 5c537450..17b3fef5 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -402,7 +402,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + name == 'All' || name == 'None' || areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -520,7 +520,7 @@ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. - nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). @@ -531,7 +531,7 @@ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only that colour space and shall ignore all other colour space specifications. - colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Colour specification of the JPEG2000 image has specification method. @@ -541,7 +541,7 @@ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. - colrEnumCS == null || colrEnumCS != 19 + hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 80b7a4ed..9b04ddf2 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -416,7 +416,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + name == 'All' || name == 'None' || areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -534,7 +534,7 @@ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. - nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). @@ -545,7 +545,7 @@ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only that colour space and shall ignore all other colour space specifications. - colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Colour specification of the JPEG2000 image has specification method. @@ -555,7 +555,7 @@ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. - colrEnumCS == null || colrEnumCS != 19 + hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 1e30be94..dc25ccc4 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -402,7 +402,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - areTintAndAlternateConsistent == true + name == 'All' || name == 'None' || areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -520,7 +520,7 @@ If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field. - nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 + hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). @@ -531,7 +531,7 @@ The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only that colour space and shall ignore all other colour space specifications. - colrMethod == 1 || colrMethod == 2 || colrMethod == 3 + hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Colour specification of the JPEG2000 image has specification method. @@ -541,7 +541,7 @@ JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. - colrEnumCS == null || colrEnumCS != 19 + hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A From f0de0e72602cf4b60bf8c612b18566fcd08b9202 Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Fri, 19 Nov 2021 13:38:03 +0300 Subject: [PATCH 377/557] WCAG validation. Fix rule 7.18.5-1 --- PDF_UA/WCAG-21-Complete.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 2414d98b..7ff50ab2 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1168,7 +1168,7 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - structParentType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 + structParentType == 'Link' || structParentType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2 A link annotation is not nested within a Link tag From b31c1fbbb68608a7b308a8476ce46d5025a6f6bb Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 23 Nov 2021 17:00:23 +0300 Subject: [PATCH 378/557] WCAG validation. Add rule about underlined text --- PDF_UA/WCAG-21-Dev.xml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 1259c024..37a5bbc2 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -8,7 +8,7 @@ - If text has a different style, it shall tagged as Span + If text has a different style, it shall be tagged as Span hasSpecialStyle == false Text has a different style and not tagged as Span @@ -16,6 +16,16 @@ + + + Underlined text + isUnderlined == false + + Underlined text is detected + + + + Text should not contain repeated characters From 1d033fe8216f0af539bd7a587d7a9e9216929235 Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Wed, 1 Dec 2021 12:10:41 +0300 Subject: [PATCH 379/557] WCAG validation. Changed rule 2.4.9-1 --- PDF_UA/WCAG-21-Complete.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 7ff50ab2..84197769 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -72,11 +72,13 @@ - Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. - (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 || - (textValue != null && textValue != '' && hasLinkValue == false) + Links shall contain an alternate description via their Contents or Alt keys or in the text value + (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || + (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || + (Alt != null && Alt != '' && altIsLink == false) + - A link annotation does not include an alternate description in the Contents Key + A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value From 50c72ea8c56bbb79d4ae6045bfac88d17a7339e0 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 2 Dec 2021 12:04:02 +0300 Subject: [PATCH 380/557] WCAG validation. Fix rules 1.2, 4.1.2-9 --- PDF_UA/WCAG-21-Complete.xml | 19 ++----------------- PDF_UA/WCAG-21-Dev.xml | 2 +- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 84197769..ce99a6ae 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -225,8 +225,8 @@ Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && - correctType != 'TFoot') || (standardType == 'L' || standardType == 'LI' || standardType == 'Lbl' || - standardType == 'LBody') || (isTableChild == true && isTableElem == false) + correctType != 'TFoot') || (isListElem == true) || (standardType == 'TOC' || standardType == 'TOCI') || + (isTableChild == true && isTableElem == false) score = %1, correct type = %2, structure id = %3 @@ -380,21 +380,6 @@ - - - The structure type and attributes of list elements shall be semantically appropriate. - (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && - correctType != 'Lbl' && correctType != 'LBody') - - score = %1, correct type = %2, structure id = %3 - - correctSemanticScore - correctType - structureID - - - - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 37a5bbc2..c0e60352 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -19,7 +19,7 @@ Underlined text - isUnderlined == false + parentsStandardTypes.split('&').filter(elem => elem == 'Link').length > 0 || isUnderlined == false Underlined text is detected From 2b9309d8787437ec95afa6a5402eeba0ad3c0331 Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Thu, 2 Dec 2021 14:29:10 +0300 Subject: [PATCH 381/557] WCAG validation. Add in rule 1.3.1 test for repeated spaces --- PDF_UA/WCAG-21-Complete.xml | 14 +++++++++++++- PDF_UA/WCAG-21-Dev.xml | 14 +++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index ce99a6ae..180ba044 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -9,13 +9,25 @@ Text should not contain repeated characters - isLeafElem == false || numberOfSameCharacters < 5 + numberOfSameCharacters < 5 Text contains repeated characters + + + Text should not contain repeated spaces + numberOfRepeatedSpaces < 5 + + positionOfRepeatedSpaces = %1 + + positionOfRepeatedSpaces + + + + Pages shall have the same orientation diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index c0e60352..dcf18ba9 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -29,13 +29,25 @@ Text should not contain repeated characters - isLeafElem == false || numberOfSameCharacters < 5 + numberOfSameCharacters < 5 Text contains repeated characters + + + Text should not contain repeated spaces + numberOfRepeatedSpaces < 5 + + positionOfRepeatedSpaces = %1 + + positionOfRepeatedSpaces + + + + Pages shall have the same orientation From a0203f91dea2cd16d6894ecd189736746c467df9 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 8 Dec 2021 12:35:26 +0300 Subject: [PATCH 382/557] WCAG validation. Move rules from dev profile --- PDF_UA/WCAG-21-Complete.xml | 113 ++++++++++++++++++++++++++++++-- PDF_UA/WCAG-21-Dev.xml | 126 +----------------------------------- PDF_UA/WCAG-21.xml | 121 +++++++++++++++++++++++++++++++--- 3 files changed, 222 insertions(+), 138 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 180ba044..fb559665 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -19,7 +19,7 @@ Text should not contain repeated spaces - numberOfRepeatedSpaces < 5 + numberOfRepeatedSpaces < 2 positionOfRepeatedSpaces = %1 @@ -28,6 +28,16 @@ + + + Underlined text + parentsStandardTypes.split('&').filter(elem => elem == 'Link').length > 0 || isUnderlined == false + + Underlined text is detected + + + + Pages shall have the same orientation @@ -87,8 +97,7 @@ Links shall contain an alternate description via their Contents or Alt keys or in the text value (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || - (Alt != null && Alt != '' && altIsLink == false) - + (Alt != null && Alt != '' && altIsLink == false) A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value @@ -148,7 +157,8 @@ The structure type and attributes of a table shall be semantically appropriate. (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'TR' + correctType == 'TFoot' || correctType == 'TR' || correctType == 'L' || correctType == 'LI' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -392,6 +402,101 @@ + + + The structure type and attributes of list elements shall be semantically appropriate. + (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && + correctType != 'Lbl' && correctType != 'LBody') + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + The structure type and attributes of a list shall be semantically appropriate. + (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || + correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list item shall be semantically appropriate. + (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list label shall be semantically appropriate. + (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list body shall be semantically appropriate. + (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + A table element is incorrectly tagged as a list element or a list has the wrong numbering + (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && + correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && + correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && + standardType != 'Lbl' && standardType != 'LBody') + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index dcf18ba9..4ddec336 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -16,125 +16,6 @@ - - - Underlined text - parentsStandardTypes.split('&').filter(elem => elem == 'Link').length > 0 || isUnderlined == false - - Underlined text is detected - - - - - - - Text should not contain repeated characters - numberOfSameCharacters < 5 - - Text contains repeated characters - - - - - - - Text should not contain repeated spaces - numberOfRepeatedSpaces < 5 - - positionOfRepeatedSpaces = %1 - - positionOfRepeatedSpaces - - - - - - - Pages shall have the same orientation - gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation - - Pages are not have the same orientation - - - - - - - The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. - Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - (textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5) - - contrastRatio = %1 - - contrastRatio - - - - - - - Document should not contain illegible font - fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && - fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && - fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && - fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && - fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && - fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && - fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && - fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && - fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && - fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && - fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && - fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && - fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && - fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && - fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && - fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && - fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && - fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && - fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && - fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && - fontName.indexOf('VladimirScript') == -1 && - (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) - - Document contains illegible font - - - - - - - Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. - (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 || - (textValue != null && textValue != '' && hasLinkValue == false) - - A link annotation does not include an alternate description in the Contents Key - - - - - - - - - Table shouldn't have merged cells - ColSpan == 1 && RowSpan == 1 - - Table has merged cells - - - - - - - Table shouldn't have merged cells - ColSpan == 1 && RowSpan == 1 - - Table has merged cells - - - - The structure type and attributes of a paragraph shall be semantically appropriate. @@ -419,10 +300,5 @@ - - - 'Square' - orientation == 'Square' ? gPageOrientation : orientation - - + diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index cdabc758..943a2e6e 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -9,13 +9,35 @@ Text should not contain repeated characters - isLeafElem == false || numberOfSameCharacters < 5 + numberOfSameCharacters < 5 Text contains repeated characters + + + Text should not contain repeated spaces + numberOfRepeatedSpaces < 2 + + positionOfRepeatedSpaces = %1 + + positionOfRepeatedSpaces + + + + + + + Underlined text + parentsStandardTypes.split('&').filter(elem => elem == 'Link').length > 0 || isUnderlined == false + + Underlined text is detected + + + + Pages shall have the same orientation @@ -72,11 +94,12 @@ - Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. - (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 || - (textValue != null && textValue != '' && hasLinkValue == false) + Links shall contain an alternate description via their Contents or Alt keys or in the text value + (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || + (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || + (Alt != null && Alt != '' && altIsLink == false) - A link annotation does not include an alternate description in the Contents Key + A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value @@ -134,8 +157,8 @@ The structure type and attributes of a table shall be semantically appropriate. (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'TR' || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' + correctType == 'TFoot' || correctType == 'TR' || correctType == 'L' || correctType == 'LI' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -224,8 +247,8 @@ Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && - correctType != 'TFoot') || (standardType == 'L' || standardType == 'LI' || standardType == 'Lbl' || - standardType == 'LBody') || (isTableChild == true && isTableElem == false) + correctType != 'TFoot') || (isListElem == true) || (standardType == 'TOC' || standardType == 'TOCI') || + (isTableChild == true && isTableElem == false) score = %1, correct type = %2, structure id = %3 @@ -394,6 +417,86 @@ + + + The structure type and attributes of a list shall be semantically appropriate. + (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || + correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list item shall be semantically appropriate. + (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list label shall be semantically appropriate. + (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list body shall be semantically appropriate. + (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + A table element is incorrectly tagged as a list element or a list has the wrong numbering + (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && + correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && + correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && + standardType != 'Lbl' && standardType != 'LBody') + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + From 0ec52c88d8eb2caafdbc2b7af6481f2ec92b2865 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 8 Dec 2021 17:11:00 +0300 Subject: [PATCH 383/557] PDF/A validation. Fix rules 6.2.11.3-2 and 6.2.10.3.2-1 PDF/UA and WCAG validation. Fix rule 7.21.3.2-1 --- .../6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml | 2 +- .../6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 2 +- .../7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml | 2 +- PDF_UA/PDFUA-1.xml | 2 +- PDF_UA/WCAG-21-Complete.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml index e003685b..4c1eb876 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml @@ -11,7 +11,7 @@ ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml index a0c13990..67f6e190 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml @@ -13,7 +13,7 @@ ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 1b2e5ccc..db1a3ca6 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -816,7 +816,7 @@ ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index e12cef2d..73167a0d 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -816,7 +816,7 @@ ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index c3ae8fbc..ba12fd29 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -816,7 +816,7 @@ ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 0ee16bcc..2f4e2572 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -816,7 +816,7 @@ ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 16be67db..bff75859 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -816,7 +816,7 @@ ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 6242c44f..24e25e3d 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -816,7 +816,7 @@ ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 17b3fef5..5d5d471d 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -751,7 +751,7 @@ ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 9b04ddf2..dd444f64 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -765,7 +765,7 @@ ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index dc25ccc4..caabbd30 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -751,7 +751,7 @@ ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml index e633324d..4b564a3d 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml @@ -11,7 +11,7 @@ ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 02d84126..19f77e9a 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -883,7 +883,7 @@ ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index fb559665..f120cce2 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1362,7 +1362,7 @@ ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry From 3e721cc70a5e1399589b4df192a13b008da86e1e Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 10 Dec 2021 13:48:04 +0300 Subject: [PATCH 384/557] WCAG validation. Fix list rules --- PDF_UA/WCAG-21-Complete.xml | 53 +++---------------------------------- 1 file changed, 3 insertions(+), 50 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index f120cce2..841e6148 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -19,7 +19,7 @@ Text should not contain repeated spaces - numberOfRepeatedSpaces < 2 + numberOfRepeatedSpaces < 3 positionOfRepeatedSpaces = %1 @@ -406,7 +406,8 @@ The structure type and attributes of list elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && - correctType != 'Lbl' && correctType != 'LBody') + correctType != 'Lbl' && correctType != 'LBody') || (isTableElem == true) || (standardType == 'TOC' || + standardType == 'TOCI') || (isListChild == true && isListElem == false) score = %1, correct type = %2, structure id = %3 @@ -433,54 +434,6 @@ - - - The structure type and attributes of a list item shall be semantically appropriate. - (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list label shall be semantically appropriate. - (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list body shall be semantically appropriate. - (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - A table element is incorrectly tagged as a list element or a list has the wrong numbering From fd9fcb785f4d5b55acdb9bb4992f87d4b4620352 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 13 Dec 2021 11:47:09 +0300 Subject: [PATCH 385/557] WCAG validation. Fix list rules in wcag profile --- PDF_UA/WCAG-21.xml | 53 +++------------------------------------------- 1 file changed, 3 insertions(+), 50 deletions(-) diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 943a2e6e..23f9edf4 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -19,7 +19,7 @@ Text should not contain repeated spaces - numberOfRepeatedSpaces < 2 + numberOfRepeatedSpaces < 3 positionOfRepeatedSpaces = %1 @@ -406,7 +406,8 @@ The structure type and attributes of list elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && - correctType != 'Lbl' && correctType != 'LBody') + correctType != 'Lbl' && correctType != 'LBody') || (isTableElem == true) || (standardType == 'TOC' || + standardType == 'TOCI') || (isListChild == true && isListElem == false) score = %1, correct type = %2, structure id = %3 @@ -433,54 +434,6 @@ - - - The structure type and attributes of a list item shall be semantically appropriate. - (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list label shall be semantically appropriate. - (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list body shall be semantically appropriate. - (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - A table element is incorrectly tagged as a list element or a list has the wrong numbering From a4f3ee211607e9ab1ec6b6ee1f05578f6e01dd4a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 14 Dec 2021 13:45:34 +0300 Subject: [PATCH 386/557] WCAG validation. Fix rule about illegible font --- PDF_UA/WCAG-21-Complete.xml | 2 +- PDF_UA/WCAG-21.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 841e6148..d99453f5 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -64,7 +64,7 @@ Document should not contain illegible font - fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && + fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 23f9edf4..7454cb17 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -64,7 +64,7 @@ Document should not contain illegible font - fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && + fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && From ddca3d2fef96107c374336c5b26fe27e27dfd4c0 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 21 Dec 2021 13:08:57 +0300 Subject: [PATCH 387/557] WCAG validation. Fix rules 1.3.1-1, 1.3.1-2 --- PDF_UA/WCAG-21-Complete.xml | 10 +++--- PDF_UA/WCAG-21-Dev.xml | 72 ++++++++++++------------------------- PDF_UA/WCAG-21.xml | 10 +++--- 3 files changed, 34 insertions(+), 58 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index d99453f5..d27bd627 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -9,7 +9,7 @@ Text should not contain repeated characters - numberOfSameCharacters < 5 + isLeafElem == false || numberOfSameCharacters < 5 Text contains repeated characters @@ -19,7 +19,7 @@ Text should not contain repeated spaces - numberOfRepeatedSpaces < 3 + isLeafElem == false || numberOfRepeatedSpaces < 3 positionOfRepeatedSpaces = %1 @@ -247,7 +247,9 @@ Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && - correctType != 'TFoot') || (isListElem == true) || (standardType == 'TOC' || standardType == 'TOCI') || + correctType != 'TFoot') || (standardType == 'L' || + parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) || (standardType == 'TOC' || + parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) || (isTableChild == true && isTableElem == false) score = %1, correct type = %2, structure id = %3 @@ -407,7 +409,7 @@ The structure type and attributes of list elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') || (isTableElem == true) || (standardType == 'TOC' || - standardType == 'TOCI') || (isListChild == true && isListElem == false) + parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) || (isListChild == true && isListElem == false) score = %1, correct type = %2, structure id = %3 diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 4ddec336..08c30d53 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -45,10 +45,7 @@ The structure type and attributes of a table shall be semantically appropriate. - (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'TR' || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' + (correctType == 'Table' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -87,10 +84,7 @@ The structure type and attributes of a table row shall be semantically appropriate. - (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' + (correctType == 'TR' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -103,11 +97,7 @@ The structure type and attributes of a table header cell shall be semantically appropriate. - (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || - correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'LI' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null + (correctType == 'TH' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -120,10 +110,7 @@ The structure type and attributes of a table cell shall be semantically appropriate. - (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null + (correctType == 'TD' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -138,8 +125,7 @@ The structure type and attributes of table elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && - correctType != 'TFoot') || (standardType == 'L' || standardType == 'LI' || standardType == 'Lbl' || - standardType == 'LBody') || (isTableChild == true && isTableElem == false) + correctType != 'TFoot') score = %1, correct type = %2, structure id = %3 @@ -150,19 +136,7 @@ - - - Non-standard structure type shall not be used - false - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - +v The structure type and attributes of a caption shall be semantically appropriate. @@ -193,8 +167,7 @@ The structure type and attributes of list elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'L' && - correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') || - (standardType == 'LBody' && correctType == 'LI') || (isListChild == true && isListElem == false) + correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') score = %1, correct type = %2, structure id = %3 @@ -208,10 +181,7 @@ The structure type and attributes of a list shall be semantically appropriate. - (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' + (correctType == 'L' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -224,10 +194,7 @@ The structure type and attributes of a list item shall be semantically appropriate. - (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' + (correctType == 'LI' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -240,10 +207,7 @@ The structure type and attributes of a list label shall be semantically appropriate. - (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' + (correctType == 'Lbl' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -256,10 +220,7 @@ The structure type and attributes of a list body shall be semantically appropriate. - (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' + (correctType == 'LBody' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -299,6 +260,17 @@ + + + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry + of the document's Catalog dictionary + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 7454cb17..14d11bab 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -9,7 +9,7 @@ Text should not contain repeated characters - numberOfSameCharacters < 5 + isLeafElem == false || numberOfSameCharacters < 5 Text contains repeated characters @@ -19,7 +19,7 @@ Text should not contain repeated spaces - numberOfRepeatedSpaces < 3 + isLeafElem == false || numberOfRepeatedSpaces < 3 positionOfRepeatedSpaces = %1 @@ -247,7 +247,9 @@ Missing table element (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && - correctType != 'TFoot') || (isListElem == true) || (standardType == 'TOC' || standardType == 'TOCI') || + correctType != 'TFoot') || (standardType == 'L' || + parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) || (standardType == 'TOC' || + parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) || (isTableChild == true && isTableElem == false) score = %1, correct type = %2, structure id = %3 @@ -407,7 +409,7 @@ The structure type and attributes of list elements shall be semantically appropriate. (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') || (isTableElem == true) || (standardType == 'TOC' || - standardType == 'TOCI') || (isListChild == true && isListElem == false) + parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) || (isListChild == true && isListElem == false) score = %1, correct type = %2, structure id = %3 From d21bf115355d7761327c73788166f4243873394f Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Mon, 10 Jan 2022 19:31:46 +0300 Subject: [PATCH 388/557] WCAG validation. Fix repeated characters rules object and tests --- PDF_UA/WCAG-21-Complete.xml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index d27bd627..3aedee1e 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -38,6 +38,26 @@ + + + Text should not contain repeated non space characters + isNonSpace == false || numberOfRepeatedCharacters < 5 + + Text contains repeated non space characters + + + + + + + Text should not contain repeated space characters + isNonSpace == true || numberOfRepeatedCharacters < 3 + + Text contains repeated space characters + + + + Pages shall have the same orientation From 532f7055a16a10de28a4e09b74f838fe28f08859 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 12 Jan 2022 14:47:32 +0300 Subject: [PATCH 389/557] WCAG validation. Fix rules about list and table detection --- PDF_UA/WCAG-21-Complete.xml | 73 ++++++++++++++++++++++++++++++------- PDF_UA/WCAG-21-Dev.xml | 65 ++++++++++++++++++++++++++++++++- 2 files changed, 123 insertions(+), 15 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 3aedee1e..47e5fec0 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -175,7 +175,7 @@ The structure type and attributes of a table shall be semantically appropriate. - (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || + hasLowestDepthError == false || (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'TR' || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TOC' || correctType == 'TOCI' @@ -217,7 +217,7 @@ The structure type and attributes of a table row shall be semantically appropriate. - (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || + hasLowestDepthError == false || (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' @@ -233,7 +233,7 @@ The structure type and attributes of a table header cell shall be semantically appropriate. - (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || + hasLowestDepthError == false || (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null @@ -249,7 +249,7 @@ The structure type and attributes of a table cell shall be semantically appropriate. - (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || + hasLowestDepthError == false || (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null @@ -265,12 +265,11 @@ Missing table element - (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && - correctType != 'TFoot') || (standardType == 'L' || + correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) || (standardType == 'TOC' || - parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) || - (isTableChild == true && isTableElem == false) + parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) score = %1, correct type = %2, structure id = %3 @@ -427,9 +426,9 @@ The structure type and attributes of list elements shall be semantically appropriate. - (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && - correctType != 'Lbl' && correctType != 'LBody') || (isTableElem == true) || (standardType == 'TOC' || - parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) || (isListChild == true && isListElem == false) + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && + correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) || (standardType == 'TOC' || + parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) score = %1, correct type = %2, structure id = %3 @@ -443,7 +442,7 @@ The structure type and attributes of a list shall be semantically appropriate. - (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || + hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' @@ -456,10 +455,58 @@ + + + The structure type and attributes of a list item shall be semantically appropriate. + hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || + correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list label shall be semantically appropriate. + hasLowestDepthError == false || (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || + correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list body shall be semantically appropriate. + hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || + correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + A table element is incorrectly tagged as a list element or a list has the wrong numbering - (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && + hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 08c30d53..7b11dabb 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -1,7 +1,7 @@
- WCAG 2.1 validation profile + WCAG 2.1 development validation profile Extra rules for WCAG 2.1 validation in addition to PDF/UA-1
@@ -136,7 +136,19 @@
-v + + + Non-standard structure type shall not be used + false + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + The structure type and attributes of a caption shall be semantically appropriate. @@ -271,6 +283,55 @@ v
+ + + The structure type and attributes of table headers shall be semantically appropriate. + (correctType == 'THead' && correctSemanticScore >= 0.75) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a table body shall be semantically appropriate. + (correctType == 'TBody' && correctSemanticScore >= 0.75) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a table footer shall be semantically appropriate. + (correctType == 'TFoot' && correctSemanticScore >= 0.75) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + line art + false + + line art + + + + From 3599b876ff5b5814a3b4dbd1e7861981e32a16b5 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 25 Jan 2022 13:08:52 +0300 Subject: [PATCH 390/557] WCAG validation. Add rule about merged cells --- PDF_UA/WCAG-21-Dev.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 7b11dabb..1186207d 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -16,6 +16,16 @@
+ + + Table shouldn't have merged cells + colSpan == 1 && rowSpan == 1 + + Table has merged cells + + + + The structure type and attributes of a paragraph shall be semantically appropriate. From b017babd1809eb1bbc6f85c95471d7d205085725 Mon Sep 17 00:00:00 2001 From: Angelina Pavlovets Date: Fri, 11 Feb 2022 11:30:59 +0300 Subject: [PATCH 391/557] Edit 1.3.4-1, 7.1-5 rules. Align WCAG 2.1 with WCAG 2.1-Complete Fix Edit 7.1-5 rule --- PDF_UA/WCAG-21-Complete.xml | 10 +- PDF_UA/WCAG-21.xml | 99 ++++++++++++++++--- .../verapdf-profile-1-3-4-t01.xml | 6 +- 3 files changed, 94 insertions(+), 21 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 47e5fec0..0949c9a3 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -63,8 +63,10 @@ Pages shall have the same orientation gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation - Pages are not have the same orientation - + Page number %1 has different orientation + + pageNumber + 1 + @@ -583,13 +585,13 @@
- + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type. - standardType != null + false Non-standard structure type is not mapped to a standard type or a circular mapping exists diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 14d11bab..bd5b0660 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -38,13 +38,35 @@ + + + Text should not contain repeated non space characters + isNonSpace == false || numberOfRepeatedCharacters < 5 + + Text contains repeated non space characters + + + + + + + Text should not contain repeated space characters + isNonSpace == true || numberOfRepeatedCharacters < 3 + + Text contains repeated space characters + + + + Pages shall have the same orientation gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation - Pages are not have the same orientation - + Page number %1 has different orientation + + pageNumber + 1 + @@ -155,7 +177,7 @@ The structure type and attributes of a table shall be semantically appropriate. - (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || + hasLowestDepthError == false || (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'TR' || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TOC' || correctType == 'TOCI' @@ -197,7 +219,7 @@ The structure type and attributes of a table row shall be semantically appropriate. - (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || + hasLowestDepthError == false || (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' @@ -213,7 +235,7 @@ The structure type and attributes of a table header cell shall be semantically appropriate. - (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || + hasLowestDepthError == false || (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null @@ -229,7 +251,7 @@ The structure type and attributes of a table cell shall be semantically appropriate. - (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || + hasLowestDepthError == false || (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null @@ -245,12 +267,11 @@ Missing table element - (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && - correctType != 'TFoot') || (standardType == 'L' || + correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) || (standardType == 'TOC' || - parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) || - (isTableChild == true && isTableElem == false) + parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) score = %1, correct type = %2, structure id = %3 @@ -407,9 +428,9 @@ The structure type and attributes of list elements shall be semantically appropriate. - (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && - correctType != 'Lbl' && correctType != 'LBody') || (isTableElem == true) || (standardType == 'TOC' || - parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) || (isListChild == true && isListElem == false) + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && + correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) || (standardType == 'TOC' || + parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) score = %1, correct type = %2, structure id = %3 @@ -423,7 +444,7 @@ The structure type and attributes of a list shall be semantically appropriate. - (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || + hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' @@ -436,10 +457,58 @@ + + + The structure type and attributes of a list item shall be semantically appropriate. + hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || + correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list label shall be semantically appropriate. + hasLowestDepthError == false || (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || + correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list body shall be semantically appropriate. + hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || + correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || + correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + A table element is incorrectly tagged as a list element or a list has the wrong numbering - (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && + hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') diff --git a/PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml b/PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml index c4ae9300..29112332 100644 --- a/PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml +++ b/PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml @@ -11,8 +11,10 @@ Pages shall have the same orientation gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation - Pages are not have the same orientation - + Page number %1 has different orientation + + pageNumber + 1 + From 32e19d1b3459a1be402c047fd40b356a8aafa68a Mon Sep 17 00:00:00 2001 From: Angelina Pavlovets Date: Mon, 14 Feb 2022 14:08:13 +0300 Subject: [PATCH 392/557] Edit page orientation test Add 'Square' check Remove 'number' from error message --- PDF_UA/WCAG-21-Complete.xml | 10 +++++----- PDF_UA/WCAG-21.xml | 10 +++++----- .../1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml | 10 +++++----- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 0949c9a3..a698e624 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -61,9 +61,9 @@ Pages shall have the same orientation - gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation + orientation == 'Square' || gMostCommonPageOrientation == orientation - Page number %1 has different orientation + Page %1 has different orientation pageNumber + 1 @@ -1615,9 +1615,9 @@ null structureTag - - 'Square' - orientation == 'Square' ? gPageOrientation : orientation + + null + mostCommonOrientation diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index bd5b0660..1532f80b 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -61,9 +61,9 @@ Pages shall have the same orientation - gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation + orientation == 'Square' || gMostCommonPageOrientation == orientation - Page number %1 has different orientation + Page %1 has different orientation pageNumber + 1 @@ -523,9 +523,9 @@ - - 'Square' - orientation == 'Square' ? gPageOrientation : orientation + + null + mostCommonOrientation diff --git a/PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml b/PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml index 29112332..39a4b3c1 100644 --- a/PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml +++ b/PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml @@ -9,9 +9,9 @@ Pages shall have the same orientation - gPageOrientation == 'Square' || orientation == 'Square' || gPageOrientation == orientation + orientation == 'Square' || gMostCommonPageOrientation == orientation - Page number %1 has different orientation + Page %1 has different orientation pageNumber + 1 @@ -20,9 +20,9 @@ - - 'Square' - orientation == 'Square' ? gPageOrientation : orientation + + null + mostCommonOrientation From 898f9f7d925fff532875b9188474debcc35d5004 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 24 Feb 2022 12:19:24 +0300 Subject: [PATCH 393/557] WCAG validation. Fix rule about repeated characters Add rules about different styles, merged cells and struct tree root --- PDF_UA/WCAG-21-Complete.xml | 59 +++++++++++++++++++++---------------- PDF_UA/WCAG-21-Dev.xml | 44 --------------------------- PDF_UA/WCAG-21.xml | 59 +++++++++++++++++++++---------------- 3 files changed, 68 insertions(+), 94 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index a698e624..e4e7ec94 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -6,25 +6,23 @@
- + - Text should not contain repeated characters - isLeafElem == false || numberOfSameCharacters < 5 + Text should not contain repeated non space characters + isNonSpace == false || numberOfRepeatedCharacters < 5 - Text contains repeated characters + Text contains repeated non space characters - + - Text should not contain repeated spaces - isLeafElem == false || numberOfRepeatedSpaces < 3 + Text should not contain repeated space characters + isNonSpace == true || numberOfRepeatedCharacters < 3 - positionOfRepeatedSpaces = %1 - - positionOfRepeatedSpaces - + Text contains repeated space characters + @@ -38,22 +36,12 @@ - + - Text should not contain repeated non space characters - isNonSpace == false || numberOfRepeatedCharacters < 5 + If text has a different style, it shall be tagged as Span + hasSpecialStyle == false - Text contains repeated non space characters - - - - - - - Text should not contain repeated space characters - isNonSpace == true || numberOfRepeatedCharacters < 3 - - Text contains repeated space characters + Text has a different style and not tagged as Span @@ -148,6 +136,27 @@ + + + Table shouldn't have merged cells + colSpan == 1 && rowSpan == 1 + + Table has merged cells + + + + + + + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry + of the document's Catalog dictionary + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + Incorrect use of a paragraph diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 1186207d..710e4837 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -6,26 +6,6 @@
- - - If text has a different style, it shall be tagged as Span - hasSpecialStyle == false - - Text has a different style and not tagged as Span - - - - - - - Table shouldn't have merged cells - colSpan == 1 && rowSpan == 1 - - Table has merged cells - - - - The structure type and attributes of a paragraph shall be semantically appropriate. @@ -146,19 +126,6 @@ - - - Non-standard structure type shall not be used - false - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - The structure type and attributes of a caption shall be semantically appropriate. @@ -282,17 +249,6 @@ - - - The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry - of the document's Catalog dictionary - StructTreeRoot_size == 1 - - StructTreeRoot entry is not present in the document catalog - - - - The structure type and attributes of table headers shall be semantically appropriate. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 1532f80b..366ab62a 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -6,25 +6,23 @@
- + - Text should not contain repeated characters - isLeafElem == false || numberOfSameCharacters < 5 + Text should not contain repeated non space characters + isNonSpace == false || numberOfRepeatedCharacters < 5 - Text contains repeated characters + Text contains repeated non space characters - + - Text should not contain repeated spaces - isLeafElem == false || numberOfRepeatedSpaces < 3 + Text should not contain repeated space characters + isNonSpace == true || numberOfRepeatedCharacters < 3 - positionOfRepeatedSpaces = %1 - - positionOfRepeatedSpaces - + Text contains repeated space characters + @@ -38,22 +36,12 @@ - + - Text should not contain repeated non space characters - isNonSpace == false || numberOfRepeatedCharacters < 5 + If text has a different style, it shall be tagged as Span + hasSpecialStyle == false - Text contains repeated non space characters - - - - - - - Text should not contain repeated space characters - isNonSpace == true || numberOfRepeatedCharacters < 3 - - Text contains repeated space characters + Text has a different style and not tagged as Span @@ -148,6 +136,27 @@ + + + Table shouldn't have merged cells + colSpan == 1 && rowSpan == 1 + + Table has merged cells + + + + + + + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry + of the document's Catalog dictionary + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + Incorrect use of a paragraph From a69edb8900d565cd93b40bbd8bc54633df7ce8ab Mon Sep 17 00:00:00 2001 From: Angelina Pavlovets Date: Tue, 15 Mar 2022 10:30:54 +0300 Subject: [PATCH 394/557] Edit 7.1-5 rule for PDF/UA Move the rules for structural elements from SE to SA level for wcag Edit 7.4.4-1 rule for wcag --- .../1/7.1 General/verapdf-profile-7-1-t05.xml | 4 +- PDF_UA/PDFUA-1.xml | 4 +- PDF_UA/WCAG-21-Complete.xml | 54 +++++++++---------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml index d8ea465e..1bbd2ea8 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml @@ -9,13 +9,13 @@
- + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type. - standardType != null + false Non-standard structure type is not mapped to a standard type or a circular mapping exists diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 19f77e9a..fa7234fc 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -70,13 +70,13 @@ - + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type. - standardType != null + false Non-standard structure type is not mapped to a standard type or a circular mapping exists diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index e4e7ec94..b5ebd98d 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -594,7 +594,7 @@ - + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. @@ -675,7 +675,7 @@ - + Table element may contain a Caption element as its first or last kid and Table element may contain only TR, THead, TBody, TFoot and Caption elements @@ -691,7 +691,7 @@ - + TR element should contained in Table, THead, TBody or TFoot element /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) @@ -703,7 +703,7 @@ - + THead element should contained in Table element parentStandardType == 'Table' @@ -715,7 +715,7 @@ - + TBody element should contained in Table element parentStandardType == 'Table' @@ -727,7 +727,7 @@ - + TFoot element should contained in Table element parentStandardType == 'Table' @@ -739,7 +739,7 @@ - + TH element should contained in TR element parentStandardType == 'TR' @@ -751,7 +751,7 @@ - + TD element should contained in TR element parentStandardType == 'TR' @@ -763,7 +763,7 @@ - + TR element may contain only TH and TD elements /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' @@ -775,7 +775,7 @@ - + Table element should contain zero or one THead kid kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 @@ -787,7 +787,7 @@ - + Table element should contain zero or one TFoot kid kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 @@ -799,7 +799,7 @@ - + If Table element contains TFoot kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || @@ -812,7 +812,7 @@ - + If Table element contains THead kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || @@ -838,7 +838,7 @@ - + LI element should contained in L element parentStandardType == 'L' @@ -850,7 +850,7 @@ - + LBody element should contained in LI element parentStandardType == 'LI' @@ -862,7 +862,7 @@ - + L element may contain a Caption element as its first kid and L element may contain only L, LI and Caption elements /^(Caption&)?(L|LI)(&(L|LI))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' @@ -875,7 +875,7 @@ - + LI element may contain only Lbl and LBody elements /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' @@ -939,7 +939,7 @@ - + TOCI element should contained in TOC element parentStandardType == 'TOC' @@ -951,7 +951,7 @@ - + TOC element may contain a Caption element as its first kid and TOC element may contain only TOC, TOCI and Caption elements @@ -1031,7 +1031,7 @@ - + THead element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' @@ -1043,7 +1043,7 @@ - + TBody element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 @@ -1055,7 +1055,7 @@ - + TFoot element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' @@ -1100,7 +1100,7 @@ - + Each node in the tag tree shall contain at most one child H tag. kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -1110,7 +1110,7 @@ - + All documents shall be either strongly or weakly structured, but not both. usesHn == false @@ -1120,7 +1120,7 @@ - + All documents shall be either strongly or weakly structured, but not both. usesH == false @@ -1608,11 +1608,11 @@ - + false true - + false true From 4ede265db359c80a6e54684449530de1af26db57 Mon Sep 17 00:00:00 2001 From: Angelina Pavlovets Date: Thu, 17 Mar 2022 14:01:01 +0300 Subject: [PATCH 395/557] Add rule for SAFigure --- PDF_UA/WCAG-21-Complete.xml | 12 ++++++++++++ PDF_UA/WCAG-21.xml | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index b5ebd98d..7c63f284 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1080,6 +1080,18 @@ + + + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page + page != lastPage || hasBBox == true + + "Figure" structure element on a single page with no bounding box + + + + + + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 366ab62a..150b2d50 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -530,6 +530,18 @@ + + + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page + page != lastPage || hasBBox == true + + "Figure" structure element on a single page with no bounding box + + + + + + From 39aa0b751e6c849e2b564c1cc0e78bf8c193c6c9 Mon Sep 17 00:00:00 2001 From: Angelina Pavlovets Date: Mon, 21 Mar 2022 12:28:47 +0300 Subject: [PATCH 396/557] Edit 6.2.5-6 rule for PDF/A-2,3 --- .../verapdf-profile-6-2-5-t06.xml | 6 +++--- PDF_A/PDFA-2A.xml | 6 +++--- PDF_A/PDFA-2B.xml | 6 +++--- PDF_A/PDFA-2U.xml | 6 +++--- PDF_A/PDFA-3A.xml | 6 +++--- PDF_A/PDFA-3B.xml | 6 +++--- PDF_A/PDFA-3U.xml | 6 +++--- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml index b6dfe129..ae09edfb 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -9,9 +9,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || - colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || - colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || + colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? + TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index db1a3ca6..c47a7925 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || - colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || - colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || + colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? + TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 73167a0d..76f49b94 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || - colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || - colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || + colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? + TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index ba12fd29..bbe960cb 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || - colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || - colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || + colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? + TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 2f4e2572..2d08e738 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || - colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || - colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || + colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? + TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index bff75859..85de6299 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || - colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || - colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || + colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? + TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 24e25e3d..bfedfe97 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -512,9 +512,9 @@ The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == 'Cyan' || colorantName == 'Magenta' || - colorantName == 'Yellow' || colorantName == 'Black' || colorantName == 'Red' || colorantName == 'Green' || - colorantName == 'Blue' || colorantName == null) ? TransferFunction == null : TransferFunction != null) + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || + colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? + TransferFunction == null : TransferFunction != null) Invalid use of TransferFunction key in the Halftone dictionary From 18e273a930f3e1646dea68ccaeca7cab90a04ee9 Mon Sep 17 00:00:00 2001 From: Angelina Pavlovets Date: Wed, 23 Mar 2022 14:03:21 +0300 Subject: [PATCH 397/557] Add rule for small text size --- PDF_UA/WCAG-21-Complete.xml | 15 ++++++++++++++- PDF_UA/WCAG-21.xml | 15 ++++++++++++++- .../verapdf-profile-1-4-3-t01.xml | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 7c63f284..893c68fa 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -62,7 +62,7 @@ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - (textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5) + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) contrastRatio = %1 @@ -71,6 +71,19 @@ + + + Font size is too small: text may not be resized without assistive technology + up to 200 percent without loss of content or functionality. + textSize >= 4.5 + + textSize = %1 + + textSize + + + + Document should not contain illegible font diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 150b2d50..c219565d 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -62,7 +62,7 @@ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - (textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5) + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) contrastRatio = %1 @@ -71,6 +71,19 @@ + + + Font size is too small: text may not be resized without assistive technology + up to 200 percent without loss of content or functionality. + textSize >= 4.5 + + textSize = %1 + + textSize + + + + Document should not contain illegible font diff --git a/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml b/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml index bdbe9265..95b5da80 100644 --- a/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml +++ b/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml @@ -11,7 +11,7 @@ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - (textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5) + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) contrastRatio = %1 From 9ccb8c059e3ff423cb67cd8871dce829a38e2f2e Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Sat, 26 Mar 2022 22:15:39 +0300 Subject: [PATCH 398/557] WCAG validation. Remove rule about list labels --- PDF_UA/WCAG-21-Complete.xml | 43 +++++++++++-------------------------- PDF_UA/WCAG-21.xml | 40 +++++++++++----------------------- 2 files changed, 25 insertions(+), 58 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 893c68fa..f9cca561 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -115,6 +115,18 @@ + + + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page + page != lastPage || hasBBox == true + + "Figure" structure element on a single page with no bounding box + + + + + + Links shall contain an alternate description via their Contents or Alt keys or in the text value @@ -495,22 +507,6 @@ - - - The structure type and attributes of a list label shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || - correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - The structure type and attributes of a list body shall be semantically appropriate. @@ -932,8 +928,7 @@ - Natural language in the Contents entry for annotations shall be - determined + Natural language in the Contents entry for annotations shall be determined Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 Natural language in the Contents entry for annotations cannot be @@ -1093,18 +1088,6 @@ - - - Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page - page != lastPage || hasBBox == true - - "Figure" structure element on a single page with no bounding box - - - - - - For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index c219565d..900d31f4 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -115,6 +115,18 @@ + + + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page + page != lastPage || hasBBox == true + + "Figure" structure element on a single page with no bounding box + + + + + + Links shall contain an alternate description via their Contents or Alt keys or in the text value @@ -495,22 +507,6 @@ - - - The structure type and attributes of a list label shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'Lbl' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || - correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - The structure type and attributes of a list body shall be semantically appropriate. @@ -543,18 +539,6 @@ - - - Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page - page != lastPage || hasBBox == true - - "Figure" structure element on a single page with no bounding box - - - - - - From 204cb0553c1fba4255417bd9170391a74eba85d7 Mon Sep 17 00:00:00 2001 From: Angelina Pavlovets Date: Wed, 13 Apr 2022 17:35:47 +0300 Subject: [PATCH 399/557] Edit description of rule about glyphs --- .../verapdf-profile-6-2-11-4-t02.xml | 18 +++++++++++++----- .../verapdf-profile-6-2-10-4-1-t02.xml | 18 +++++++++++++----- PDF_A/PDFA-2A.xml | 11 ++++++++--- PDF_A/PDFA-2B.xml | 11 ++++++++--- PDF_A/PDFA-2U.xml | 11 ++++++++--- PDF_A/PDFA-3A.xml | 11 ++++++++--- PDF_A/PDFA-3B.xml | 11 ++++++++--- PDF_A/PDFA-3U.xml | 11 ++++++++--- PDF_A/PDFA-4.xml | 11 ++++++++--- PDF_A/PDFA-4E.xml | 11 ++++++++--- PDF_A/PDFA-4F.xml | 11 ++++++++--- .../verapdf-profile-7-21-4-1-t02.xml | 18 +++++++++++++----- PDF_UA/PDFUA-1.xml | 11 ++++++++--- PDF_UA/WCAG-21-Complete.xml | 11 ++++++++--- 14 files changed, 127 insertions(+), 48 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml index c3707a34..8a6b5d96 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml @@ -2,21 +2,29 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - Glyphs - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor.
- Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml index f0b5e7dd..d72da3bf 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml @@ -2,21 +2,29 @@
ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.4 Embedding - Glyphs - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of + a non-standard mapping chosen by the conforming processor.
- Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index c47a7925..875d61dc 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -905,14 +905,19 @@
- Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 76f49b94..d6746f41 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -905,14 +905,19 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index bbe960cb..fccbd9dd 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -905,14 +905,19 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 2d08e738..76beff8e 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -905,14 +905,19 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 85de6299..4a14bb52 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -905,14 +905,19 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index bfedfe97..1e1793f4 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -905,14 +905,19 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 5d5d471d..66e6a2d6 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -841,14 +841,19 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index dd444f64..3d529e05 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -855,14 +855,19 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index caabbd30..a7e38e55 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -841,14 +841,19 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml index 867fdf1c..2d5c3f4b 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml @@ -2,21 +2,29 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - Glyphs - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor.
- Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index fa7234fc..a90cde81 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -972,14 +972,19 @@
- Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index f9cca561..27392d33 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1492,14 +1492,19 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely - in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. + A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt + from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes + shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of + a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program - + + + From 1c9ca0c0f7d57bdce475ab74f5afb472584650e7 Mon Sep 17 00:00:00 2001 From: Angelina Pavlovets Date: Tue, 19 Apr 2022 00:45:09 +0300 Subject: [PATCH 400/557] Edit description of rule about CIDSystemInfo for Type 0 fonts --- .../verapdf-profile-6-2-11-3-t01.xml | 6 +++--- .../6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml | 4 ++-- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- PDF_A/PDFA-4.xml | 4 ++-- PDF_A/PDFA-4E.xml | 4 ++-- PDF_A/PDFA-4F.xml | 4 ++-- .../7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml | 6 +++--- PDF_UA/PDFUA-1.xml | 4 ++-- PDF_UA/WCAG-21-Complete.xml | 4 ++-- 14 files changed, 30 insertions(+), 30 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml index 2d106e64..5fe7919c 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml @@ -7,7 +7,7 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap.
@@ -18,10 +18,10 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap.
+ the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml index e4696802..bb4171a3 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml @@ -20,10 +20,10 @@ 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 greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. + be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 875d61dc..e21c9efb 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -804,10 +804,10 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index d6746f41..c7588548 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -804,10 +804,10 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index fccbd9dd..ae1a5b90 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -804,10 +804,10 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 76beff8e..83cc8b86 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -804,10 +804,10 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 4a14bb52..884d1aa1 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -804,10 +804,10 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 1e1793f4..f731f7a5 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -804,10 +804,10 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 66e6a2d6..1c0ad871 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -738,10 +738,10 @@ 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 greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. + be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 3d529e05..85f0beb9 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -752,10 +752,10 @@ 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 greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. + be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index a7e38e55..4196e369 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -738,10 +738,10 @@ 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 greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. + be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml index e95d723c..8d010442 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml @@ -7,7 +7,7 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap.
@@ -18,10 +18,10 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap.
+ the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index a90cde81..29338d0e 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -871,10 +871,10 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 27392d33..af744a12 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1391,10 +1391,10 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings in both CIDSystemInfo dictionaries shall be identical, and the value of the Supplement key in - the CIDSystemInfo dictionary of the CIDFont shall be greater than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap. cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) - CiDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible From 1cd7edeca414b0b4ce2cc5065edd2aa2190341d8 Mon Sep 17 00:00:00 2001 From: irinamavrina <79362428+irinamavrina@users.noreply.github.com> Date: Thu, 28 Apr 2022 11:52:55 +0300 Subject: [PATCH 401/557] Create trigger-increment-workflow.yml --- .../workflows/trigger-increment-workflow.yml | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/trigger-increment-workflow.yml diff --git a/.github/workflows/trigger-increment-workflow.yml b/.github/workflows/trigger-increment-workflow.yml new file mode 100644 index 00000000..a3c7015e --- /dev/null +++ b/.github/workflows/trigger-increment-workflow.yml @@ -0,0 +1,31 @@ +name: Trigger increment action in webapp-server + +on: + push: + branches: + [ integration ] + paths: + - 'PDF_UA/**' + +jobs: + trigger_build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Set up JDK 1.11 + uses: actions/setup-java@v1 + with: + java-version: 1.11 + - name: Create workflow dispatch + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.WORKFLOW_TOKEN }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'veraPDF', + repo: 'verapdf-webapp-server', + workflow_id: 'version-auto-increment.yml', + ref: 'master' + }) From c30e995dca5a3f744283a63eaeddc0a90c4a4eae Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 26 Apr 2022 13:58:36 +0300 Subject: [PATCH 402/557] PDF/A validation. Fix typos in error messages --- .../verapdf-profile-6-1-4-t02.xml | 2 +- .../verapdf-profile-6-1-13-t11.xml | 2 +- .../verapdf-profile-6-1-4-t02.xml | 2 +- .../verapdf-profile-6-4-3-t01.xml | 2 +- .../6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml | 2 +- .../verapdf-profile-6-1-4-t01.xml | 2 +- .../6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 8 ++++---- PDF_A/PDFA-2B.xml | 8 ++++---- PDF_A/PDFA-2U.xml | 8 ++++---- PDF_A/PDFA-3A.xml | 8 ++++---- PDF_A/PDFA-3B.xml | 8 ++++---- PDF_A/PDFA-3U.xml | 8 ++++---- PDF_A/PDFA-4.xml | 4 ++-- PDF_A/PDFA-4E.xml | 4 ++-- PDF_A/PDFA-4F.xml | 4 ++-- 18 files changed, 39 insertions(+), 39 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml index 9b6af6c6..6940cb68 100644 --- a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml @@ -11,7 +11,7 @@ The xref keyword and the cross reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml index 49dce111..f7132a94 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml @@ -13,7 +13,7 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the bage boundaries is out of range (3-14400) in one of the directions + One of the page boundaries is out of range (3-14400) in one of the directions diff --git a/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml index 80a34d45..84798352 100644 --- a/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml @@ -11,7 +11,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml index 3b656ba9..aa463d59 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml @@ -13,7 +13,7 @@ dictionary but excluding the PDF Signature itself. doesByteRangeCoverEntireDocument == true - ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml index c325517c..e55babaa 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml @@ -13,7 +13,7 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - A metadata stream is serialized icorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed. diff --git a/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml b/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml index 623013cd..f26d1a4f 100644 --- a/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml @@ -11,7 +11,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml index 4996446e..844398e5 100644 --- a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml @@ -13,7 +13,7 @@ well-formed as defined by XMP (ISO 16684-1). isSerializationValid - A metadata stream is serialized icorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed. diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 3c2ae54f..e7f52456 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -89,7 +89,7 @@ The xref keyword and the cross reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 0d6f7ff9..a938928a 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -89,7 +89,7 @@ The xref keyword and the cross reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index e21c9efb..0f672452 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -67,7 +67,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification @@ -307,7 +307,7 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the bage boundaries is out of range (3-14400) in one of the directions + One of the page boundaries is out of range (3-14400) in one of the directions @@ -1170,7 +1170,7 @@ dictionary but excluding the PDF Signature itself. doesByteRangeCoverEntireDocument == true - ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1277,7 +1277,7 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - A metadata stream is serialized icorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed. diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index c7588548..fa98056a 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -67,7 +67,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification @@ -307,7 +307,7 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the bage boundaries is out of range (3-14400) in one of the directions + One of the page boundaries is out of range (3-14400) in one of the directions @@ -1132,7 +1132,7 @@ dictionary but excluding the PDF Signature itself. doesByteRangeCoverEntireDocument == true - ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1239,7 +1239,7 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - A metadata stream is serialized icorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed. diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index ae1a5b90..96677327 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -67,7 +67,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification @@ -307,7 +307,7 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the bage boundaries is out of range (3-14400) in one of the directions + One of the page boundaries is out of range (3-14400) in one of the directions @@ -1155,7 +1155,7 @@ dictionary but excluding the PDF Signature itself. doesByteRangeCoverEntireDocument == true - ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1262,7 +1262,7 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - A metadata stream is serialized icorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed. diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 83cc8b86..a0ed5935 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -67,7 +67,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification @@ -307,7 +307,7 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the bage boundaries is out of range (3-14400) in one of the directions + One of the page boundaries is out of range (3-14400) in one of the directions @@ -1170,7 +1170,7 @@ dictionary but excluding the PDF Signature itself. doesByteRangeCoverEntireDocument == true - ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1277,7 +1277,7 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - A metadata stream is serialized icorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 884d1aa1..cda399bf 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -67,7 +67,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification @@ -307,7 +307,7 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the bage boundaries is out of range (3-14400) in one of the directions + One of the page boundaries is out of range (3-14400) in one of the directions @@ -1132,7 +1132,7 @@ dictionary but excluding the PDF Signature itself. doesByteRangeCoverEntireDocument == true - ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1239,7 +1239,7 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - A metadata stream is serialized icorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index f731f7a5..dd76d39a 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -67,7 +67,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification @@ -307,7 +307,7 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the bage boundaries is out of range (3-14400) in one of the directions + One of the page boundaries is out of range (3-14400) in one of the directions @@ -1155,7 +1155,7 @@ dictionary but excluding the PDF Signature itself. doesByteRangeCoverEntireDocument == true - ByteRanbe array of the digital signature does not cover the entire file (excluding the PDF Signature itself) + ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1262,7 +1262,7 @@ as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). isSerializationValid - A metadata stream is serialized icorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed. diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 1c0ad871..17f03a31 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -87,7 +87,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification @@ -1139,7 +1139,7 @@ well-formed as defined by XMP (ISO 16684-1). isSerializationValid - A metadata stream is serialized icorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed. diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 85f0beb9..88ade63b 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -87,7 +87,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification @@ -1156,7 +1156,7 @@ well-formed as defined by XMP (ISO 16684-1). isSerializationValid - A metadata stream is serialized icorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed. diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 4196e369..2000d5cf 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -87,7 +87,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword iin the cross reference table do not comply PDF/A specification + Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification @@ -1140,7 +1140,7 @@ well-formed as defined by XMP (ISO 16684-1). isSerializationValid - A metadata stream is serialized icorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed. From 70ddbd42c82403d7c13d2180fe644ec0630830c1 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 3 May 2022 21:22:00 +0300 Subject: [PATCH 403/557] Fix typos in profiles --- .../verapdf-profile-6-8-3-t02.xml | 4 ++-- .../verapdf-profile-6-7-3-t02.xml | 4 ++-- PDF_A/PDFA-1A.xml | 4 ++-- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-3A.xml | 22 +++++++++---------- PDF_A/PDFA-3B.xml | 18 +++++++-------- PDF_A/PDFA-3U.xml | 18 +++++++-------- .../1/7.1 General/verapdf-profile-7-1-t10.xml | 2 +- .../verapdf-profile-7-16-t01.xml | 2 +- PDF_UA/ISO-32000-1-Tagged.xml | 4 ++-- PDF_UA/ISO-32000-2-Tagged.xml | 4 ++-- PDF_UA/PDFUA-1.xml | 4 ++-- PDF_UA/WCAG-21-Complete.xml | 4 ++-- 13 files changed, 47 insertions(+), 47 deletions(-) diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml index d9251c45..8dfa30d5 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml @@ -7,11 +7,11 @@
- + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. - standardType != null + false Non-standard structure type is not mapped to a standard type diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml index 10108b51..f3ad140b 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml @@ -7,11 +7,11 @@
- + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. - standardType != null + false Non-standard structure type is not mapped to a standard type diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index e7f52456..b7225c7a 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1221,11 +1221,11 @@ - + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. - standardType != null + false Non-standard structure type is not mapped to a standard type diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 0f672452..36ce7f3d 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1468,11 +1468,11 @@ - + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. - standardType != null + false Non-standard structure type is not mapped to a standard type diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index a0ed5935..15abfc72 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -12,7 +12,7 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h)
headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-3 specification @@ -448,7 +448,7 @@ - All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. @@ -491,7 +491,7 @@ - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type other than 1 or 5 @@ -501,7 +501,7 @@ - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key. HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -827,7 +827,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -1041,7 +1041,7 @@ - A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing + A PDF/A-3 compliant document 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. name != ".notdef" @@ -1145,7 +1145,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, if present, shall not contain the XFA key. containsXFA == false @@ -1186,7 +1186,7 @@ a single "SignerInfo" structure) in the PDF Signature. signingCertificatePresent == true && SignerInfoCount == 1 - The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-3 requirements @@ -1468,11 +1468,11 @@ - + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. - standardType != null + false Non-standard structure type is not mapped to a standard type @@ -1554,7 +1554,7 @@ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-2 file. + dictionaries within the PDF/A-3 file. hasDuplicateName == false Optional content configuration dictionary has duplicated name diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index cda399bf..8ebf158c 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -12,7 +12,7 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-3 specification @@ -448,7 +448,7 @@ - All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. @@ -491,7 +491,7 @@ - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type other than 1 or 5 @@ -501,7 +501,7 @@ - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key. HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -827,7 +827,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -1003,7 +1003,7 @@ - A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing + A PDF/A-3 compliant document 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. name != ".notdef" @@ -1107,7 +1107,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, if present, shall not contain the XFA key. containsXFA == false @@ -1148,7 +1148,7 @@ a single "SignerInfo" structure) in the PDF Signature. signingCertificatePresent == true && SignerInfoCount == 1 - The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-3 requirements @@ -1462,7 +1462,7 @@ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-2 file. + dictionaries within the PDF/A-3 file. hasDuplicateName == false Optional content configuration dictionary has duplicated name diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index dd76d39a..65dc9cd3 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -12,7 +12,7 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification + File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-3 specification @@ -448,7 +448,7 @@ - All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the + All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. @@ -491,7 +491,7 @@ - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type other than 1 or 5 @@ -501,7 +501,7 @@ - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key. HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -827,7 +827,7 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described + All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. 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" || @@ -1026,7 +1026,7 @@ - A PDF/A-2 compliant document shall not contain a reference to the .notdef glyph from any of the text showing + A PDF/A-3 compliant document 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. name != ".notdef" @@ -1130,7 +1130,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, if present, shall not contain the XFA key. containsXFA == false @@ -1171,7 +1171,7 @@ a single "SignerInfo" structure) in the PDF Signature. signingCertificatePresent == true && SignerInfoCount == 1 - The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-3 requirements @@ -1485,7 +1485,7 @@ Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-2 file. + dictionaries within the PDF/A-3 file. hasDuplicateName == false Optional content configuration dictionary has duplicated name diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml index e685a0e7..51e4e2d1 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml @@ -11,7 +11,7 @@ The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. DisplayDocTitle == true - DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true + DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to false diff --git a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml index 2194ab8f..8414b764 100644 --- a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml +++ b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml @@ -14,7 +14,7 @@ P != null && (P & 512) == 512 The file is encrypted but does not contain a P entry in its encryption dictionary or - the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false + the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false diff --git a/PDF_UA/ISO-32000-1-Tagged.xml b/PDF_UA/ISO-32000-1-Tagged.xml index e8846bf1..66409e42 100644 --- a/PDF_UA/ISO-32000-1-Tagged.xml +++ b/PDF_UA/ISO-32000-1-Tagged.xml @@ -6,10 +6,10 @@
- + Every structure element shall be mapped to standard type - standardType != null + false Structure element does not map to standard structure type diff --git a/PDF_UA/ISO-32000-2-Tagged.xml b/PDF_UA/ISO-32000-2-Tagged.xml index 8409aef7..2b71c2e4 100644 --- a/PDF_UA/ISO-32000-2-Tagged.xml +++ b/PDF_UA/ISO-32000-2-Tagged.xml @@ -6,10 +6,10 @@
- + Every structure element shall be mapped to standard type - standardType != null + false Structure element does not map to standard structure type diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 29338d0e..ba330f33 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -136,7 +136,7 @@ The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. DisplayDocTitle == true - DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true + DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to false @@ -697,7 +697,7 @@ P != null && (P & 512) == 512 The file is encrypted but does not contain a P entry in its encryption dictionary or - the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false + the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index af744a12..7b2b27c6 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -669,7 +669,7 @@ The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. DisplayDocTitle == true - DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to true + DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to false @@ -1229,7 +1229,7 @@ P != null && (P & 512) == 512 The file is encrypted but does not contain a P entry in its encryption dictionary or - the file is encrypted and does contain a P entry but the 10th bit position of the P entry is false + the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false From 95927d561e4f4b0fd44831b925dd224a9f14496e Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Thu, 5 May 2022 12:04:02 +0300 Subject: [PATCH 404/557] Fixed workflow to run only in original repo --- .github/workflows/trigger-increment-workflow.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/trigger-increment-workflow.yml b/.github/workflows/trigger-increment-workflow.yml index a3c7015e..08b518e4 100644 --- a/.github/workflows/trigger-increment-workflow.yml +++ b/.github/workflows/trigger-increment-workflow.yml @@ -9,6 +9,7 @@ on: jobs: trigger_build: + if: github.repository == 'veraPDF/veraPDF-validation-profiles' runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 From 408dcc96492e277446538cedffec0f55948b0ea6 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Sun, 8 May 2022 17:05:43 +0300 Subject: [PATCH 405/557] Fix error messages --- .../verapdf-profile-6-8-4-t01.xml | 6 +- .../verapdf-profile-6-1-10-t01.xml | 6 +- .../verapdf-profile-6-1-12-t01.xml | 6 +- .../verapdf-profile-6-1-12-t02.xml | 6 +- .../verapdf-profile-6-1-12-t03.xml | 6 +- .../verapdf-profile-6-1-12-t04.xml | 2 +- .../verapdf-profile-6-1-12-t05.xml | 6 +- .../verapdf-profile-6-1-12-t06.xml | 6 +- .../verapdf-profile-6-1-12-t07.xml | 6 +- .../verapdf-profile-6-1-12-t08.xml | 6 +- .../verapdf-profile-6-1-12-t09.xml | 6 +- .../verapdf-profile-6-1-12-t10.xml | 6 +- .../verapdf-profile-6-1-3-t04.xml | 7 +- .../verapdf-profile-6-1-6-t01.xml | 6 +- .../verapdf-profile-6-2-8-t02.xml | 6 +- .../verapdf-profile-6-2-9-t01.xml | 6 +- .../verapdf-profile-6-3-2-t01.xml | 6 +- .../verapdf-profile-6-3-2-t02.xml | 6 +- .../verapdf-profile-6-3-2-t07.xml | 6 +- .../verapdf-profile-6-3-3-t04.xml | 7 +- .../verapdf-profile-6-3-7-t01.xml | 6 +- .../verapdf-profile-6-3-7-t03.xml | 6 +- .../verapdf-profile-6-4-t01.xml | 6 +- .../verapdf-profile-6-4-t04.xml | 6 +- .../verapdf-profile-6-4-t05.xml | 6 +- .../verapdf-profile-6-4-t06.xml | 6 +- .../verapdf-profile-6-5-2-t01.xml | 6 +- .../verapdf-profile-6-5-3-t01.xml | 6 +- .../verapdf-profile-6-6-1-t01.xml | 6 +- .../verapdf-profile-6-6-1-t02.xml | 6 +- .../verapdf-profile-6-7-4-t01.xml | 6 +- .../verapdf-profile-6-1-10-t01.xml | 6 +- .../verapdf-profile-6-1-13-t01.xml | 6 +- .../verapdf-profile-6-1-13-t02.xml | 6 +- .../verapdf-profile-6-1-13-t03.xml | 6 +- .../verapdf-profile-6-1-13-t04.xml | 6 +- .../verapdf-profile-6-1-13-t05.xml | 6 +- .../verapdf-profile-6-1-13-t07.xml | 6 +- .../verapdf-profile-6-1-13-t08.xml | 6 +- .../verapdf-profile-6-1-13-t09.xml | 6 +- .../verapdf-profile-6-1-13-t10.xml | 6 +- .../verapdf-profile-6-1-6-t01.xml | 6 +- .../verapdf-profile-6-1-7-t04.xml | 6 +- .../verapdf-profile-6-1-8-t01.xml | 2 +- .../verapdf-profile-6-2-10-t01.xml | 6 +- .../verapdf-profile-6-2-11-2-t01.xml | 6 +- .../verapdf-profile-6-2-11-2-t02.xml | 6 +- .../verapdf-profile-6-2-11-2-t07.xml | 6 +- .../verapdf-profile-6-2-11-3-t03.xml | 6 +- .../verapdf-profile-6-2-11-3-t04.xml | 7 +- .../verapdf-profile-6-2-11-3-t05.xml | 6 +- .../verapdf-profile-6-2-11-6-t04.xml | 7 +- .../verapdf-profile-6-2-3-t03.xml | 2 +- .../verapdf-profile-6-2-5-t02.xml | 6 +- .../verapdf-profile-6-2-5-t04.xml | 6 +- .../verapdf-profile-6-2-8-3-t01.xml | 6 +- .../verapdf-profile-6-3-1-t01.xml | 6 +- .../verapdf-profile-6-3-2-t01.xml | 6 +- .../verapdf-profile-6-5-1-t01.xml | 6 +- .../verapdf-profile-6-5-1-t02.xml | 6 +- .../verapdf-profile-6-6-2-1-t05.xml | 6 +- .../verapdf-profile-6-8-t01.xml | 6 +- .../verapdf-profile-6-1-12-t01.xml | 6 +- .../verapdf-profile-6-1-5-t01.xml | 6 +- .../verapdf-profile-6-1-6-2-t01.xml | 6 +- .../verapdf-profile-6-1-7-t01.xml | 2 +- .../verapdf-profile-6-1-9-t01.xml | 6 +- .../verapdf-profile-6-2-10-2-t01.xml | 6 +- .../verapdf-profile-6-2-10-2-t02.xml | 6 +- .../verapdf-profile-6-2-10-2-t07.xml | 6 +- .../verapdf-profile-6-2-10-3-3-t01.xml | 6 +- .../verapdf-profile-6-2-10-3-3-t02.xml | 7 +- .../verapdf-profile-6-2-10-3-3-t03.xml | 6 +- .../verapdf-profile-6-2-5-t02.xml | 6 +- .../verapdf-profile-6-2-5-t03.xml | 2 +- .../verapdf-profile-6-2-5-t04.xml | 6 +- .../verapdf-profile-6-2-7-3-t01.xml | 6 +- .../verapdf-profile-6-2-9-t01.xml | 6 +- .../verapdf-profile-6-3-1-t01.xml | 6 +- .../verapdf-profile-6-3-2-t01.xml | 6 +- .../verapdf-profile-6-6-1-t01.xml | 6 +- .../verapdf-profile-6-6-1-t02.xml | 6 +- .../verapdf-profile-6-7-2-1-t05.xml | 6 +- .../verapdf-profile-6-7-3-t05.xml | 6 +- .../verapdf-profile-6-9-t01.xml | 6 +- .../verapdf-profile-6-1-6-1-t03.xml | 8 +- .../verapdf-profile-6-3-1-t01.xml | 6 +- .../verapdf-profile-6-6-1-t01.xml | 6 +- .../verapdf-profile-6-3-1-t01.xml | 6 +- PDF_A/PDFA-1A.xml | 178 ++++++++++------ PDF_A/PDFA-1B.xml | 172 ++++++++++------ PDF_A/PDFA-2A.xml | 186 +++++++++++------ PDF_A/PDFA-2B.xml | 180 ++++++++++------ PDF_A/PDFA-2U.xml | 180 ++++++++++------ PDF_A/PDFA-3A.xml | 192 ++++++++++++------ PDF_A/PDFA-3B.xml | 186 +++++++++++------ PDF_A/PDFA-3U.xml | 186 +++++++++++------ PDF_A/PDFA-4.xml | 131 ++++++++---- PDF_A/PDFA-4E.xml | 133 ++++++++---- PDF_A/PDFA-4F.xml | 131 ++++++++---- .../verapdf-profile-5-t02.xml | 2 +- .../verapdf-profile-7-18-1-t01.xml | 7 +- .../verapdf-profile-7-18-3-t01.xml | 6 +- .../verapdf-profile-7-18-4-t01.xml | 6 +- .../verapdf-profile-7-18-5-t01.xml | 6 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml | 5 +- .../verapdf-profile-7-21-3-3-t01.xml | 6 +- .../verapdf-profile-7-21-3-3-t02.xml | 7 +- .../verapdf-profile-7-21-3-3-t03.xml | 6 +- .../verapdf-profile-7-21-6-t04.xml | 7 +- PDF_UA/PDFUA-1.xml | 59 ++++-- PDF_UA/WCAG-21-Complete.xml | 61 ++++-- PDF_UA/WCAG-21.xml | 2 +- 113 files changed, 1705 insertions(+), 851 deletions(-) diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml index b009efac..a41f252a 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml @@ -15,8 +15,10 @@ the Identification of Languages, as described in PDF Reference 9.8.1. unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})*$/.test(unicodeValue) - The Lang value is invalid - + Value %1 of the Lang entry is not Language-Tag + + unicodeValue + diff --git a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml index 27181b9e..e9954af8 100644 --- a/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.10 Filters/verapdf-profile-6-1-10-t01.xml @@ -11,8 +11,10 @@ The LZWDecode filter shall not be permitted internalRepresentation != "LZWDecode" - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml index 8fe5ae01..9a888ac5 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t01.xml @@ -11,8 +11,10 @@ Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 (intValue <= 2147483647) && (intValue >= -2147483648) - Integer value out of range - + Integer value %1 out of range + + intValue + diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml index 61ba54a4..b0cb29f9 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t02.xml @@ -11,8 +11,10 @@ Absolute real value must be less than or equal to 32767.0 (realValue >= -32767.0) && (realValue <= 32767.0) - Real value out of range - + Real value %1 out of range + + realValue + diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml index f908d1f7..82a734e2 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t03.xml @@ -11,8 +11,10 @@ Maximum length of a string (in bytes) is 65535 value.length() < 65536 - Maximum length of a String (65535) exceeded - + String length (%1) exceeded 65535 + + value.length() + diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml index 37ea336f..e054928f 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t04.xml @@ -11,7 +11,7 @@ Maximum length of a name (in bytes) is 127 internalRepresentation.length() <= 127 - Maximum length of a Name (127) exceeded + Name length (%1) exceeded 127 internalRepresentation.length() diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml index bd9d251b..a7951de5 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t05.xml @@ -11,8 +11,10 @@ Maximum capacity of an array (in elements) is 8191 size <= 8191 - Maximum capacity of an array (8191) exceeded - + Array capacity (%1) exceeded 8191 + + size + diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml index 9ef2e961..ca7d8945 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t06.xml @@ -11,8 +11,10 @@ Maximum capacity of a dictionary (in entries) is 4095 size <= 4095 - Maximum capacity of a dictionary (4095) exceeded - + Dictionary capacity (%1) exceeded 4095 + + size + diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml index 83e59ee5..5360b02d 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t07.xml @@ -11,8 +11,10 @@ Maximum number of indirect objects in a PDF file is 8,388,607 nrIndirects <= 8388607 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - + Number of indirect objects in a PDF file (%1) exceeded 8,388,607 + + nrIndirects + diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml index 022a2045..483baa04 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t08.xml @@ -11,8 +11,10 @@ Maximum depth of graphics state nesting by q and Q operators is 28 nestingLevel <= 28 - Maximum depth of graphics state nesting (q and Q operators) is exceeded - + Depth of graphics state nesting of q/Q operators (%1) exceeded 28 + + nestingLevel + diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml index 47538554..091fca5c 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t09.xml @@ -11,8 +11,10 @@ Maximum number of DeviceN components is 8 nrComponents <= 8 - Maximum number of DeviceN components is exceeded - + Number of DeviceN components (%1) exceeded 8 + + nrComponents + diff --git a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml index 3731dca9..5684097d 100644 --- a/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml +++ b/PDF_A/1b/6.1 File structure/6.1.12 Implementation limits/verapdf-profile-6-1-12-t10.xml @@ -11,8 +11,10 @@ Maximum value of a CID (character identifier) is 65,535 maximalCID <= 65535 - Maximum value of a CID (65,535) is exceeded - + Value of a CID (%1) exceeded 65,535 + + maximalCID + diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml index 9962bc35..d1662d2c 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml @@ -13,8 +13,11 @@ and the last trailer dictionary, the value to both instances of the ID keyword shall be identical (isLinearized != true) || lastID == null || (firstPageID == lastID) - Last ID is present in the Linearized PDF and does not match the first page ID - + Last ID (%1) is present in the Linearized PDF and does not match the first page ID (%2) + + lastID + firstPageID + diff --git a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml index 82947b8d..671042dd 100644 --- a/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml @@ -11,8 +11,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - Hexadecimal string contains odd number of non-white-space characters - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + diff --git a/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml index bb43043a..460ebdc8 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.8 Extended graphics state/verapdf-profile-6-2-8-t02.xml @@ -11,8 +11,10 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An ExtGState dictionary contains the TR2 key with a value other than Default - + An ExtGState dictionary contains the TR2 key with value %1 other than Default + + TR2 +
diff --git a/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml index e02d6041..aa795da3 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.9 Rendering intents/verapdf-profile-6-2-9-t01.xml @@ -13,8 +13,10 @@ RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - A rendering intent with non-standard value is used - + A rendering intent with non-standard value %1 is used + + internalRepresentation +
diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml index e35b3ec1..99d15465 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t01.xml @@ -13,8 +13,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml index 2b9d59a8..dfcdef43 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t02.xml @@ -16,8 +16,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml index c89e08de..5d0536d8 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml @@ -17,8 +17,10 @@ in the Compact Font Format (CFF). fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t04.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t04.xml index b8f922e6..a9aedfe9 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t04.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t04.xml @@ -11,8 +11,11 @@ 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 WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml index 7b7542b6..50ce9eac 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml @@ -15,8 +15,10 @@ If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding - + A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or WinAnsiEncoding + + Encoding + diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml index eb4ac718..0382242e 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml @@ -11,8 +11,10 @@ Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding isSymbolic == false || nrCmaps == 1 - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables + + nrCmaps + diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml index 66d42bbc..99768ba0 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t01.xml @@ -11,8 +11,10 @@ If an SMask key appears in an ExtGState dictionary, its value shall be None SMask == null || SMask == "None" - An ExtGState contains SMask key with a value other than None - + An ExtGState contains SMask key with value %1 instead of None + + SMask + diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml index 17efcb14..15d96809 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t04.xml @@ -11,8 +11,10 @@ The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible BM == null || BM == "Normal" || BM == "Compatible" - An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible - + An ExtGState dictionary contains the BM key (blend mode) with value %1 that is neither Normal or Compatible + + BM + diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml index d77b14c6..1ae5eaa6 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t05.xml @@ -11,8 +11,10 @@ The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 - An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 - + An ExtGState dictionary contains the CA key (stroke alpha) with value %1 other than 1.0 + + CA + diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml index 8f19aa00..645b5e90 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t06.xml @@ -11,8 +11,10 @@ The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0 ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 - An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 - + An ExtGState dictionary contains the ca key (fill alpha) with value %1 other than 1.0 + + ca + diff --git a/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml b/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml index 5c9ced52..0f2caaf5 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.2 Annotation types/verapdf-profile-6-5-2-t01.xml @@ -16,8 +16,10 @@ Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml index 6eb66b6a..43840ee9 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t01.xml @@ -11,8 +11,10 @@ An annotation dictionary shall not contain the CA key with a value other than 1.0 CA == null || CA == 1.0 - An annotation dictionary contains the CA key with value other than 1.0 - + An annotation dictionary contains the CA key with value %1 instead of 1.0 + + CA + diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml index 44d55743..9c92f9ca 100644 --- a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -13,8 +13,10 @@ Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml index 97e7d166..d47b755c 100644 --- a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t02.xml @@ -11,8 +11,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted action type - + Unknown or not permitted named action %1 + + N + diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml index 63567f71..f41ae25d 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml @@ -17,8 +17,10 @@ as defined in RFC 3066, Tags for the Identification of Languages. unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - The Lang value is invalid - + Value %1 of the Lang entry is not Language-Tag + + unicodeValue + diff --git a/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml index 1765cccf..dec9fd98 100644 --- a/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml @@ -20,8 +20,10 @@ internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses LZW, Crypt or one of the unknown filters - + Inline image uses %1 filter + + internalRepresentation + diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml index 227c66db..cf2b38dd 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml @@ -11,8 +11,10 @@ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) - Integer value out of range - + Integer value %1 out of range + + intValue + diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml index 50214065..0cc737b4 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t02.xml @@ -11,8 +11,10 @@ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 (realValue >= -3.403e+38) && (realValue <= 3.403e+38) - Real value out of range - + Real value %1 out of range + + realValue + diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml index ad2adeea..996cd9f0 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml @@ -11,8 +11,10 @@ A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32768 - Maximum length of a String (32767) exceeded - + String length (%1) exceeded 32767 + + value.length() + diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml index ff62771e..0d335cad 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml @@ -11,8 +11,10 @@ A conforming file shall not contain any name longer than 127 bytes. internalRepresentation.length() <= 127 - Maximum length of a Name (127) exceeded - + Name length (%1) exceeded 127 + + internalRepresentation.length() + diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml index db4a6f0a..a98f4b93 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml @@ -11,8 +11,10 @@ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) - Non-zero real value is too close to 0.0 - + Non-zero real value %1 is too close to 0.0 + + realValue + diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml index 74e2ea1e..74445420 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t07.xml @@ -11,8 +11,10 @@ A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - + Number of indirect objects in a PDF file (%1) exceeded 8,388,607 + + nrIndirects + diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml index 670c1cae..7c548309 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml @@ -11,8 +11,10 @@ A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 - Maximum depth of graphics state nesting (q and Q operators) is exceeded - + Depth of graphics state nesting of q/Q operators (%1) exceeded 28 + + nestingLevel + diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml index cb06b86b..e7e9c9ef 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml @@ -11,8 +11,10 @@ A conforming file shall not contain a DeviceN colour space with more than 32 colourants. nrComponents <= 32 - Maximum number of DeviceN components (32) is exceeded - + Number of DeviceN components (%1) exceeded 32 + + nrComponents + diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml index deb75ea9..aa2fe8ac 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml @@ -11,8 +11,10 @@ A conforming file shall not contain a CID value greater than 65535. maximalCID <= 65535 - Maximum value of a CID (65535) is exceeded - + Value of a CID (%1) exceeded 65,535 + + maximalCID + diff --git a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml index f1ab3920..5a3f97d1 100644 --- a/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.6 String objects/verapdf-profile-6-1-6-t01.xml @@ -11,8 +11,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - A hexadecimal string contains odd number of non-white-space characters. - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml index a12293a2..637d734e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml @@ -23,8 +23,10 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity") - LZW compression is used - + Inline image uses not permitted or unknown filter %1 + + internalRepresentation + diff --git a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml index 0443f0f8..ba9c54aa 100644 --- a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml @@ -13,7 +13,7 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct Utf8 byte sequence + The name object does not represent a correct UTF-8 character sequence diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml index a17e148f..e4dcbd60 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml @@ -19,8 +19,10 @@ internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" - The document uses the blend mode not defined in ISO 32000-1:2008 - + The document uses the blend mode %1 not defined in ISO 32000-1:2008 + + internalRepresentation + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml index a55514f7..1012ad14 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml @@ -15,8 +15,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml index c7917c1d..25d04864 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml @@ -18,8 +18,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml index f6633648..608abb63 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml @@ -17,8 +17,10 @@ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml index a692f5f6..943e3689 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml @@ -28,8 +28,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml index 66fa3591..dec8fe2e 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml @@ -13,8 +13,11 @@ in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml index 3efcc7a4..93385bf9 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml @@ -26,8 +26,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml index 6d4b3ea2..85c3b654 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml @@ -13,8 +13,11 @@ shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and + does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index f18d6a82..0307fe9f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -11,7 +11,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. S != 'GTS_PDFX' || containsDestOutputProfileRef == false - The output intent dictionary contains forbidden entry DestOutputProfileRef + The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml index cb828e5d..c1f05b40 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml @@ -11,8 +11,10 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An ExtGState dictionary contains the TR2 key with a value other than Default - + An ExtGState dictionary contains the TR2 key with value %1 other than Default + + TR2 + diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml index bfe7a4b6..a230c37d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml @@ -11,8 +11,10 @@ All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - A Halftone has type other than 1 or 5 - + A Halftone has type %1 instead of 1 or 5 + + HalftoneType + diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml index f4b6115c..e3a78a83 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml @@ -11,8 +11,10 @@ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 - JPEG2000 image has number of colour channels different from 1, 3 or 4. - + JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 + + nrColorChannels + diff --git a/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml index 2fe1cbaf..4fb8a5ed 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -16,8 +16,10 @@ Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml index 7192c541..6ae471aa 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml @@ -11,8 +11,10 @@ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null - A dictionary of a non-Popup annotation does not contain F key - + A dictionary of %1 annotation does not contain F key + + Subtype + diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml index 8d982854..a4664a1e 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml @@ -13,8 +13,10 @@ Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml index 3b390219..b4d5099c 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml @@ -11,8 +11,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted named action - + Unknown or not permitted named action %1 + + N + diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml index 53b51d44..5df80a91 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml @@ -11,8 +11,10 @@ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" - The XMP package uses an encoding different from UTF-8 - + The XMP package uses encoding %1 different from UTF-8 + + actualEncoding + diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml index 6258b1c1..702ba00c 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml @@ -13,8 +13,10 @@ If the MIME type is not known, the "application/octet-stream" shall be used. Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - The MIME type information (Subtype entry) of an embedded file is missing or invalid - + MIME type %1 of an embedded file is missing or invalid + + Subtype + diff --git a/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml index 9cd38489..ed3fda57 100644 --- a/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml @@ -15,8 +15,10 @@ character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. Version == null || /^2\.[0-9]$/.test(Version) - The Version key is present and does not comply with the requirements of PDF/A-4 specification. - + The Version key with value %1 does not comply with the requirements of PDF/A-4 specification. + + Version + diff --git a/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t01.xml b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t01.xml index 2a81b2da..75691ad6 100644 --- a/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.5 String objects/verapdf-profile-6-1-5-t01.xml @@ -11,8 +11,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - The number of hexadecimal digits in a hexadecimal string shall always be even - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml index e43ae840..9a949b29 100644 --- a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml @@ -23,8 +23,10 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity") - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + diff --git a/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml index 4c08e70a..6e6e18e5 100644 --- a/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml @@ -13,7 +13,7 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct Utf8 byte sequence + The name object does not represent a correct UTF-8 character sequence diff --git a/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml b/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml index 3f99cb88..033395c3 100644 --- a/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml @@ -20,8 +20,10 @@ internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses LZW, Crypt or one of the unknown filters - + Inline image uses not permitted or unknown filter %1 + + internalRepresentation + diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t01.xml index 4d00c245..63314c14 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t01.xml @@ -15,8 +15,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t02.xml index f261ad2c..acb7dd62 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t02.xml @@ -18,8 +18,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml index 71e6bed8..125c3df7 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml @@ -17,8 +17,10 @@ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml index 1d184307..cea99bc5 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml @@ -28,8 +28,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml index e38176ce..2a37cd5b 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml @@ -13,8 +13,11 @@ shall be identical to the WMode value in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml index 70271355..8aad07f1 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml @@ -26,8 +26,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml index 684e3570..071c06bf 100644 --- a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t02.xml @@ -11,8 +11,10 @@ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - A graphics state parameter dictionary contains the TR2 key with a value other than Default - + A graphics state parameter dictionary contains the TR2 key with value %1 other than Default + + TR2 + diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml index 9b06667f..3ab8cc23 100644 --- a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t03.xml @@ -11,7 +11,7 @@ A graphics state parameter dictionary shall not contain the HTO key containsHTO == false - A graphics state parameter dictionary contains the HTP key + A graphics state parameter dictionary contains the HTO key diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml index 64c47b82..99802721 100644 --- a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml @@ -11,8 +11,10 @@ All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - A Halftone has type other than 1 or 5 - + A Halftone has type %1 instead of 1 or 5 + + HalftoneType + diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml index 5fa23b21..784407f7 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml @@ -11,8 +11,10 @@ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 - JPEG2000 image has number of colour channels different from 1, 3 or 4. - + JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 + + nrColorChannels + diff --git a/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml index c482c5a9..d23cfb21 100644 --- a/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml @@ -21,8 +21,10 @@ internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" - The document uses the blend mode not defined in ISO 32000-2:2020 - + The document uses the blend mode %1 not defined in ISO 32000-2:2020 + + internalRepresentation + diff --git a/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml index 768c4386..4707973b 100644 --- a/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml +++ b/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -18,8 +18,10 @@ Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + diff --git a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml index b0eebd44..ff3a6c75 100644 --- a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml +++ b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml @@ -11,8 +11,10 @@ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null - A dictionary of a non-Popup annotation does not contain F key - + A dictionary of %1 annotation does not contain F key + + Subtype + diff --git a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml index e20236cc..3d449a6c 100644 --- a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml +++ b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -15,8 +15,10 @@ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + diff --git a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml index 800cb72e..567abea2 100644 --- a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml +++ b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml @@ -11,8 +11,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted named action - + Unknown or not permitted named action %1 + + N + diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml index 509c48e1..4484abcf 100644 --- a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml @@ -11,8 +11,10 @@ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" - The XMP package uses an encoding different from UTF-8 - + The XMP package uses encoding %1 different from UTF-8 + + actualEncoding + diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml index 9755c479..441fa292 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml @@ -11,8 +11,10 @@ The value of pdfaid:rev shall be the four digit year. /^\d{4}$/.test(rev) - The value of pdfaid:rev not the four digit year. - + The value of pdfaid:rev (%1) not the four digit year. + + rev + diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml index 7dd51315..68722b73 100644 --- a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml +++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml @@ -13,8 +13,10 @@ If the MIME type is not known, the value "application/octet-stream" shall be used. Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - The MIME type information (Subtype entry) of an embedded file is missing or invalid - + MIME type %1 of an embedded file is missing or invalid + + Subtype + diff --git a/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml b/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml index a95292ec..d4155563 100644 --- a/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml +++ b/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml @@ -13,9 +13,11 @@ is either U3D or PRC as described in Annex B. Subtype == 'U3D' || Subtype == 'PRC' - The Subtype entry in the 3D stream dictionary (ISO 32000-2:2020, 13.6.3) has a value that is - neither U3D nor PRC. - + The Subtype entry in the 3D stream dictionary (ISO 32000-2:2020, 13.6.3) has value %1 that is + neither U3D nor PRC + + Subtype + diff --git a/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml index b116c895..8b1d70da 100644 --- a/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml +++ b/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -20,8 +20,10 @@ Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "3D" || Subtype == "Projection" || Subtype == "RichMedia" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + diff --git a/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml index f8f95e5f..d9fb0e52 100644 --- a/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml +++ b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -18,8 +18,10 @@ S == "SubmitForm" || S == "SetOCGState" || S == "GoTo3DView" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + diff --git a/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml index bcbe90ba..ea99b340 100644 --- a/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml +++ b/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -19,8 +19,10 @@ Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index b7225c7a..144a1323 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -67,8 +67,11 @@ and the last trailer dictionary, the value to both instances of the ID keyword shall be identical (isLinearized != true) || lastID == null || (firstPageID == lastID) - Last ID is present in the Linearized PDF and does not match the first page ID - + Last ID (%1) is present in the Linearized PDF and does not match the first page ID (%2) + + lastID + firstPageID + @@ -99,8 +102,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - Hexadecimal string contains odd number of non-white-space characters - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + @@ -165,8 +170,10 @@ The LZWDecode filter shall not be permitted internalRepresentation != "LZWDecode" - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + @@ -209,8 +216,10 @@ Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 (intValue <= 2147483647) && (intValue >= -2147483648) - Integer value out of range - + Integer value %1 out of range + + intValue + @@ -221,8 +230,10 @@ Absolute real value must be less than or equal to 32767.0 (realValue >= -32767.0) && (realValue <= 32767.0) - Real value out of range - + Real value %1 out of range + + realValue + @@ -233,8 +244,10 @@ Maximum length of a string (in bytes) is 65535 value.length() < 65536 - Maximum length of a String (65535) exceeded - + String length (%1) exceeded 65535 + + value.length() + @@ -245,7 +258,7 @@ Maximum length of a name (in bytes) is 127 internalRepresentation.length() <= 127 - Maximum length of a Name (127) exceeded + Name length (%1) exceeded 127 internalRepresentation.length() @@ -259,8 +272,10 @@ Maximum capacity of an array (in elements) is 8191 size <= 8191 - Maximum capacity of an array (8191) exceeded - + Array capacity (%1) exceeded 8191 + + size + @@ -271,8 +286,10 @@ Maximum capacity of a dictionary (in entries) is 4095 size <= 4095 - Maximum capacity of a dictionary (4095) exceeded - + Dictionary capacity (%1) exceeded 4095 + + size + @@ -283,8 +300,10 @@ Maximum number of indirect objects in a PDF file is 8,388,607 nrIndirects <= 8388607 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - + Number of indirect objects in a PDF file (%1) exceeded 8,388,607 + + nrIndirects + @@ -295,8 +314,10 @@ Maximum depth of graphics state nesting by q and Q operators is 28 nestingLevel <= 28 - Maximum depth of graphics state nesting (q and Q operators) is exceeded - + Depth of graphics state nesting of q/Q operators (%1) exceeded 28 + + nestingLevel + @@ -307,8 +328,10 @@ Maximum number of DeviceN components is 8 nrComponents <= 8 - Maximum number of DeviceN components is exceeded - + Number of DeviceN components (%1) exceeded 8 + + nrComponents + @@ -319,8 +342,10 @@ Maximum value of a CID (character identifier) is 65,535 maximalCID <= 65535 - Maximum value of a CID (65,535) is exceeded - + Value of a CID (%1) exceeded 65,535 + + maximalCID + @@ -492,8 +517,10 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An ExtGState dictionary contains the TR2 key with a value other than Default - + An ExtGState dictionary contains the TR2 key with value %1 other than Default + + TR2 + @@ -503,8 +530,10 @@ RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - A rendering intent with non-standard value is used - + A rendering intent with non-standard value %1 is used + + internalRepresentation + @@ -525,8 +554,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + @@ -543,8 +574,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + @@ -619,8 +652,10 @@ in the Compact Font Format (CFF). fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + @@ -673,8 +708,11 @@ 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 WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -747,8 +785,10 @@ If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding - + A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or WinAnsiEncoding + + Encoding + @@ -771,8 +811,10 @@ Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding isSymbolic == false || nrCmaps == 1 - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables + + nrCmaps + @@ -797,8 +839,10 @@ If an SMask key appears in an ExtGState dictionary, its value shall be None SMask == null || SMask == "None" - An ExtGState contains SMask key with a value other than None - + An ExtGState contains SMask key with value %1 instead of None + + SMask + @@ -832,8 +876,10 @@ The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible BM == null || BM == "Normal" || BM == "Compatible" - An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible - + An ExtGState dictionary contains the BM key (blend mode) with value %1 that is neither Normal or Compatible + + BM + @@ -842,8 +888,10 @@ The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 - An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 - + An ExtGState dictionary contains the CA key (stroke alpha) with value %1 other than 1.0 + + CA + @@ -852,8 +900,10 @@ The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0 ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 - An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 - + An ExtGState dictionary contains the ca key (fill alpha) with value %1 other than 1.0 + + ca + @@ -866,8 +916,10 @@ Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + @@ -878,8 +930,10 @@ An annotation dictionary shall not contain the CA key with a value other than 1.0 CA == null || CA == 1.0 - An annotation dictionary contains the CA key with value other than 1.0 - + An annotation dictionary contains the CA key with value %1 instead of 1.0 + + CA + @@ -926,8 +980,10 @@ Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + @@ -938,8 +994,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted action type - + Unknown or not permitted named action %1 + + N + @@ -1241,8 +1299,10 @@ the Identification of Languages, as described in PDF Reference 9.8.1. unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})*$/.test(unicodeValue) - The Lang value is invalid - + Value %1 of the Lang entry is not Language-Tag + + unicodeValue + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index a938928a..0aa11dfb 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -67,8 +67,11 @@ and the last trailer dictionary, the value to both instances of the ID keyword shall be identical (isLinearized != true) || lastID == null || (firstPageID == lastID) - Last ID is present in the Linearized PDF and does not match the first page ID - + Last ID (%1) is present in the Linearized PDF and does not match the first page ID (%2) + + lastID + firstPageID + @@ -99,8 +102,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - A hexadecimal string contains odd number of non-white-space characters - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + @@ -165,8 +170,10 @@ The LZWDecode filter shall not be permitted internalRepresentation != "LZWDecode" - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + @@ -209,8 +216,10 @@ Largest Integer value is 2,147,483,647. Smallest integer value is -2,147,483,648 (intValue <= 2147483647) && (intValue >= -2147483648) - Integer value out of range - + Integer value %1 out of range + + intValue + @@ -221,8 +230,10 @@ Absolute real value must be less than or equal to 32767.0 (realValue >= -32767.0) && (realValue <= 32767.0) - Real value out of range - + Real value %1 out of range + + realValue + @@ -233,8 +244,10 @@ Maximum length of a string (in bytes) is 65535 value.length() < 65536 - Maximum length of a String (65535) exceeded - + String length (%1) exceeded 65535 + + value.length() + @@ -245,7 +258,7 @@ Maximum length of a name (in bytes) is 127 internalRepresentation.length() <= 127 - Maximum length of a Name (127) exceeded + Name length (%1) exceeded 127 internalRepresentation.length() @@ -259,8 +272,10 @@ Maximum capacity of an array (in elements) is 8191 size <= 8191 - Maximum capacity of an array (8191) exceeded - + Array capacity (%1) exceeded 8191 + + size + @@ -271,8 +286,10 @@ Maximum capacity of a dictionary (in entries) is 4095 size <= 4095 - Maximum capacity of a dictionary (4095) exceeded - + Dictionary capacity (%1) exceeded 4095 + + size + @@ -283,8 +300,10 @@ Maximum number of indirect objects in a PDF file is 8,388,607 nrIndirects <= 8388607 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - + Number of indirect objects in a PDF file (%1) exceeded 8,388,607 + + nrIndirects + @@ -295,8 +314,10 @@ Maximum depth of graphics state nesting by q and Q operators is 28 nestingLevel <= 28 - Maximum depth of graphics state nesting (q and Q operators) is exceeded - + Depth of graphics state nesting of q/Q operators (%1) exceeded 28 + + nestingLevel + @@ -307,8 +328,10 @@ Maximum number of DeviceN components is 8 nrComponents <= 8 - Maximum number of DeviceN components is exceeded - + Number of DeviceN components (%1) exceeded 8 + + nrComponents + @@ -319,8 +342,10 @@ Maximum value of a CID (character identifier) is 65,535 maximalCID <= 65535 - Maximum value of a CID (65,535) is exceeded - + Value of a CID (%1) exceeded 65,535 + + maximalCID + @@ -492,8 +517,10 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An ExtGState dictionary contains the TR2 key with a value other than Default - + An ExtGState dictionary contains the TR2 key with value %1 other than Default + + TR2 + @@ -503,8 +530,10 @@ RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - A rendering intent with non-standard value is used - + A rendering intent with non-standard value %1 is used + + internalRepresentation + @@ -525,8 +554,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + @@ -543,8 +574,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + @@ -619,8 +652,10 @@ in the Compact Font Format (CFF). fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + @@ -673,8 +708,11 @@ 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 WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -747,8 +785,10 @@ If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - A non-symbolic TrueType font has an encoding different from MacRomanEncoding or WinAnsiEncoding - + A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or WinAnsiEncoding + + Encoding + @@ -771,8 +811,10 @@ Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding isSymbolic == false || nrCmaps == 1 - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables + + nrCmaps + @@ -783,8 +825,10 @@ If an SMask key appears in an ExtGState dictionary, its value shall be None SMask == null || SMask == "None" - An ExtGState contains SMask key with a value other than None - + An ExtGState contains SMask key with value %1 instead of None + + SMask + @@ -818,8 +862,10 @@ The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible BM == null || BM == "Normal" || BM == "Compatible" - An ExtGState dictionary contains the BM key (blend mode) with a value other than Normal or Compatible - + An ExtGState dictionary contains the BM key (blend mode) with value %1 that is neither Normal or Compatible + + BM + @@ -828,8 +874,10 @@ The following keys, if present in an ExtGState object, shall have the values shown: CA - 1.0 CA == null || CA - 1.0 < 0.000001 && CA - 1.0 > -0.000001 - An ExtGState dictionary contains the CA key (stroke alpha) with a value other than 1.0 - + An ExtGState dictionary contains the CA key (stroke alpha) with value %1 other than 1.0 + + CA + @@ -838,8 +886,10 @@ The following keys, if present in an ExtGState object, shall have the values shown: ca - 1.0 ca == null || ca - 1.0 < 0.000001 && ca - 1.0 > -0.000001 - An ExtGState dictionary contains the ca key (fill alpha) with a value other than 1.0 - + An ExtGState dictionary contains the ca key (fill alpha) with value %1 other than 1.0 + + ca + @@ -852,8 +902,10 @@ Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + @@ -864,8 +916,10 @@ An annotation dictionary shall not contain the CA key with a value other than 1.0 CA == null || CA == 1.0 - An annotation dictionary contains the CA key with value other than 1.0 - + An annotation dictionary contains the CA key with value %1 instead of 1.0 + + CA + @@ -912,8 +966,10 @@ Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + @@ -924,8 +980,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted action type - + Unknown or not permitted named action %1 + + N + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 36ce7f3d..5e8ea105 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -77,8 +77,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - A hexadecimal string contains odd number of non-white-space characters - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + @@ -138,8 +140,10 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity") - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + @@ -149,7 +153,7 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct Utf8 byte sequence + The name object does not represent a correct UTF-8 character sequence @@ -181,8 +185,10 @@ internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses LZW, Crypt or one of the unknown filters - + Inline image uses not permitted or unknown filter %1 + + internalRepresentation + @@ -216,8 +222,10 @@ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) - Integer value out of range - + Integer value %1 out of range + + intValue + @@ -226,8 +234,10 @@ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 (realValue >= -3.403e+38) && (realValue <= 3.403e+38) - Real value out of range - + Real value %1 out of range + + realValue + @@ -236,8 +246,10 @@ A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32768 - Maximum length of a String (32767) exceeded - + String length (%1) exceeded 32767 + + value.length() + @@ -246,8 +258,10 @@ A conforming file shall not contain any name longer than 127 bytes. internalRepresentation.length() <= 127 - Maximum length of a Name (127) exceeded - + Name length (%1) exceeded 127 + + internalRepresentation.length() + @@ -256,8 +270,10 @@ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) - Non-zero real value is too close to 0.0 - + Non-zero real value %1 is too close to 0.0 + + realValue + @@ -266,8 +282,10 @@ A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - + Number of indirect objects in a PDF file (%1) exceeded 8,388,607 + + nrIndirects + @@ -276,8 +294,10 @@ A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 - Maximum depth of graphics state nesting (q and Q operators) is exceeded - + Depth of graphics state nesting of q/Q operators (%1) exceeded 28 + + nestingLevel + @@ -286,8 +306,10 @@ A conforming file shall not contain a DeviceN colour space with more than 32 colourants. nrComponents <= 32 - Maximum number of DeviceN components (32) is exceeded - + Number of DeviceN components (%1) exceeded 32 + + nrComponents + @@ -296,8 +318,10 @@ A conforming file shall not contain a CID value greater than 65535. maximalCID <= 65535 - Maximum value of a CID (65535) is exceeded - + Value of a CID (%1) exceeded 65,535 + + maximalCID + @@ -367,7 +391,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. S != 'GTS_PDFX' || containsDestOutputProfileRef == false - The output intent dictionary contains forbidden entry DestOutputProfileRef + The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef @@ -474,8 +498,10 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An ExtGState dictionary contains the TR2 key with a value other than Default - + An ExtGState dictionary contains the TR2 key with value %1 other than Default + + TR2 + @@ -494,8 +520,10 @@ All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - A Halftone has type other than 1 or 5 - + A Halftone has type %1 instead of 1 or 5 + + HalftoneType + @@ -529,8 +557,10 @@ Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - A rendering intent with non-standard value is used - + A rendering intent with non-standard value %1 is used + + internalRepresentation + @@ -570,8 +600,10 @@ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 - JPEG2000 image has number of colour channels different from 1, 3 or 4. - + JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 + + nrColorChannels + @@ -660,8 +692,10 @@ internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" - The document uses the blend mode not defined in ISO 32000-1:2008 - + The document uses the blend mode %1 not defined in ISO 32000-1:2008 + + internalRepresentation + @@ -688,8 +722,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + @@ -707,8 +743,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + @@ -788,8 +826,10 @@ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + @@ -846,8 +886,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + @@ -859,8 +901,11 @@ in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -884,8 +929,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + @@ -996,8 +1043,11 @@ shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and + does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + @@ -1060,8 +1110,10 @@ Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + @@ -1072,8 +1124,10 @@ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null - A dictionary of a non-Popup annotation does not contain F key - + A dictionary of %1 annotation does not contain F key + + Subtype + @@ -1200,8 +1254,10 @@ Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + @@ -1212,8 +1268,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted named action - + Unknown or not permitted named action %1 + + N + @@ -1291,8 +1349,10 @@ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" - The XMP package uses an encoding different from UTF-8 - + The XMP package uses encoding %1 different from UTF-8 + + actualEncoding + @@ -1489,8 +1549,10 @@ as defined in RFC 3066, Tags for the Identification of Languages. unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - The Lang value is invalid - + Value %1 of the Lang entry is not Language-Tag + + unicodeValue + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index fa98056a..43c71486 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -77,8 +77,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - A hexadecimal string contains odd number of non-white-space characters - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + @@ -138,8 +140,10 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity") - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + @@ -149,7 +153,7 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct Utf8 byte sequence + The name object does not represent a correct UTF-8 character sequence @@ -181,8 +185,10 @@ internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses LZW, Crypt or one of the unknown filters - + Inline image uses not permitted or unknown filter %1 + + internalRepresentation + @@ -216,8 +222,10 @@ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) - Integer value out of range - + Integer value %1 out of range + + intValue + @@ -226,8 +234,10 @@ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 (realValue >= -3.403e+38) && (realValue <= 3.403e+38) - Real value out of range - + Real value %1 out of range + + realValue + @@ -236,8 +246,10 @@ A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32768 - Maximum length of a String (32767) exceeded - + String length (%1) exceeded 32767 + + value.length() + @@ -246,8 +258,10 @@ A conforming file shall not contain any name longer than 127 bytes. internalRepresentation.length() <= 127 - Maximum length of a Name (127) exceeded - + Name length (%1) exceeded 127 + + internalRepresentation.length() + @@ -256,8 +270,10 @@ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) - Non-zero real value is too close to 0.0 - + Non-zero real value %1 is too close to 0.0 + + realValue + @@ -266,8 +282,10 @@ A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - + Number of indirect objects in a PDF file (%1) exceeded 8,388,607 + + nrIndirects + @@ -276,8 +294,10 @@ A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 - Maximum depth of graphics state nesting (q and Q operators) is exceeded - + Depth of graphics state nesting of q/Q operators (%1) exceeded 28 + + nestingLevel + @@ -286,8 +306,10 @@ A conforming file shall not contain a DeviceN colour space with more than 32 colourants. nrComponents <= 32 - Maximum number of DeviceN components (32) is exceeded - + Number of DeviceN components (%1) exceeded 32 + + nrComponents + @@ -296,8 +318,10 @@ A conforming file shall not contain a CID value greater than 65535. maximalCID <= 65535 - Maximum value of a CID (65535) is exceeded - + Value of a CID (%1) exceeded 65,535 + + maximalCID + @@ -367,7 +391,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. S != 'GTS_PDFX' || containsDestOutputProfileRef == false - The output intent dictionary contains forbidden entry DestOutputProfileRef + The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef @@ -474,8 +498,10 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An ExtGState dictionary contains the TR2 key with a value other than Default - + An ExtGState dictionary contains the TR2 key with value %1 other than Default + + TR2 + @@ -494,8 +520,10 @@ All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - A Halftone has type other than 1 or 5 - + A Halftone has type %1 instead of 1 or 5 + + HalftoneType + @@ -529,8 +557,10 @@ Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - A rendering intent with non-standard value is used - + A rendering intent with non-standard value %1 is used + + internalRepresentation + @@ -570,8 +600,10 @@ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 - JPEG2000 image has number of colour channels different from 1, 3 or 4. - + JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 + + nrColorChannels + @@ -660,8 +692,10 @@ internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" - The document uses the blend mode not defined in ISO 32000-1:2008 - + The document uses the blend mode %1 not defined in ISO 32000-1:2008 + + internalRepresentation + @@ -688,8 +722,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + @@ -707,8 +743,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + @@ -788,8 +826,10 @@ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + @@ -846,8 +886,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + @@ -859,8 +901,11 @@ in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -884,8 +929,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + @@ -996,8 +1043,11 @@ shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and + does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + @@ -1022,8 +1072,10 @@ Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + @@ -1034,8 +1086,10 @@ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null - A dictionary of a non-Popup annotation does not contain F key - + A dictionary of %1 annotation does not contain F key + + Subtype + @@ -1162,8 +1216,10 @@ Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + @@ -1174,8 +1230,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted named action - + Unknown or not permitted named action %1 + + N + @@ -1253,8 +1311,10 @@ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" - The XMP package uses an encoding different from UTF-8 - + The XMP package uses encoding %1 different from UTF-8 + + actualEncoding + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 96677327..15e45d31 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -77,8 +77,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - A hexadecimal string contains odd number of non-white-space characters - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + @@ -138,8 +140,10 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity") - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + @@ -149,7 +153,7 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct Utf8 byte sequence + The name object does not represent a correct UTF-8 character sequence @@ -181,8 +185,10 @@ internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses LZW, Crypt or one of the unknown filters - + Inline image uses not permitted or unknown filter %1 + + internalRepresentation + @@ -216,8 +222,10 @@ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) - Integer value out of range - + Integer value %1 out of range + + intValue + @@ -226,8 +234,10 @@ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 (realValue >= -3.403e+38) && (realValue <= 3.403e+38) - Real value out of range - + Real value %1 out of range + + realValue + @@ -236,8 +246,10 @@ A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32768 - Maximum length of a String (32767) exceeded - + String length (%1) exceeded 32767 + + value.length() + @@ -246,8 +258,10 @@ A conforming file shall not contain any name longer than 127 bytes. internalRepresentation.length() <= 127 - Maximum length of a Name (127) exceeded - + Name length (%1) exceeded 127 + + internalRepresentation.length() + @@ -256,8 +270,10 @@ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) - Non-zero real value is too close to 0.0 - + Non-zero real value %1 is too close to 0.0 + + realValue + @@ -266,8 +282,10 @@ A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - + Number of indirect objects in a PDF file (%1) exceeded 8,388,607 + + nrIndirects + @@ -276,8 +294,10 @@ A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 - Maximum depth of graphics state nesting (q and Q operators) is exceeded - + Depth of graphics state nesting of q/Q operators (%1) exceeded 28 + + nestingLevel + @@ -286,8 +306,10 @@ A conforming file shall not contain a DeviceN colour space with more than 32 colourants. nrComponents <= 32 - Maximum number of DeviceN components (32) is exceeded - + Number of DeviceN components (%1) exceeded 32 + + nrComponents + @@ -296,8 +318,10 @@ A conforming file shall not contain a CID value greater than 65535. maximalCID <= 65535 - Maximum value of a CID (65535) is exceeded - + Value of a CID (%1) exceeded 65,535 + + maximalCID + @@ -367,7 +391,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. S != 'GTS_PDFX' || containsDestOutputProfileRef == false - The output intent dictionary contains forbidden entry DestOutputProfileRef + The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef @@ -474,8 +498,10 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An ExtGState dictionary contains the TR2 key with a value other than Default - + An ExtGState dictionary contains the TR2 key with value %1 other than Default + + TR2 + @@ -494,8 +520,10 @@ All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - A Halftone has type other than 1 or 5 - + A Halftone has type %1 instead of 1 or 5 + + HalftoneType + @@ -529,8 +557,10 @@ Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - A rendering intent with non-standard value is used - + A rendering intent with non-standard value %1 is used + + internalRepresentation + @@ -570,8 +600,10 @@ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 - JPEG2000 image has number of colour channels different from 1, 3 or 4. - + JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 + + nrColorChannels + @@ -660,8 +692,10 @@ internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" - The document uses the blend mode not defined in ISO 32000-1:2008 - + The document uses the blend mode %1 not defined in ISO 32000-1:2008 + + internalRepresentation + @@ -688,8 +722,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + @@ -707,8 +743,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + @@ -788,8 +826,10 @@ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + @@ -846,8 +886,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + @@ -859,8 +901,11 @@ in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -884,8 +929,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + @@ -996,8 +1043,11 @@ shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and + does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + @@ -1045,8 +1095,10 @@ Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + @@ -1057,8 +1109,10 @@ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null - A dictionary of a non-Popup annotation does not contain F key - + A dictionary of %1 annotation does not contain F key + + Subtype + @@ -1185,8 +1239,10 @@ Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + @@ -1197,8 +1253,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted named action - + Unknown or not permitted named action %1 + + N + @@ -1276,8 +1334,10 @@ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" - The XMP package uses an encoding different from UTF-8 - + The XMP package uses encoding %1 different from UTF-8 + + actualEncoding + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 15abfc72..f4569b20 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -77,8 +77,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - A hexadecimal string contains odd number of non-white-space characters - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + @@ -138,8 +140,10 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity") - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + @@ -149,7 +153,7 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct Utf8 byte sequence + The name object does not represent a correct UTF-8 character sequence @@ -181,8 +185,10 @@ internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses LZW, Crypt or one of the unknown filters - + Inline image uses not permitted or unknown filter %1 + + internalRepresentation + @@ -216,8 +222,10 @@ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) - Integer value out of range - + Integer value %1 out of range + + intValue + @@ -226,8 +234,10 @@ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 (realValue >= -3.403e+38) && (realValue <= 3.403e+38) - Real value out of range - + Real value %1 out of range + + realValue + @@ -236,8 +246,10 @@ A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32768 - Maximum length of a String (32767) exceeded - + String length (%1) exceeded 32767 + + value.length() + @@ -246,8 +258,10 @@ A conforming file shall not contain any name longer than 127 bytes. internalRepresentation.length() <= 127 - Maximum length of a Name (127) exceeded - + Name length (%1) exceeded 127 + + internalRepresentation.length() + @@ -256,8 +270,10 @@ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) - Non-zero real value is too close to 0.0 - + Non-zero real value %1 is too close to 0.0 + + realValue + @@ -266,8 +282,10 @@ A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - + Number of indirect objects in a PDF file (%1) exceeded 8,388,607 + + nrIndirects + @@ -276,8 +294,10 @@ A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 - Maximum depth of graphics state nesting (q and Q operators) is exceeded - + Depth of graphics state nesting of q/Q operators (%1) exceeded 28 + + nestingLevel + @@ -286,8 +306,10 @@ A conforming file shall not contain a DeviceN colour space with more than 32 colourants. nrComponents <= 32 - Maximum number of DeviceN components (32) is exceeded - + Number of DeviceN components (%1) exceeded 32 + + nrComponents + @@ -296,8 +318,10 @@ A conforming file shall not contain a CID value greater than 65535. maximalCID <= 65535 - Maximum value of a CID (65535) is exceeded - + Value of a CID (%1) exceeded 65,535 + + maximalCID + @@ -367,7 +391,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. S != 'GTS_PDFX' || containsDestOutputProfileRef == false - The output intent dictionary contains forbidden entry DestOutputProfileRef + The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef @@ -474,8 +498,10 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An ExtGState dictionary contains the TR2 key with a value other than Default - + An ExtGState dictionary contains the TR2 key with value %1 other than Default + + TR2 + @@ -494,8 +520,10 @@ All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - A Halftone has type other than 1 or 5 - + A Halftone has type %1 instead of 1 or 5 + + HalftoneType + @@ -529,8 +557,10 @@ Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - A rendering intent with non-standard value is used - + A rendering intent with non-standard value %1 is used + + internalRepresentation + @@ -570,8 +600,10 @@ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 - JPEG2000 image has number of colour channels different from 1, 3 or 4. - + JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 + + nrColorChannels + @@ -660,8 +692,10 @@ internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" - The document uses the blend mode not defined in ISO 32000-1:2008 - + The document uses the blend mode %1 not defined in ISO 32000-1:2008 + + internalRepresentation + @@ -688,8 +722,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + @@ -707,8 +743,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + @@ -788,8 +826,10 @@ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + @@ -846,8 +886,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + @@ -859,8 +901,11 @@ in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -884,8 +929,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + @@ -996,8 +1043,11 @@ shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and + does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + @@ -1060,8 +1110,10 @@ Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + @@ -1072,8 +1124,10 @@ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null - A dictionary of a non-Popup annotation does not contain F key - + A dictionary of %1 annotation does not contain F key + + Subtype + @@ -1200,8 +1254,10 @@ Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + @@ -1212,8 +1268,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted named action - + Unknown or not permitted named action %1 + + N + @@ -1291,8 +1349,10 @@ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" - The XMP package uses an encoding different from UTF-8 - + The XMP package uses encoding %1 different from UTF-8 + + actualEncoding + @@ -1489,8 +1549,10 @@ as defined in RFC 3066, Tags for the Identification of Languages. unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - The Lang value is invalid - + Value %1 of the Lang entry is not Language-Tag + + unicodeValue + @@ -1503,8 +1565,10 @@ If the MIME type is not known, the "application/octet-stream" shall be used. Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - The MIME type information (Subtype entry) of an embedded file is missing or invalid - + MIME type %1 of an embedded file is missing or invalid + + Subtype + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 8ebf158c..2a1d24e0 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -77,8 +77,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - A hexadecimal string contains odd number of non-white-space characters - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + @@ -138,8 +140,10 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity") - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + @@ -149,7 +153,7 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct Utf8 byte sequence + The name object does not represent a correct UTF-8 character sequence @@ -181,8 +185,10 @@ internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses LZW, Crypt or one of the unknown filters - + Inline image uses not permitted or unknown filter %1 + + internalRepresentation + @@ -216,8 +222,10 @@ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) - Integer value out of range - + Integer value %1 out of range + + intValue + @@ -226,8 +234,10 @@ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 (realValue >= -3.403e+38) && (realValue <= 3.403e+38) - Real value out of range - + Real value %1 out of range + + realValue + @@ -236,8 +246,10 @@ A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32768 - Maximum length of a String (32767) exceeded - + String length (%1) exceeded 32767 + + value.length() + @@ -246,8 +258,10 @@ A conforming file shall not contain any name longer than 127 bytes. internalRepresentation.length() <= 127 - Maximum length of a Name (127) exceeded - + Name length (%1) exceeded 127 + + internalRepresentation.length() + @@ -256,8 +270,10 @@ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) - Non-zero real value is too close to 0.0 - + Non-zero real value %1 is too close to 0.0 + + realValue + @@ -266,8 +282,10 @@ A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - + Number of indirect objects in a PDF file (%1) exceeded 8,388,607 + + nrIndirects + @@ -276,8 +294,10 @@ A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 - Maximum depth of graphics state nesting (q and Q operators) is exceeded - + Depth of graphics state nesting of q/Q operators (%1) exceeded 28 + + nestingLevel + @@ -286,8 +306,10 @@ A conforming file shall not contain a DeviceN colour space with more than 32 colourants. nrComponents <= 32 - Maximum number of DeviceN components (32) is exceeded - + Number of DeviceN components (%1) exceeded 32 + + nrComponents + @@ -296,8 +318,10 @@ A conforming file shall not contain a CID value greater than 65535. maximalCID <= 65535 - Maximum value of a CID (65535) is exceeded - + Value of a CID (%1) exceeded 65,535 + + maximalCID + @@ -367,7 +391,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. S != 'GTS_PDFX' || containsDestOutputProfileRef == false - The output intent dictionary contains forbidden entry DestOutputProfileRef + The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef @@ -474,8 +498,10 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An ExtGState dictionary contains the TR2 key with a value other than Default - + An ExtGState dictionary contains the TR2 key with value %1 other than Default + + TR2 + @@ -494,8 +520,10 @@ All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - A Halftone has type other than 1 or 5 - + A Halftone has type %1 instead of 1 or 5 + + HalftoneType + @@ -529,8 +557,10 @@ Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - A rendering intent with non-standard value is used - + A rendering intent with non-standard value %1 is used + + internalRepresentation + @@ -570,8 +600,10 @@ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 - JPEG2000 image has number of colour channels different from 1, 3 or 4. - + JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 + + nrColorChannels + @@ -660,8 +692,10 @@ internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" - The document uses the blend mode not defined in ISO 32000-1:2008 - + The document uses the blend mode %1 not defined in ISO 32000-1:2008 + + internalRepresentation + @@ -688,8 +722,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + @@ -707,8 +743,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + @@ -788,8 +826,10 @@ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + @@ -846,8 +886,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + @@ -859,8 +901,11 @@ in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -884,8 +929,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + @@ -996,8 +1043,11 @@ shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and + does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + @@ -1022,8 +1072,10 @@ Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + @@ -1034,8 +1086,10 @@ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null - A dictionary of a non-Popup annotation does not contain F key - + A dictionary of %1 annotation does not contain F key + + Subtype + @@ -1162,8 +1216,10 @@ Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + @@ -1174,8 +1230,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted named action - + Unknown or not permitted named action %1 + + N + @@ -1253,8 +1311,10 @@ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" - The XMP package uses an encoding different from UTF-8 - + The XMP package uses encoding %1 different from UTF-8 + + actualEncoding + @@ -1411,8 +1471,10 @@ If the MIME type is not known, the "application/octet-stream" shall be used. Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - The MIME type information (Subtype entry) of an embedded file is missing or invalid - + MIME type %1 of an embedded file is missing or invalid + + Subtype + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 65dc9cd3..2d9c05f9 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -77,8 +77,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - A hexadecimal string contains odd number of non-white-space characters - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + @@ -138,8 +140,10 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity") - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + @@ -149,7 +153,7 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct Utf8 byte sequence + The name object does not represent a correct UTF-8 character sequence @@ -181,8 +185,10 @@ internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses LZW, Crypt or one of the unknown filters - + Inline image uses not permitted or unknown filter %1 + + internalRepresentation + @@ -216,8 +222,10 @@ A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. (intValue <= 2147483647) && (intValue >= -2147483648) - Integer value out of range - + Integer value %1 out of range + + intValue + @@ -226,8 +234,10 @@ A conforming file shall not contain any real number outside the range of +/-3.403 x 10^38 (realValue >= -3.403e+38) && (realValue <= 3.403e+38) - Real value out of range - + Real value %1 out of range + + realValue + @@ -236,8 +246,10 @@ A conforming file shall not contain any string longer than 32767 bytes. value.length() < 32768 - Maximum length of a String (32767) exceeded - + String length (%1) exceeded 32767 + + value.length() + @@ -246,8 +258,10 @@ A conforming file shall not contain any name longer than 127 bytes. internalRepresentation.length() <= 127 - Maximum length of a Name (127) exceeded - + Name length (%1) exceeded 127 + + internalRepresentation.length() + @@ -256,8 +270,10 @@ A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) - Non-zero real value is too close to 0.0 - + Non-zero real value %1 is too close to 0.0 + + realValue + @@ -266,8 +282,10 @@ A conforming file shall not contain more than 8388607 indirect objects nrIndirects <= 8388607 - Maximum number of indirect objects (8,388,607) in a PDF file exceeded - + Number of indirect objects in a PDF file (%1) exceeded 8,388,607 + + nrIndirects + @@ -276,8 +294,10 @@ A conforming file shall not nest q/Q pairs by more than 28 nesting levels nestingLevel <= 28 - Maximum depth of graphics state nesting (q and Q operators) is exceeded - + Depth of graphics state nesting of q/Q operators (%1) exceeded 28 + + nestingLevel + @@ -286,8 +306,10 @@ A conforming file shall not contain a DeviceN colour space with more than 32 colourants. nrComponents <= 32 - Maximum number of DeviceN components (32) is exceeded - + Number of DeviceN components (%1) exceeded 32 + + nrComponents + @@ -296,8 +318,10 @@ A conforming file shall not contain a CID value greater than 65535. maximalCID <= 65535 - Maximum value of a CID (65535) is exceeded - + Value of a CID (%1) exceeded 65,535 + + maximalCID + @@ -367,7 +391,7 @@ In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. S != 'GTS_PDFX' || containsDestOutputProfileRef == false - The output intent dictionary contains forbidden entry DestOutputProfileRef + The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef @@ -474,8 +498,10 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - An ExtGState dictionary contains the TR2 key with a value other than Default - + An ExtGState dictionary contains the TR2 key with value %1 other than Default + + TR2 + @@ -494,8 +520,10 @@ All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - A Halftone has type other than 1 or 5 - + A Halftone has type %1 instead of 1 or 5 + + HalftoneType + @@ -529,8 +557,10 @@ Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - A rendering intent with non-standard value is used - + A rendering intent with non-standard value %1 is used + + internalRepresentation + @@ -570,8 +600,10 @@ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 - JPEG2000 image has number of colour channels different from 1, 3 or 4. - + JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 + + nrColorChannels + @@ -660,8 +692,10 @@ internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" - The document uses the blend mode not defined in ISO 32000-1:2008 - + The document uses the blend mode %1 not defined in ISO 32000-1:2008 + + internalRepresentation + @@ -688,8 +722,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + @@ -707,8 +743,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + @@ -788,8 +826,10 @@ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + @@ -846,8 +886,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + @@ -859,8 +901,11 @@ in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -884,8 +929,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + @@ -996,8 +1043,11 @@ shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and + does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + @@ -1045,8 +1095,10 @@ Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + @@ -1057,8 +1109,10 @@ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null - A dictionary of a non-Popup annotation does not contain F key - + A dictionary of %1 annotation does not contain F key + + Subtype + @@ -1185,8 +1239,10 @@ Additionally, the deprecated set-state and no-op actions shall not be permitted. S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + @@ -1197,8 +1253,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted named action - + Unknown or not permitted named action %1 + + N + @@ -1276,8 +1334,10 @@ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" - The XMP package uses an encoding different from UTF-8 - + The XMP package uses encoding %1 different from UTF-8 + + actualEncoding + @@ -1434,8 +1494,10 @@ If the MIME type is not known, the "application/octet-stream" shall be used. Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - The MIME type information (Subtype entry) of an embedded file is missing or invalid - + MIME type %1 of an embedded file is missing or invalid + + Subtype + diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 17f03a31..d45e158b 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -97,8 +97,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - The number of hexadecimal digits in a hexadecimal string shall always be even - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + @@ -147,8 +149,10 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity") - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + @@ -160,7 +164,7 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct Utf8 byte sequence + The name object does not represent a correct UTF-8 character sequence @@ -192,8 +196,10 @@ internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses LZW, Crypt or one of the unknown filters - + Inline image uses not permitted or unknown filter %1 + + internalRepresentation + @@ -218,8 +224,10 @@ character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. Version == null || /^2\.[0-9]$/.test(Version) - The Version key is present and does not comply with the requirements of PDF/A-4 specification. - + The Version key with value %1 does not comply with the requirements of PDF/A-4 specification. + + Version + @@ -426,8 +434,10 @@ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - A graphics state parameter dictionary contains the TR2 key with a value other than Default - + A graphics state parameter dictionary contains the TR2 key with value %1 other than Default + + TR2 + @@ -436,7 +446,7 @@ A graphics state parameter dictionary shall not contain the HTO key containsHTO == false - A graphics state parameter dictionary contains the HTP key + A graphics state parameter dictionary contains the HTO key @@ -446,8 +456,10 @@ All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - A Halftone has type other than 1 or 5 - + A Halftone has type %1 instead of 1 or 5 + + HalftoneType + @@ -511,8 +523,10 @@ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 - JPEG2000 image has number of colour channels different from 1, 3 or 4. - + JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 + + nrColorChannels + @@ -592,8 +606,10 @@ internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" - The document uses the blend mode not defined in ISO 32000-2:2020 - + The document uses the blend mode %1 not defined in ISO 32000-2:2020 + + internalRepresentation + @@ -621,8 +637,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + @@ -640,8 +658,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + @@ -721,8 +741,10 @@ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + @@ -781,8 +803,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + @@ -794,8 +818,11 @@ shall be identical to the WMode value in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -819,8 +846,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + @@ -963,8 +992,10 @@ Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + @@ -975,8 +1006,10 @@ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null - A dictionary of a non-Popup annotation does not contain F key - + A dictionary of %1 annotation does not contain F key + + Subtype + @@ -1068,8 +1101,10 @@ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + @@ -1080,8 +1115,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted named action - + Unknown or not permitted named action %1 + + N + @@ -1151,8 +1188,10 @@ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" - The XMP package uses an encoding different from UTF-8 - + The XMP package uses encoding %1 different from UTF-8 + + actualEncoding + @@ -1207,8 +1246,10 @@ The value of pdfaid:rev shall be the four digit year. /^\d{4}$/.test(rev) - The value of pdfaid:rev not the four digit year. - + The value of pdfaid:rev (%1) not the four digit year. + + rev + @@ -1218,8 +1259,10 @@ If the MIME type is not known, the value "application/octet-stream" shall be used. Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - The MIME type information (Subtype entry) of an embedded file is missing or invalid - + MIME type %1 of an embedded file is missing or invalid + + Subtype + diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 88ade63b..968511c9 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -139,9 +139,11 @@ is either U3D or PRC as described in Annex B. Subtype == 'U3D' || Subtype == 'PRC' - The Subtype entry in the 3D stream dictionary (ISO 32000-2:2020, 13.6.3) has a value that is - neither U3D nor PRC. - + The Subtype entry in the 3D stream dictionary (ISO 32000-2:2020, 13.6.3) has value %1 that is + neither U3D nor PRC + + Subtype + @@ -161,8 +163,10 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity") - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + @@ -174,7 +178,7 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct Utf8 byte sequence + The name object does not represent a correct UTF-8 character sequence @@ -206,8 +210,10 @@ internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses LZW, Crypt or one of the unknown filters - + Inline image uses not permitted or unknown filter %1 + + internalRepresentation + @@ -232,8 +238,10 @@ character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. Version == null || /^2\.[0-9]$/.test(Version) - The Version key is present and does not comply with the requirements of PDF/A-4 specification. - + The Version key with value %1 does not comply with the requirements of PDF/A-4 specification. + + Version + @@ -440,8 +448,10 @@ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - A graphics state parameter dictionary contains the TR2 key with a value other than Default - + A graphics state parameter dictionary contains the TR2 key with value %1 other than Default + + TR2 + @@ -450,7 +460,7 @@ A graphics state parameter dictionary shall not contain the HTO key containsHTO == false - A graphics state parameter dictionary contains the HTP key + A graphics state parameter dictionary contains the HTO key @@ -460,8 +470,10 @@ All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - A Halftone has type other than 1 or 5 - + A Halftone has type %1 instead of 1 or 5 + + HalftoneType + @@ -525,8 +537,10 @@ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 - JPEG2000 image has number of colour channels different from 1, 3 or 4. - + JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 + + nrColorChannels + @@ -606,8 +620,10 @@ internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" - The document uses the blend mode not defined in ISO 32000-2:2020 - + The document uses the blend mode %1 not defined in ISO 32000-2:2020 + + internalRepresentation + @@ -635,8 +651,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + @@ -654,8 +672,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + @@ -735,8 +755,10 @@ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + @@ -795,8 +817,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + @@ -808,8 +832,11 @@ shall be identical to the WMode value in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -833,8 +860,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + @@ -978,8 +1007,10 @@ Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "3D" || Subtype == "Projection" || Subtype == "RichMedia" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + @@ -990,8 +1021,10 @@ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null - A dictionary of a non-Popup annotation does not contain F key - + A dictionary of %1 annotation does not contain F key + + Subtype + @@ -1085,8 +1118,10 @@ S == "SubmitForm" || S == "SetOCGState" || S == "GoTo3DView" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + @@ -1097,8 +1132,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted named action - + Unknown or not permitted named action %1 + + N + @@ -1168,8 +1205,10 @@ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" - The XMP package uses an encoding different from UTF-8 - + The XMP package uses encoding %1 different from UTF-8 + + actualEncoding + @@ -1226,8 +1265,10 @@ The value of pdfaid:rev shall be the four digit year. /^\d{4}$/.test(rev) - The value of pdfaid:rev not the four digit year. - + The value of pdfaid:rev (%1) not the four digit year. + + rev + @@ -1237,8 +1278,10 @@ If the MIME type is not known, the value "application/octet-stream" shall be used. Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - The MIME type information (Subtype entry) of an embedded file is missing or invalid - + MIME type %1 of an embedded file is missing or invalid + + Subtype + diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 2000d5cf..90048316 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -97,8 +97,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - The number of hexadecimal digits in a hexadecimal string shall always be even - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + @@ -147,8 +149,10 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity") - LZW compression is used - + Unknown or not permitted Stream filter %1 is used + + internalRepresentation + @@ -160,7 +164,7 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct Utf8 byte sequence + The name object does not represent a correct UTF-8 character sequence @@ -192,8 +196,10 @@ internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses LZW, Crypt or one of the unknown filters - + Inline image uses not permitted or unknown filter %1 + + internalRepresentation + @@ -218,8 +224,10 @@ character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. Version == null || /^2\.[0-9]$/.test(Version) - The Version key is present and does not comply with the requirements of PDF/A-4 specification. - + The Version key with value %1 does not comply with the requirements of PDF/A-4 specification. + + Version + @@ -426,8 +434,10 @@ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default TR2 == null || TR2 == "Default" - A graphics state parameter dictionary contains the TR2 key with a value other than Default - + A graphics state parameter dictionary contains the TR2 key with value %1 other than Default + + TR2 + @@ -436,7 +446,7 @@ A graphics state parameter dictionary shall not contain the HTO key containsHTO == false - A graphics state parameter dictionary contains the HTP key + A graphics state parameter dictionary contains the HTO key @@ -446,8 +456,10 @@ All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) - A Halftone has type other than 1 or 5 - + A Halftone has type %1 instead of 1 or 5 + + HalftoneType + @@ -511,8 +523,10 @@ The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 - JPEG2000 image has number of colour channels different from 1, 3 or 4. - + JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 + + nrColorChannels + @@ -592,8 +606,10 @@ internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" - The document uses the blend mode not defined in ISO 32000-2:2020 - + The document uses the blend mode %1 not defined in ISO 32000-2:2020 + + internalRepresentation + @@ -621,8 +637,10 @@ Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary Type == "Font" - A Font dictionary has missing or invalid Type entry - + A Font dictionary has value %1 of Type entry instead of Font + + Type + @@ -640,8 +658,10 @@ Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" - A Font dictionary has missing or invalid Subtype entry - + Invalid Subtype entry in font dictionary with value %1 + + Subtype + @@ -721,8 +741,10 @@ in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" - Unsupported font file format of the embedded font - + Unsupported font file format %1 of the embedded font + + fontFileSubtype + @@ -781,8 +803,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + @@ -794,8 +818,11 @@ shall be identical to the WMode value in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -819,8 +846,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + @@ -964,8 +993,10 @@ Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection" - Unknown or not permitted annotation type - + Unknown or not permitted Annotation type %1 + + Subtype + @@ -976,8 +1007,10 @@ Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. Subtype == "Popup" || F != null - A dictionary of a non-Popup annotation does not contain F key - + A dictionary of %1 annotation does not contain F key + + Subtype + @@ -1069,8 +1102,10 @@ S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" - Unknown or not permitted action type - + Unknown or not permitted Action type %1 + + S + @@ -1081,8 +1116,10 @@ Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" - Unknown or not permitted named action - + Unknown or not permitted named action %1 + + N + @@ -1152,8 +1189,10 @@ All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. actualEncoding == "UTF-8" - The XMP package uses an encoding different from UTF-8 - + The XMP package uses encoding %1 different from UTF-8 + + actualEncoding + @@ -1210,8 +1249,10 @@ The value of pdfaid:rev shall be the four digit year. /^\d{4}$/.test(rev) - The value of pdfaid:rev not the four digit year. - + The value of pdfaid:rev (%1) not the four digit year. + + rev + @@ -1221,8 +1262,10 @@ If the MIME type is not known, the value "application/octet-stream" shall be used. Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) - The MIME type information (Subtype entry) of an embedded file is missing or invalid - + MIME type %1 of an embedded file is missing or invalid + + Subtype + diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml index 2fdc963b..c6302a3a 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml @@ -12,7 +12,7 @@ The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. part == 1 - The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA conforming file. + The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file. part diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml index 4e731bd7..c2e449ca 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml @@ -12,8 +12,11 @@ Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentType == 'Annot' - An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag - + %1 annotation is nested within %2 tag instead of Annot + + Subtype + structParentType + diff --git a/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml index 1bfaf124..02aa859f 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml @@ -11,8 +11,10 @@ Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. annots_size == 0 || Tabs == 'S' - A page containing an annotation does not contain a Tabs key or has a Tabs key with a value other than S. - + A page containing an annotation contains a Tabs key with value %1 instead of S. + + Tabs + diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml index 466b8443..00598fab 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml @@ -11,8 +11,10 @@ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. structParentType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - A widget annotation is not nested within a Form tag - + A Widget annotation is nested within %1 tag instead of Form + + structParentType + diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml index 8b108da3..1e753057 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml @@ -11,8 +11,10 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. structParentType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 - A link annotation is not nested within a Link tag - + A Link annotation is nested within %1 tag instead of Link + + structParentType + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml index 137ea908..726c732b 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml @@ -15,7 +15,10 @@ A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Value of the Lang entry is not Language-Tag + Value %1 of the Lang entry is not Language-Tag + + unicodeValue + diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml index ad1cdec7..86b260f8 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml @@ -28,8 +28,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml index d1f0f54b..d1c2e5f4 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml @@ -13,8 +13,11 @@ in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml index 3cb3ac35..3db14ee7 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml @@ -26,8 +26,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml index 34c97998..7b0e599f 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml @@ -13,8 +13,11 @@ shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and + does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index ba330f33..23cbfceb 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -21,7 +21,7 @@ The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. part == 1 - The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA conforming file. + The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file. part @@ -449,8 +449,10 @@ A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Value of the Lang entry is not Language-Tag - + Value %1 of the Lang entry is not Language-Tag + + unicodeValue + @@ -711,8 +713,11 @@ Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentType == 'Annot' - An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag - + %1 annotation is nested within %2 tag instead of Annot + + Subtype + structParentType + @@ -761,8 +766,10 @@ Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. annots_size == 0 || Tabs == 'S' - A page containing an annotation does not contain a Tabs key or has a Tabs key with a value other than S. - + A page containing an annotation contains a Tabs key with value %1 instead of S. + + Tabs + @@ -771,8 +778,10 @@ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. structParentType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - A widget annotation is not nested within a Form tag - + A Widget annotation is nested within %1 tag instead of Form + + structParentType + @@ -783,8 +792,10 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. structParentType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 - A link annotation is not nested within a Link tag - + A Link annotation is nested within %1 tag instead of Link + + structParentType + @@ -913,8 +924,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + @@ -926,8 +939,11 @@ in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -951,8 +967,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + @@ -1063,8 +1081,11 @@ shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and + does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 7b2b27c6..389dcf4c 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -29,7 +29,7 @@ Underlined text - parentsStandardTypes.split('&').filter(elem => elem == 'Link').length > 0 || isUnderlined == false + parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 || isUnderlined == false Underlined text is detected @@ -554,7 +554,7 @@ The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. part == 1 - The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA conforming file. + The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file. part @@ -981,8 +981,10 @@ A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Value of the Lang entry is not Language-Tag - + Value %1 of the Lang entry is not Language-Tag + + unicodeValue + @@ -1243,8 +1245,11 @@ Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentType == 'Annot' - An annotation, excluding annotations of subtype Widget, Popup or Link, is not nested within an Annot tag - + %1 annotation is nested within %2 tag instead of Annot + + Subtype + structParentType + @@ -1293,8 +1298,10 @@ Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. annots_size == 0 || Tabs == 'S' - A page containing an annotation does not contain a Tabs key or has a Tabs key with a value other than S. - + A page containing an annotation contains a Tabs key with value %1 instead of S. + + Tabs + @@ -1303,8 +1310,10 @@ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. structParentType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - A widget annotation is not nested within a Form tag - + A Widget annotation is nested within %1 tag instead of Form + + structParentType + @@ -1315,8 +1324,10 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. structParentType == 'Link' || structParentType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2 - A link annotation is not nested within a Link tag - + A Link annotation is nested within %1 tag instead of Link + + structParentType + @@ -1433,8 +1444,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" || embeddedFile_size == 1 - A non-standard CMap is not embedded - + A non-standard CMap %1 is not embedded + + CMapName + @@ -1446,8 +1459,11 @@ in the embedded CMap stream. WMode == dictWMode - WMode entry in the embedded CMap and in the CMap dictionary are not identical - + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + @@ -1471,8 +1487,10 @@ CMapName == "KSCpc-EUC-H" || CMapName == "UniKS-UCS2-H" || CMapName == "UniKS-UCS2-V" || CMapName == "UniKS-UTF16-H" || CMapName == "UniKS-UTF16-V" - A CMap references another non-standard CMap - + A CMap references another non-standard CMap %1 + + CMapName + @@ -1580,8 +1598,11 @@ shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains more than one cmap subtable - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and + does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 900d31f4..233196b4 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -29,7 +29,7 @@ Underlined text - parentsStandardTypes.split('&').filter(elem => elem == 'Link').length > 0 || isUnderlined == false + parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 || isUnderlined == false Underlined text is detected From 0beb4d921e9aff9e76b5e28bdb7c042c632f4451 Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Tue, 24 May 2022 11:58:10 +0300 Subject: [PATCH 406/557] Added workflows to update profiles in veraPDF-library --- .../update-PDFA-profiles-workflow.yml | 43 +++++++++++++++++++ .../update-PDFUA-profile-workflow.yml | 31 +++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 .github/workflows/update-PDFA-profiles-workflow.yml create mode 100644 .github/workflows/update-PDFUA-profile-workflow.yml diff --git a/.github/workflows/update-PDFA-profiles-workflow.yml b/.github/workflows/update-PDFA-profiles-workflow.yml new file mode 100644 index 00000000..ed07db7c --- /dev/null +++ b/.github/workflows/update-PDFA-profiles-workflow.yml @@ -0,0 +1,43 @@ +name: Update PDF_A profiles in veraPDF-library + +on: + push: + branches: + [ integration ] + paths: + - 'PDF_A/**' + - '!PDF_A/1a/**' + - '!PDF_A/1b/**' + - '!PDF_A/2a/**' + - '!PDF_A/2b/**' + - '!PDF_A/2u/**' + - '!PDF_A/3a/**' + - '!PDF_A/3b/**' + - '!PDF_A/3u/**' + - '!PDF_A/4/**' + - '!PDF_A/4e/**' + - '!PDF_A/4f/**' + +jobs: + update-files: + if: github.repository == 'veraPDF/veraPDF-validation-profiles' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Set up JDK 1.11 + uses: actions/setup-java@v1 + with: + java-version: 1.11 + - name: Commit to veraPDF-library + uses: drud/action-cross-commit@master + with: + source-folder: PDF_A + destination-repository: https://veraPDF:${{ secrets.WORKFLOW_TOKEN }}@github.com/veraPDF/veraPDF-library + destination-folder: core/src/main/resources/org/verapdf/pdfa/validation + destination-branch: integration + git-user: "Git User" + git-commit-message: ${{ github.event.head_commit.message }} + git-commit-sign-off: "false" + excludes: 1a:1b:2a:2b:2u:3a:3b:3u:4:4e:4f:PDFUA-1.xml:validationProfile.xsd diff --git a/.github/workflows/update-PDFUA-profile-workflow.yml b/.github/workflows/update-PDFUA-profile-workflow.yml new file mode 100644 index 00000000..a0889585 --- /dev/null +++ b/.github/workflows/update-PDFUA-profile-workflow.yml @@ -0,0 +1,31 @@ +name: Update PDF_UA profile in veraPDF-library + +on: + push: + branches: + [ integration ] + paths: + - 'PDF_UA/PDFUA-1.xml' + +jobs: + update-files: + if: github.repository == 'veraPDF/veraPDF-validation-profiles' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Set up JDK 1.11 + uses: actions/setup-java@v1 + with: + java-version: 1.11 + - name: Commit to veraPDF-library + uses: drud/action-cross-commit@master + with: + source-folder: PDF_UA/PDFUA-1.xml + destination-repository: https://veraPDF:${{ secrets.WORKFLOW_TOKEN }}@github.com/veraPDF/veraPDF-library + destination-folder: core/src/main/resources/org/verapdf/pdfa/validation + destination-branch: integration + git-user: "Git User" + git-commit-message: ${{ github.event.head_commit.message }} + git-commit-sign-off: "false" From d7b941f85712e2f914168c2bf968fa47df0b3d20 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 24 May 2022 14:15:28 +0300 Subject: [PATCH 407/557] PDF/A validation. Fix rules 6.2.4.2-3, 6.2.10.2-6 --- .../6.3.2 Font types/verapdf-profile-6-3-2-t06.xml | 7 +++++-- .../6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml | 7 +++++-- .../6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml | 7 +++++-- .../verapdf-profile-6-2-4-2-t03.xml | 2 +- PDF_A/PDFA-1A.xml | 7 +++++-- PDF_A/PDFA-1B.xml | 7 +++++-- PDF_A/PDFA-2A.xml | 7 +++++-- PDF_A/PDFA-2B.xml | 7 +++++-- PDF_A/PDFA-2U.xml | 7 +++++-- PDF_A/PDFA-3A.xml | 7 +++++-- PDF_A/PDFA-3B.xml | 7 +++++-- PDF_A/PDFA-3U.xml | 7 +++++-- PDF_A/PDFA-4.xml | 9 ++++++--- PDF_A/PDFA-4E.xml | 9 ++++++--- PDF_A/PDFA-4F.xml | 9 ++++++--- 15 files changed, 74 insertions(+), 32 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml index 0217615e..2d5b6fe3 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t06.xml @@ -13,8 +13,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml index d82bd386..2be32738 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml @@ -15,8 +15,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml index 17299790..a8cf63fb 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t06.xml @@ -15,8 +15,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml index 1e000a85..0befb123 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml @@ -15,7 +15,7 @@ ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) - An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + An ICCBased colour space is used where the profile is a CMYK destination profile and is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 144a1323..aca5c80e 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -636,8 +636,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 0aa11dfb..cffcf6f8 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -636,8 +636,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 5e8ea105..ee153c93 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -810,8 +810,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 43c71486..73db3673 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -810,8 +810,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 15e45d31..c4997bab 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -810,8 +810,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index f4569b20..ea3ab7a1 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -810,8 +810,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 2a1d24e0..c9cb63da 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -810,8 +810,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 2d9c05f9..6c2641f4 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -810,8 +810,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index d45e158b..226c4dd9 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -346,7 +346,7 @@ ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) - An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + An ICCBased colour space is used where the profile is a CMYK destination profile and is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. @@ -725,8 +725,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 968511c9..654a5f9f 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -360,7 +360,7 @@ ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) - An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + An ICCBased colour space is used where the profile is a CMYK destination profile and is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. @@ -739,8 +739,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 90048316..2f3ea37e 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -346,7 +346,7 @@ ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) - An ICCBased colour space shall not be used where the profile is a CMYK destination profile and + An ICCBased colour space is used where the profile is a CMYK destination profile and is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. @@ -725,8 +725,11 @@ Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) - Widths array is missing or has invalid size - + Widths array is missing or has invalid size %1 instead of %2 + + Widths_size + LastChar - FirstChar + 1 + From 5e02f438b55382b77a70120bf9a89ab2d7da981a Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Fri, 27 May 2022 14:24:08 +0300 Subject: [PATCH 408/557] WCAG validation. Fix rule 1.4.3-1 --- PDF_UA/WCAG-21-Complete.xml | 4 +++- PDF_UA/WCAG-21.xml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 389dcf4c..91e3275e 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -62,7 +62,9 @@ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) + parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 || + textSize < 4.5 || ((textSize >= 18.0 || + (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) contrastRatio = %1 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 233196b4..faebcab8 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -62,7 +62,9 @@ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) + parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 || + textSize < 4.5 || ((textSize >= 18.0 || + (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) contrastRatio = %1 From 4db529c2a97adb7d237da7b04967d5fb635e539b Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Sun, 29 May 2022 16:13:37 +0300 Subject: [PATCH 409/557] Fix error messages --- .../verapdf-profile-6-1-2-t01.xml | 7 +- .../verapdf-profile-6-1-3-t01.xml | 2 +- .../verapdf-profile-6-1-3-t03.xml | 6 +- .../verapdf-profile-6-1-2-t01.xml | 7 +- .../verapdf-profile-6-1-3-t01.xml | 2 +- .../verapdf-profile-6-1-3-t03.xml | 6 +- .../verapdf-profile-6-2-11-6-t01.xml | 6 +- .../verapdf-profile-6-2-3-t01.xml | 8 +- .../verapdf-profile-6-2-4-2-t02.xml | 6 +- .../verapdf-profile-6-2-4-4-t01.xml | 2 +- .../verapdf-profile-6-2-8-3-t02.xml | 6 +- .../verapdf-profile-6-1-2-t01.xml | 7 +- .../verapdf-profile-6-1-3-t01.xml | 2 +- .../verapdf-profile-6-1-3-t03.xml | 6 +- .../verapdf-profile-6-2-3-t01.xml | 8 +- .../verapdf-profile-6-2-4-2-t02.xml | 6 +- .../verapdf-profile-6-2-4-4-t01.xml | 2 +- .../verapdf-profile-6-2-7-3-t02.xml | 6 +- .../verapdf-profile-6-6-3-t01.xml | 2 +- PDF_A/PDFA-1A.xml | 15 ++- PDF_A/PDFA-1B.xml | 15 ++- PDF_A/PDFA-2A.xml | 43 ++++++--- PDF_A/PDFA-2B.xml | 43 ++++++--- PDF_A/PDFA-2U.xml | 43 ++++++--- PDF_A/PDFA-3A.xml | 43 ++++++--- PDF_A/PDFA-3B.xml | 43 ++++++--- PDF_A/PDFA-3U.xml | 43 ++++++--- PDF_A/PDFA-4.xml | 39 +++++--- PDF_A/PDFA-4E.xml | 39 +++++--- PDF_A/PDFA-4F.xml | 39 +++++--- .../7.2 Text/verapdf-profile-7-2-t03-t15.xml | 42 ++++++--- .../7.2 Text/verapdf-profile-7-2-t17-t20.xml | 18 ++-- .../7.2 Text/verapdf-profile-7-2-t26-t27.xml | 6 +- .../7.2 Text/verapdf-profile-7-2-t36-t38.xml | 22 +++-- .../verapdf-profile-7-21-6-t01.xml | 6 +- PDF_UA/PDFUA-1.xml | 94 ++++++++++++------- PDF_UA/WCAG-21-Complete.xml | 94 ++++++++++++------- 37 files changed, 523 insertions(+), 261 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml index e2f60b15..a032c76f 100644 --- a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -13,8 +13,11 @@ The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) - File header does not start at byte offset 0 or does not correctly identify the version of the PDF document - + File header %1 starts at byte offset %2 instead of 0 or does not correctly identify the version of the PDF document + + header + headerOffset + diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index d1afb43d..17045d94 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -12,7 +12,7 @@ as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - Missing ID in the document trailer + Missing or empty ID in the document trailer diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml index 3df8b347..1e60af7e 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -11,8 +11,10 @@ No data shall follow the last end-of-file marker except a single optional end-of-line marker. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml index 95f01f87..de36db43 100644 --- a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -13,8 +13,11 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification - + File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-2 specification + + header + headerOffset + diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index d39dec5a..c9991b28 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -11,7 +11,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 lastID != null && lastID.length() > 0 - Missing ID in the document trailer + Missing or empty ID in the document trailer diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml index ccb3445e..76975f0b 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -11,8 +11,10 @@ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml index 59cef01f..d0336b32 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml @@ -13,8 +13,10 @@ cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - + The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) + + nrCmaps + diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml index cdc9db73..866fb50d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml @@ -13,8 +13,12 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header - + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + + deviceClass + colorSpace + version + diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml index 7865e708..027a02ea 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml @@ -15,8 +15,10 @@ fill is set to true, or both. overprintFlag == false || OPM == 0 - Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting + + OPM + diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml index 34f49a8a..639ccf76 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml @@ -11,7 +11,7 @@ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml index 38894e7f..b5d88b90 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml @@ -13,8 +13,10 @@ specification that has the value 0x01 in the APPROX field. hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). - + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + + nrColorSpacesWithApproxField + diff --git a/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml index 2f7ded54..0adc943c 100644 --- a/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -13,8 +13,11 @@ where 'n' is a single digit number between 0 (30h) and 9 (39h) headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-4 specification - + File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-4 specification + + header + headerOffset + diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index ef4dbfc1..5ce725f6 100644 --- a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -11,7 +11,7 @@ File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary lastID != null && lastID.length() > 0 - Missing ID in the document trailer + Missing or empty ID in the document trailer diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml index 0c58af9d..4ae03de6 100644 --- a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -11,8 +11,10 @@ No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml index 1245bde2..8b4e3d01 100644 --- a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml @@ -13,8 +13,12 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header - + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + + deviceClass + colorSpace + version + diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml index 17879492..050c1c3a 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml @@ -15,8 +15,10 @@ fill is set to true, or both. overprintFlag == false || OPM == 0 - Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting + + OPM + diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml index 58ce7526..e9402136 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml @@ -11,7 +11,7 @@ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml index 9ef4bddf..243cacdf 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml @@ -13,8 +13,10 @@ specification that has the value 0x01 in the APPROX field. hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). - + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + + nrColorSpacesWithApproxField + diff --git a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml index e5a7e050..51c2d1c7 100644 --- a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml +++ b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml @@ -16,7 +16,7 @@ containsOtherActions == false A document catalog dictionary include an AA entry and its value (which is an additional-actions - dictionary) contains key not from the following list: E, X, D, U, Fo, and Bl + dictionary) contains key(s) not from the following list: E, X, D, U, Fo, and Bl diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index aca5c80e..7c013c5e 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -12,8 +12,11 @@ The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) - File header does not start at byte offset 0 or does not correctly identify the version of the PDF document - + File header %1 starts at byte offset %2 instead of 0 or does not correctly identify the version of the PDF document + + header + headerOffset + @@ -36,7 +39,7 @@ as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - Missing ID in the document trailer + Missing or empty ID in the document trailer @@ -56,8 +59,10 @@ No data shall follow the last end-of-file marker except a single optional end-of-line marker. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index cffcf6f8..96b49000 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -12,8 +12,11 @@ The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) - File header does not start at byte offset 0 or does not correctly identify the version of the PDF document - + File header %1 starts at byte offset %2 instead of 0 or does not correctly identify the version of the PDF document + + header + headerOffset + @@ -36,7 +39,7 @@ as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - Missing ID in the document trailer + Missing or empty ID in the document trailer @@ -56,8 +59,10 @@ No data shall follow the last end-of-file marker except a single optional end-of-line marker. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index ee153c93..cd9b8583 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -12,8 +12,11 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification - + File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-2 specification + + header + headerOffset + @@ -33,7 +36,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 lastID != null && lastID.length() > 0 - Missing ID in the document trailer + Missing or empty ID in the document trailer @@ -55,8 +58,10 @@ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + @@ -366,8 +371,12 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header - + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + + deviceClass + colorSpace + version + @@ -418,8 +427,10 @@ fill is set to true, or both. overprintFlag == false || OPM == 0 - Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting + + OPM + @@ -463,7 +474,7 @@ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -613,8 +624,10 @@ specification that has the value 0x01 in the APPROX field. hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). - + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + + nrColorSpacesWithApproxField + @@ -1008,8 +1021,10 @@ cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - + The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) + + nrCmaps + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 73db3673..e6e8553e 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -12,8 +12,11 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification - + File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-2 specification + + header + headerOffset + @@ -33,7 +36,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 lastID != null && lastID.length() > 0 - Missing ID in the document trailer + Missing or empty ID in the document trailer @@ -55,8 +58,10 @@ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + @@ -366,8 +371,12 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header - + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + + deviceClass + colorSpace + version + @@ -418,8 +427,10 @@ fill is set to true, or both. overprintFlag == false || OPM == 0 - Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting + + OPM + @@ -463,7 +474,7 @@ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -613,8 +624,10 @@ specification that has the value 0x01 in the APPROX field. hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). - + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + + nrColorSpacesWithApproxField + @@ -1008,8 +1021,10 @@ cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - + The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) + + nrCmaps + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index c4997bab..d0f85f3a 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -12,8 +12,11 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-2 specification - + File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-2 specification + + header + headerOffset + @@ -33,7 +36,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 lastID != null && lastID.length() > 0 - Missing ID in the document trailer + Missing or empty ID in the document trailer @@ -55,8 +58,10 @@ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + @@ -366,8 +371,12 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header - + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + + deviceClass + colorSpace + version + @@ -418,8 +427,10 @@ fill is set to true, or both. overprintFlag == false || OPM == 0 - Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting + + OPM + @@ -463,7 +474,7 @@ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -613,8 +624,10 @@ specification that has the value 0x01 in the APPROX field. hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). - + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + + nrColorSpacesWithApproxField + @@ -1008,8 +1021,10 @@ cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - + The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) + + nrCmaps + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ea3ab7a1..59184ebb 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -12,8 +12,11 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-3 specification - + File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-3 specification + + header + headerOffset + @@ -33,7 +36,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 lastID != null && lastID.length() > 0 - Missing ID in the document trailer + Missing or empty ID in the document trailer @@ -55,8 +58,10 @@ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + @@ -366,8 +371,12 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header - + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + + deviceClass + colorSpace + version + @@ -418,8 +427,10 @@ fill is set to true, or both. overprintFlag == false || OPM == 0 - Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting + + OPM + @@ -463,7 +474,7 @@ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -613,8 +624,10 @@ specification that has the value 0x01 in the APPROX field. hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). - + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + + nrColorSpacesWithApproxField + @@ -1008,8 +1021,10 @@ cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - + The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) + + nrCmaps + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index c9cb63da..06e8bf4c 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -12,8 +12,11 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-3 specification - + File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-3 specification + + header + headerOffset + @@ -33,7 +36,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 lastID != null && lastID.length() > 0 - Missing ID in the document trailer + Missing or empty ID in the document trailer @@ -55,8 +58,10 @@ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + @@ -366,8 +371,12 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header - + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + + deviceClass + colorSpace + version + @@ -418,8 +427,10 @@ fill is set to true, or both. overprintFlag == false || OPM == 0 - Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting + + OPM + @@ -463,7 +474,7 @@ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -613,8 +624,10 @@ specification that has the value 0x01 in the APPROX field. hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). - + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + + nrColorSpacesWithApproxField + @@ -1008,8 +1021,10 @@ cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - + The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) + + nrCmaps + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 6c2641f4..5e2e2024 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -12,8 +12,11 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-3 specification - + File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-3 specification + + header + headerOffset + @@ -33,7 +36,7 @@ The file trailer dictionary shall contain the ID keyword whose value shall be File Identifiers as defined in ISO 32000-1:2008, 14.4 lastID != null && lastID.length() > 0 - Missing ID in the document trailer + Missing or empty ID in the document trailer @@ -55,8 +58,10 @@ No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + @@ -366,8 +371,12 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header - + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + + deviceClass + colorSpace + version + @@ -418,8 +427,10 @@ fill is set to true, or both. overprintFlag == false || OPM == 0 - Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting + + OPM + @@ -463,7 +474,7 @@ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -613,8 +624,10 @@ specification that has the value 0x01 in the APPROX field. hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). - + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + + nrColorSpacesWithApproxField + @@ -1008,8 +1021,10 @@ cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - + The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) + + nrCmaps + diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 226c4dd9..b284a6d0 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -12,8 +12,11 @@ where 'n' is a single digit number between 0 (30h) and 9 (39h) headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-4 specification - + File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-4 specification + + header + headerOffset + @@ -33,7 +36,7 @@ File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary lastID != null && lastID.length() > 0 - Missing ID in the document trailer + Missing or empty ID in the document trailer @@ -55,8 +58,10 @@ No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + @@ -279,8 +284,12 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header - + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + + deviceClass + colorSpace + version + @@ -331,8 +340,10 @@ fill is set to true, or both. overprintFlag == false || OPM == 0 - Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting + + OPM + @@ -397,7 +408,7 @@ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -536,8 +547,10 @@ specification that has the value 0x01 in the APPROX field. hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). - + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + + nrColorSpacesWithApproxField + @@ -1135,7 +1148,7 @@ containsOtherActions == false A document catalog dictionary include an AA entry and its value (which is an additional-actions - dictionary) contains key not from the following list: E, X, D, U, Fo, and Bl + dictionary) contains key(s) not from the following list: E, X, D, U, Fo, and Bl diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 654a5f9f..406214ce 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -12,8 +12,11 @@ where 'n' is a single digit number between 0 (30h) and 9 (39h) headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-4 specification - + File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-4 specification + + header + headerOffset + @@ -33,7 +36,7 @@ File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary lastID != null && lastID.length() > 0 - Missing ID in the document trailer + Missing or empty ID in the document trailer @@ -55,8 +58,10 @@ No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + @@ -293,8 +298,12 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header - + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + + deviceClass + colorSpace + version + @@ -345,8 +354,10 @@ fill is set to true, or both. overprintFlag == false || OPM == 0 - Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting + + OPM + @@ -411,7 +422,7 @@ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -550,8 +561,10 @@ specification that has the value 0x01 in the APPROX field. hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). - + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + + nrColorSpacesWithApproxField + @@ -1152,7 +1165,7 @@ containsOtherActions == false A document catalog dictionary include an AA entry and its value (which is an additional-actions - dictionary) contains key not from the following list: E, X, D, U, Fo, and Bl + dictionary) contains key(s) not from the following list: E, X, D, U, Fo, and Bl diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 2f3ea37e..aba78e13 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -12,8 +12,11 @@ where 'n' is a single digit number between 0 (30h) and 9 (39h) headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) - File header does not start at byte offset 0 or does not comply with the requirements of PDF/A-4 specification - + File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-4 specification + + header + headerOffset + @@ -33,7 +36,7 @@ File identifiers shall be defined by the ID entry in a PDF file’s trailer dictionary lastID != null && lastID.length() > 0 - Missing ID in the document trailer + Missing or empty ID in the document trailer @@ -55,8 +58,10 @@ No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. postEOFDataSize == 0 - Data is present after the last end-of-file marker - + %1 byte(s) of data is present after the last end-of-file marker + + postEOFDataSize + @@ -279,8 +284,12 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header - + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + + deviceClass + colorSpace + version + @@ -331,8 +340,10 @@ fill is set to true, or both. overprintFlag == false || OPM == 0 - Overprint mode (OPM) is set to 1 when an ICCBased CMYK colour space is used with enabled overprinting - + Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting + + OPM + @@ -397,7 +408,7 @@ For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. areColorantsPresent == true - A colorant of the DeviceN color space is not defined in the Colorants dictionary + A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -536,8 +547,10 @@ specification that has the value 0x01 in the APPROX field. hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains more than one colour specification with the best colour fidelity (value 0x01 in the APPROX field). - + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + + nrColorSpacesWithApproxField + @@ -1136,7 +1149,7 @@ containsOtherActions == false A document catalog dictionary include an AA entry and its value (which is an additional-actions - dictionary) contains key not from the following list: E, X, D, U, Fo, and Bl + dictionary) contains key(s) not from the following list: E, X, D, U, Fo, and Bl diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml index 6b1d668a..4f83d575 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml @@ -27,8 +27,10 @@ TR element should contained in Table, THead, TBody or TFoot element /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) - TR element not contained in Table, THead, TBody and TFoot element - + TR element contained in %1 instead of Table, THead, TBody or TFoot element + + parentStandardType + @@ -39,8 +41,10 @@ THead element should contained in Table element parentStandardType == 'Table' - THead element not contained in Table element - + THead element contained in %1 instead of Table element + + parentStandardType + @@ -51,8 +55,10 @@ TBody element should contained in Table element parentStandardType == 'Table' - TBody element not contained in Table element - + TBody element contained in %1 instead of Table element + + parentStandardType + @@ -63,8 +69,10 @@ TFoot element should contained in Table element parentStandardType == 'Table' - TFoot element not contained in Table element - + TFoot element contained in %1 instead of Table element + + parentStandardType + @@ -75,8 +83,10 @@ TH element should contained in TR element parentStandardType == 'TR' - TH element not contained in TR element - + TH element contained in %1 instead of TR element + + parentStandardType + @@ -87,8 +97,10 @@ TD element should contained in TR element parentStandardType == 'TR' - TD element not contained in TR element - + TD element contained in %1 instead of TR element + + parentStandardType + @@ -99,8 +111,10 @@ TR element may contain only TH and TD elements /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - TR element contains not a TH or TD elements - + TR element contains %1 element(s) instead of TH or TD + + kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml index dfd5eb48..dc0a495b 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml @@ -11,8 +11,10 @@ LI element should contained in L element parentStandardType == 'L' - LI element not contained in L element - + LI element contained in %1 instead of L element + + parentStandardType + @@ -23,8 +25,10 @@ LBody element should contained in LI element parentStandardType == 'LI' - LBody element not contained in LI element - + LBody element contained in %1 instead of LI element + + parentStandardType + @@ -48,8 +52,10 @@ LI element may contain only Lbl and LBody elements /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - LI element contains not a Lbl or LBody elements - + LI element contains %1 element(s) instead of Lbl or LBody + + kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml index 7c4c4bc0..4cdbbd00 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml @@ -11,8 +11,10 @@ TOCI element should contained in TOC element parentStandardType == 'TOC' - TOCI element not contained in TOC element - + TOCI element contained in %1 instead of TOC element + + parentStandardType + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml index f1fcd4af..66c04df0 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml @@ -9,10 +9,12 @@ THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - THead element contains not a TR elements - + THead element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + @@ -23,8 +25,10 @@ TBody element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - TBody element contains not a TR elements - + TBody element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + @@ -33,10 +37,12 @@ TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - TFoot element contains not a TR elements - + TFoot element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml index d2a5bb60..8ab90572 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml @@ -13,8 +13,10 @@ cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - + The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) + + nrCmaps + diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 23cbfceb..268437f2 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -172,8 +172,10 @@ TR element should contained in Table, THead, TBody or TFoot element /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) - TR element not contained in Table, THead, TBody and TFoot element - + TR element contained in %1 instead of Table, THead, TBody or TFoot element + + parentStandardType + @@ -184,8 +186,10 @@ THead element should contained in Table element parentStandardType == 'Table' - THead element not contained in Table element - + THead element contained in %1 instead of Table element + + parentStandardType + @@ -196,8 +200,10 @@ TBody element should contained in Table element parentStandardType == 'Table' - TBody element not contained in Table element - + TBody element contained in %1 instead of Table element + + parentStandardType + @@ -208,8 +214,10 @@ TFoot element should contained in Table element parentStandardType == 'Table' - TFoot element not contained in Table element - + TFoot element contained in %1 instead of Table element + + parentStandardType + @@ -220,8 +228,10 @@ TH element should contained in TR element parentStandardType == 'TR' - TH element not contained in TR element - + TH element contained in %1 instead of TR element + + parentStandardType + @@ -232,8 +242,10 @@ TD element should contained in TR element parentStandardType == 'TR' - TD element not contained in TR element - + TD element contained in %1 instead of TR element + + parentStandardType + @@ -244,8 +256,10 @@ TR element may contain only TH and TD elements /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - TR element contains not a TH or TD elements - + TR element contains %1 element(s) instead of TH or TD + + kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() + @@ -319,8 +333,10 @@ LI element should contained in L element parentStandardType == 'L' - LI element not contained in L element - + LI element contained in %1 instead of L element + + parentStandardType + @@ -331,8 +347,10 @@ LBody element should contained in LI element parentStandardType == 'LI' - LBody element not contained in LI element - + LBody element contained in %1 instead of LI element + + parentStandardType + @@ -356,8 +374,10 @@ LI element may contain only Lbl and LBody elements /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - LI element contains not a Lbl or LBody elements - + LI element contains %1 element(s) instead of Lbl or LBody + + kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() + @@ -420,8 +440,10 @@ TOCI element should contained in TOC element parentStandardType == 'TOC' - TOCI element not contained in TOC element - + TOCI element contained in %1 instead of TOC element + + parentStandardType + @@ -512,10 +534,12 @@ THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - THead element contains not a TR elements - + THead element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + @@ -526,8 +550,10 @@ TBody element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - TBody element contains not a TR elements - + TBody element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + @@ -536,10 +562,12 @@ TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - TFoot element contains not a TR elements - + TFoot element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + @@ -1043,8 +1071,10 @@ cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - + The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) + + nrCmaps + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 91e3275e..dc4bff8f 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -707,8 +707,10 @@ TR element should contained in Table, THead, TBody or TFoot element /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) - TR element not contained in Table, THead, TBody and TFoot element - + TR element contained in %1 instead of Table, THead, TBody or TFoot element + + parentStandardType + @@ -719,8 +721,10 @@ THead element should contained in Table element parentStandardType == 'Table' - THead element not contained in Table element - + THead element contained in %1 instead of Table element + + parentStandardType + @@ -731,8 +735,10 @@ TBody element should contained in Table element parentStandardType == 'Table' - TBody element not contained in Table element - + TBody element contained in %1 instead of Table element + + parentStandardType + @@ -743,8 +749,10 @@ TFoot element should contained in Table element parentStandardType == 'Table' - TFoot element not contained in Table element - + TFoot element contained in %1 instead of Table element + + parentStandardType + @@ -755,8 +763,10 @@ TH element should contained in TR element parentStandardType == 'TR' - TH element not contained in TR element - + TH element contained in %1 instead of TR element + + parentStandardType + @@ -767,8 +777,10 @@ TD element should contained in TR element parentStandardType == 'TR' - TD element not contained in TR element - + TD element contained in %1 instead of TR element + + parentStandardType + @@ -779,8 +791,10 @@ TR element may contain only TH and TD elements /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - TR element contains not a TH or TD elements - + TR element contains %1 element(s) instead of TH or TD + + kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() + @@ -854,8 +868,10 @@ LI element should contained in L element parentStandardType == 'L' - LI element not contained in L element - + LI element contained in %1 instead of L element + + parentStandardType + @@ -866,8 +882,10 @@ LBody element should contained in LI element parentStandardType == 'LI' - LBody element not contained in LI element - + LBody element contained in %1 instead of LI element + + parentStandardType + @@ -891,8 +909,10 @@ LI element may contain only Lbl and LBody elements /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - LI element contains not a Lbl or LBody elements - + LI element contains %1 element(s) instead of Lbl or LBody + + kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() + @@ -954,8 +974,10 @@ TOCI element should contained in TOC element parentStandardType == 'TOC' - TOCI element not contained in TOC element - + TOCI element contained in %1 instead of TOC element + + parentStandardType + @@ -1046,10 +1068,12 @@ THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - THead element contains not a TR elements - + THead element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + @@ -1060,8 +1084,10 @@ TBody element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - TBody element contains not a TR elements - + TBody element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + @@ -1070,10 +1096,12 @@ TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 - TFoot element contains not a TR elements - + TFoot element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + @@ -1565,8 +1593,10 @@ cmap entries such that all necessary glyph lookups can be carried out. isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) - The embedded font program for a non-symbolic TrueType font does not contain any cmap subtables - + The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) + + nrCmaps + From 79f50ae241eada36501cce16a728f8304ab058f1 Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Mon, 30 May 2022 17:37:29 +0300 Subject: [PATCH 410/557] PDF/UA and WCAG validation. Add rule 7.18.4-2 --- .../verapdf-profile-7-18-4-t02.xml | 27 +++++++++++++++++++ PDF_UA/PDFUA-1.xml | 14 ++++++++++ PDF_UA/WCAG-21-Complete.xml | 14 ++++++++++ 3 files changed, 55 insertions(+) create mode 100644 PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml new file mode 100644 index 00000000..fe2c9bbe --- /dev/null +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.4 Forms - Widget annotation + If the Form element omits a Role attribute (Table 348), it shall have + only one child: an object reference (14.7.4.3) identifying the widget annotation + per ISO 32000-1:2008, 14.8.4.5, Table 340. +
+ + + + + If the Form element omits a Role attribute (Table 348), it shall have + only one child: an object reference (14.7.4.3) identifying the widget annotation + per ISO 32000-1:2008, 14.8.4.5, Table 340. + roleAttribute != null || hasOneInteractiveChild == true + + The Form element omits a Role attribute and doesn't have only one child identifying + the widget annotation + + + + + + + +
diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 23cbfceb..5ca60e1c 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -787,6 +787,20 @@
+ + + If the Form element omits a Role attribute (Table 348), it shall have + only one child: an object reference (14.7.4.3) identifying the widget annotation + per ISO 32000-1:2008, 14.8.4.5, Table 340. + roleAttribute != null || hasOneInteractiveChild == true + + The Form element omits a Role attribute and doesn't have only one child identifying + the widget annotation + + + + + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 91e3275e..301e7ffa 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1321,6 +1321,20 @@
+ + + If the Form element omits a Role attribute (Table 348), it shall have + only one child: an object reference (14.7.4.3) identifying the widget annotation + per ISO 32000-1:2008, 14.8.4.5, Table 340. + roleAttribute != null || hasOneInteractiveChild == true + + The Form element omits a Role attribute and doesn't have only one child identifying + the widget annotation + + + + + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. From eadeb7842ea9950b5dc893f190517767ee2fd80f Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 31 May 2022 19:26:31 +0300 Subject: [PATCH 411/557] Fix rules 6.2.11.6-2(PDF/A-2), 6.3.7-1(PDF/A-1) --- .../verapdf-profile-6-3-7-t01.xml | 20 +++++++++++------- .../verapdf-profile-6-2-11-6-t02.xml | 19 ++++++++++------- .../verapdf-profile-6-2-10-6-t02.xml | 21 ++++++++++++------- PDF_A/PDFA-1A.xml | 15 +++++++------ PDF_A/PDFA-1B.xml | 15 +++++++------ PDF_A/PDFA-2A.xml | 12 ++++++----- PDF_A/PDFA-2B.xml | 12 ++++++----- PDF_A/PDFA-2U.xml | 12 ++++++----- PDF_A/PDFA-3A.xml | 12 ++++++----- PDF_A/PDFA-3B.xml | 12 ++++++----- PDF_A/PDFA-3U.xml | 12 ++++++----- PDF_A/PDFA-4.xml | 10 +++++---- PDF_A/PDFA-4E.xml | 10 +++++---- PDF_A/PDFA-4F.xml | 10 +++++---- .../verapdf-profile-7-21-6-t02.xml | 21 ++++++++++++------- PDF_UA/PDFUA-1.xml | 12 ++++++----- PDF_UA/WCAG-21-Complete.xml | 12 ++++++----- 17 files changed, 142 insertions(+), 95 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml index 50ce9eac..b8c34b8a 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml @@ -2,20 +2,24 @@
ISO 19005-1:2005 - 6.3.7 Character encodings - Non-symbolic TrueType fonts - All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as + the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the + dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry.
- All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as + the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the + dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + isSymbolic == true || ((Encoding == "MacRomanEncoding" || + Encoding == "WinAnsiEncoding") && containsDifferences == false) - A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or WinAnsiEncoding + A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or + WinAnsiEncoding or Encoding entry contains a Differences entry. Encoding diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml index 14149dbe..a021b2a0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml @@ -2,9 +2,12 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Non-symbolic TrueType fonts - 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. + 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.
@@ -16,12 +19,14 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + + Encoding +
diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml index 778d517d..ac12d1b6 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml @@ -2,9 +2,12 @@
ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - Non-symbolic TrueType fonts - 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' subtable. + 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' subtable.
@@ -16,12 +19,14 @@ 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' subtable. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + Encoding +
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 7c013c5e..ec10e3f9 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -788,12 +788,15 @@
- All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - - A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or WinAnsiEncoding + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as + the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the + dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + isSymbolic == true || ((Encoding == "MacRomanEncoding" || + Encoding == "WinAnsiEncoding") && containsDifferences == false) + + A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or + WinAnsiEncoding or Encoding entry contains a Differences entry. Encoding diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 96b49000..b5844f07 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -788,12 +788,15 @@ - All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary - or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") - - A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or WinAnsiEncoding + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as + the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the + dictionary that is the value of the Encoding entry in the font dictionary. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + isSymbolic == true || ((Encoding == "MacRomanEncoding" || + Encoding == "WinAnsiEncoding") && containsDifferences == false) + + A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or + WinAnsiEncoding or Encoding entry contains a Differences entry. Encoding diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index cd9b8583..0fd403a8 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1036,12 +1036,14 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + Encoding + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index e6e8553e..e13d0d13 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1036,12 +1036,14 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + Encoding + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index d0f85f3a..c487f6db 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1036,12 +1036,14 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + Encoding + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 59184ebb..7deaeb31 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1036,12 +1036,14 @@ TrueType fonts shall not 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + Encoding + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 06e8bf4c..88de0beb 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1036,12 +1036,14 @@ TrueType fonts shall not 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + Encoding + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 5e2e2024..5abc12cd 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1036,12 +1036,14 @@ TrueType fonts shall not 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + Encoding + diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index b284a6d0..731b78bc 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -933,12 +933,14 @@ 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' subtable. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + + Encoding + diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 406214ce..c5922692 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -947,12 +947,14 @@ 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' subtable. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + + Encoding + diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index aba78e13..a8d122ff 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -933,12 +933,14 @@ 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' subtable. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + + Encoding + diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml index d768d4ca..027bea6d 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml @@ -2,9 +2,12 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - Non-symbolic TrueType fonts - 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. + 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.
@@ -16,12 +19,14 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + Encoding + diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 5a9d0366..e2a27bc5 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -1100,12 +1100,14 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + Encoding + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index cc3bc1ea..f0113339 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1619,12 +1619,14 @@ 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. - isSymbolic == true || (Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") || - (containsDifferences == true && differencesAreUnicodeCompliant == true) + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List - + A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or + the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + + Encoding + From 736397159998335bd9e0e76b2a3e097b9a982192 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 31 May 2022 19:52:05 +0300 Subject: [PATCH 412/557] Fix error messages --- .../6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml | 2 +- .../6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml | 7 +++++-- .../verapdf-profile-6-1-13-t11.xml | 7 +++++-- .../verapdf-profile-6-2-4-2-t01.xml | 8 ++++++-- .../6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml | 7 +++++-- PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml | 6 ++++-- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- .../7.9 Notes and references/verapdf-profile-7-9-t02.xml | 6 ++++-- 9 files changed, 32 insertions(+), 15 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index 17045d94..d1afb43d 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -12,7 +12,7 @@ as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - Missing or empty ID in the document trailer + Missing ID in the document trailer diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml index e6022c20..97514e8f 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml @@ -15,8 +15,11 @@ As of PDF 1.4, N must be 1, 3, or 4 N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) - The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile - + The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2) + + N + colorSpace + diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml index f7132a94..ddbe57f9 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml @@ -13,8 +13,11 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions - + One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + + Math.abs(top - bottom) + Math.abs(right - left) + diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml index 82d1a5e5..7438013e 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml @@ -12,8 +12,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + + deviceClass + colorSpace + version + diff --git a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml index 7edeaacf..805bd057 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml @@ -13,8 +13,11 @@ Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" - A rendering intent with non-standard value is used - + A rendering intent with non-standard value %1 is used + + internalRepresentation + +
diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml index c491054f..5ddeb1cf 100644 --- a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml @@ -13,8 +13,10 @@ dictionaries within the PDF/A-2 file. hasDuplicateName == false - Optional content configuration dictionary has duplicated name - + Optional content configuration dictionary has duplicated name %1 + + Name + diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index ec10e3f9..a7f20897 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -39,7 +39,7 @@ as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - Missing or empty ID in the document trailer + Missing ID in the document trailer diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index b5844f07..00aa06f1 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -39,7 +39,7 @@ as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) - Missing or empty ID in the document trailer + Missing ID in the document trailer diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml index bc799ab7..19600392 100644 --- a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml +++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml @@ -11,8 +11,10 @@ Each Note tag shall have unique ID key hasDuplicateNoteID == false - ID key of the Note tag is non-unique - + ID key %1 of the Note tag is non-unique + + noteID + From 7f8541058c607eca39e6bb8f97f5278558dc0b7d Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 2 Jun 2022 12:36:08 +0300 Subject: [PATCH 413/557] Fix error messages --- .../verapdf-profile-6-2-3-t01.xml | 8 +++++-- .../verapdf-profile-6-10-t02.xml | 6 ++++-- .../verapdf-profile-6-2-4-2-t01.xml | 8 +++++-- PDF_A/PDFA-1A.xml | 15 +++++++++---- PDF_A/PDFA-1B.xml | 15 +++++++++---- PDF_A/PDFA-2A.xml | 21 +++++++++++++------ PDF_A/PDFA-2B.xml | 21 +++++++++++++------ PDF_A/PDFA-2U.xml | 21 +++++++++++++------ PDF_A/PDFA-3A.xml | 21 +++++++++++++------ PDF_A/PDFA-3B.xml | 21 +++++++++++++------ PDF_A/PDFA-3U.xml | 21 +++++++++++++------ PDF_A/PDFA-4.xml | 14 +++++++++---- PDF_A/PDFA-4E.xml | 14 +++++++++---- PDF_A/PDFA-4F.xml | 14 +++++++++---- PDF_UA/PDFUA-1.xml | 6 ++++-- PDF_UA/WCAG-21-Complete.xml | 6 ++++-- 16 files changed, 166 insertions(+), 66 deletions(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml index 38af2034..8d42c033 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml @@ -12,8 +12,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 - The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.4 requirements + + deviceClass + colorSpace + version + diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml index 53d5c53f..b06de32c 100644 --- a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml @@ -13,8 +13,10 @@ dictionaries within the PDF/A-4 file. hasDuplicateName == false - Optional content configuration dictionary has duplicated name - + Optional content configuration dictionary has duplicated name %1 + + Name + diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml index 41fe3a05..3bfbba0f 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml @@ -12,8 +12,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile is either invalid or does not satisfy PDF 2.0 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 2.0 requirements + + deviceClass + colorSpace + version + diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index a7f20897..cdccf615 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -396,8 +396,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 - The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.4 requirements + + deviceClass + colorSpace + version + @@ -440,8 +444,11 @@ As of PDF 1.4, N must be 1, 3, or 4 N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) - The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile - + The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2) + + N + colorSpace + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 00aa06f1..bd59d93a 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -396,8 +396,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 - The embedded ICC profile is either invalid or does not satisfy PDF 1.4 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.4 requirements + + deviceClass + colorSpace + version + @@ -440,8 +444,11 @@ As of PDF 1.4, N must be 1, 3, or 4 N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) - The N entry in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile - + The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2) + + N + colorSpace + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 0fd403a8..20ca5d01 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -336,8 +336,11 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions - + One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + + Math.abs(top - bottom) + Math.abs(right - left) + @@ -413,8 +416,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + + deviceClass + colorSpace + version + @@ -1617,8 +1624,10 @@ dictionaries within the PDF/A-2 file. hasDuplicateName == false - Optional content configuration dictionary has duplicated name - + Optional content configuration dictionary has duplicated name %1 + + Name + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index e13d0d13..cb74af46 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -336,8 +336,11 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions - + One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + + Math.abs(top - bottom) + Math.abs(right - left) + @@ -413,8 +416,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + + deviceClass + colorSpace + version + @@ -1523,8 +1530,10 @@ dictionaries within the PDF/A-2 file. hasDuplicateName == false - Optional content configuration dictionary has duplicated name - + Optional content configuration dictionary has duplicated name %1 + + Name + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index c487f6db..47a0ddb5 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -336,8 +336,11 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions - + One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + + Math.abs(top - bottom) + Math.abs(right - left) + @@ -413,8 +416,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + + deviceClass + colorSpace + version + @@ -1546,8 +1553,10 @@ dictionaries within the PDF/A-2 file. hasDuplicateName == false - Optional content configuration dictionary has duplicated name - + Optional content configuration dictionary has duplicated name %1 + + Name + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 7deaeb31..851cc560 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -336,8 +336,11 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions - + One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + + Math.abs(top - bottom) + Math.abs(right - left) + @@ -413,8 +416,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + + deviceClass + colorSpace + version + @@ -1641,8 +1648,10 @@ dictionaries within the PDF/A-3 file. hasDuplicateName == false - Optional content configuration dictionary has duplicated name - + Optional content configuration dictionary has duplicated name %1 + + Name + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 88de0beb..2f293433 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -336,8 +336,11 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions - + One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + + Math.abs(top - bottom) + Math.abs(right - left) + @@ -413,8 +416,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + + deviceClass + colorSpace + version + @@ -1547,8 +1554,10 @@ dictionaries within the PDF/A-3 file. hasDuplicateName == false - Optional content configuration dictionary has duplicated name - + Optional content configuration dictionary has duplicated name %1 + + Name + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 5abc12cd..7b36ed67 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -336,8 +336,11 @@ in either direction, nor shall it be greater than 14 400 units in either direction. Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions - + One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + + Math.abs(top - bottom) + Math.abs(right - left) + @@ -413,8 +416,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile is either invalid or does not satisfy PDF 1.7 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + + deviceClass + colorSpace + version + @@ -1570,8 +1577,10 @@ dictionaries within the PDF/A-3 file. hasDuplicateName == false - Optional content configuration dictionary has duplicated name - + Optional content configuration dictionary has duplicated name %1 + + Name + diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 731b78bc..bf515999 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -326,8 +326,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile is either invalid or does not satisfy PDF 2.0 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 2.0 requirements + + deviceClass + colorSpace + version + @@ -1336,8 +1340,10 @@ dictionaries within the PDF/A-4 file. hasDuplicateName == false - Optional content configuration dictionary has duplicated name - + Optional content configuration dictionary has duplicated name %1 + + Name + diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index c5922692..383d6f03 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -340,8 +340,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile is either invalid or does not satisfy PDF 2.0 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 2.0 requirements + + deviceClass + colorSpace + version + @@ -1345,8 +1349,10 @@ dictionaries within the PDF/A-4 file. hasDuplicateName == false - Optional content configuration dictionary has duplicated name - + Optional content configuration dictionary has duplicated name %1 + + Name + diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index a8d122ff..181004b0 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -326,8 +326,12 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile is either invalid or does not satisfy PDF 2.0 requirements - + The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 2.0 requirements + + deviceClass + colorSpace + version + @@ -1343,8 +1347,10 @@ dictionaries within the PDF/A-4 file. hasDuplicateName == false - Optional content configuration dictionary has duplicated name - + Optional content configuration dictionary has duplicated name %1 + + Name + diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index e2a27bc5..9fbeb75c 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -674,8 +674,10 @@ Each Note tag shall have unique ID key hasDuplicateNoteID == false - ID key of the Note tag is non-unique - + ID key %1 of the Note tag is non-unique + + noteID + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index f0113339..01985973 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1208,8 +1208,10 @@ Each Note tag shall have unique ID key hasDuplicateNoteID == false - ID key of the Note tag is non-unique - + ID key %1 of the Note tag is non-unique + + noteID + From 8c332997e4bd1fa27a96fd4d686ed517ab9058a4 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Sat, 4 Jun 2022 14:44:11 +0300 Subject: [PATCH 414/557] Fix error messages --- .../verapdf-profile-6-8-3-t02.xml | 7 +- .../verapdf-profile-6-1-7-t01.xml | 9 +- .../verapdf-profile-6-1-7-t03.xml | 6 +- .../verapdf-profile-6-2-10-t01.xml | 6 +- .../verapdf-profile-6-3-3-t01.xml | 13 ++- .../verapdf-profile-6-3-6-t01.xml | 10 ++- .../verapdf-profile-6-7-3-t02.xml | 7 +- .../verapdf-profile-6-1-12-t01.xml | 8 +- .../verapdf-profile-6-1-7-t01.xml | 9 +- .../verapdf-profile-6-1-7-t03.xml | 6 +- .../verapdf-profile-6-2-11-3-t01.xml | 17 +++- .../verapdf-profile-6-2-11-5-t01.xml | 10 ++- .../verapdf-profile-6-2-11-6-t04.xml | 10 ++- .../verapdf-profile-6-2-2-t01.xml | 6 +- .../verapdf-profile-6-4-1-t01.xml | 6 +- .../verapdf-profile-6-1-11-t01.xml | 8 +- .../verapdf-profile-6-1-3-t05.xml | 6 +- .../verapdf-profile-6-1-6-1-t01.xml | 9 +- .../verapdf-profile-6-1-6-1-t02.xml | 6 +- .../verapdf-profile-6-2-10-3-1-t01.xml | 17 +++- .../verapdf-profile-6-2-10-5-t01.xml | 10 ++- .../verapdf-profile-6-2-10-6-t04.xml | 12 +-- .../verapdf-profile-6-2-2-t01.xml | 6 +- .../verapdf-profile-6-2-2-t03.xml | 10 +-- .../verapdf-profile-6-6-3-t01.xml | 9 +- PDF_A/PDFA-1A.xml | 51 +++++++---- PDF_A/PDFA-1B.xml | 44 +++++++--- PDF_A/PDFA-2A.xml | 74 +++++++++++----- PDF_A/PDFA-2B.xml | 67 +++++++++----- PDF_A/PDFA-2U.xml | 67 +++++++++----- PDF_A/PDFA-3A.xml | 74 +++++++++++----- PDF_A/PDFA-3B.xml | 67 +++++++++----- PDF_A/PDFA-3U.xml | 67 +++++++++----- PDF_A/PDFA-4.xml | 87 ++++++++++++------- PDF_A/PDFA-4E.xml | 87 ++++++++++++------- PDF_A/PDFA-4F.xml | 87 ++++++++++++------- .../1/7.1 General/verapdf-profile-7-1-t05.xml | 7 +- .../1/7.1 General/verapdf-profile-7-1-t06.xml | 6 +- .../1/7.1 General/verapdf-profile-7-1-t07.xml | 6 +- .../verapdf-profile-7-21-3-1-t01.xml | 17 +++- .../verapdf-profile-7-21-5-t01.xml | 10 ++- .../verapdf-profile-7-21-6-t04.xml | 10 ++- PDF_UA/PDFUA-1.xml | 51 ++++++++--- PDF_UA/WCAG-21-Complete.xml | 51 ++++++++--- 44 files changed, 799 insertions(+), 354 deletions(-) diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml index 8dfa30d5..add86d3d 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml @@ -13,8 +13,11 @@ defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. false - Non-standard structure type is not mapped to a standard type - + Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this + structure type is detected + + valueS + diff --git a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml index bafec872..7b117141 100644 --- a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml @@ -11,10 +11,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + diff --git a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml index 34a3a72d..9d5562f0 100644 --- a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml +++ b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml @@ -11,8 +11,10 @@ A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + diff --git a/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml index 2a9e2574..8b5cb62b 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.10 Content streams/verapdf-profile-6-2-10-t01.xml @@ -13,8 +13,10 @@ even if such operators are bracketed by the BX/EX compatibility operators false - A content stream contains an operator not defined in PDF Reference - + A content stream contains operator %1 not defined in PDF Reference + + name + diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml index 6122e874..1cf33b99 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml @@ -12,10 +12,17 @@ For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. - cmapName == "Identity-H" || cmapName == "Identity-V" || areRegistryOrderingCompatible == true + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry) - Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + diff --git a/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml index 0296552d..5217b83e 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml @@ -11,10 +11,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml index f3ad140b..2001fe81 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml @@ -13,8 +13,11 @@ defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. false - Non-standard structure type is not mapped to a standard type - + Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this + structure type is detected + + valueS + diff --git a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml index db1e97b5..c651b92e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml @@ -9,10 +9,12 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - containsOtherEntries == false + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 - The document permissions dictionary contains keys other than UR3 and DocMDP - + The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP + + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString() + diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml index beaf1870..35aaa0b8 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml @@ -11,10 +11,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml index ec52acf4..ee476064 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml @@ -11,8 +11,10 @@ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml index 5fe7919c..9a4970a6 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml @@ -19,10 +19,21 @@ and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml index e291ab57..fc55d1b5 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml @@ -11,10 +11,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml index 85c3b654..0a40327e 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml @@ -2,15 +2,17 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - cmaps in the symbolic TrueType font program - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding.
- Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml index 0b67b499..3a8e4696 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml @@ -12,8 +12,10 @@ by the BX/EX compatibility operators. false - A content stream contains an operator not defined in ISO 32000-1 - + A content stream contains operator %1 not defined in ISO 32000-1 + + name + diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index eca1bd7e..1364a17f 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -11,8 +11,10 @@ A Widget annotation dictionary shall not contains the A or AA keys. containsA == false && containsAA == false - A Widget annotation contains either A or AA entry - + A Widget annotation contains %1 key(s) + + keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + diff --git a/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml b/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml index b3bf42fa..485e2933 100644 --- a/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml @@ -9,10 +9,12 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). - containsOtherEntries == false + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 - The document permissions dictionary contains keys other than UR3 and DocMDP - + The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP + + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString() + diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml index 0c84771e..ee5d0674 100644 --- a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml @@ -11,8 +11,10 @@ If a document information dictionary is present, it shall only contain a ModDate entry. size == 1 && ModDate != null - Document information dictionary is present and does not contain only a ModDate entry - + Document information dictionary is present and contains %1 key(s), but allowed only ModDate + + keysString.split('&').filter(elem => elem != 'ModDate').toString() + diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml index 51e2a047..f808fd45 100644 --- a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml @@ -11,10 +11,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml index d1d574e5..213ab74f 100644 --- a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml +++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t02.xml @@ -11,8 +11,10 @@ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml index bb4171a3..8d60833f 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml @@ -21,10 +21,21 @@ - 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. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml index 05fd5833..831a1af0 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml @@ -13,10 +13,14 @@ For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml index f8c0091d..4b40645e 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml @@ -2,17 +2,17 @@
ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - cmaps in the symbolic TrueType font program - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and 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=0) encoding. + The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain + either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, + Encoding ID=0) encoding.
- Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and 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=0) encoding. + The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain + either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, + Encoding ID=0) encoding. isSymbolic == false || cmap30Present == true || cmap10Present == true The embedded font program for a symbolic TrueType font does not contain Microsoft diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml index bd5bb313..f51d6e8e 100644 --- a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml @@ -12,8 +12,10 @@ by the BX/EX compatibility operators. false - A content stream contains an operator not defined in ISO 32000-2:2020 - + A content stream contains operator %1 not defined in ISO 32000-2:2020 + + name + diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml index 2d16e5c9..18653fdf 100644 --- a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml @@ -13,12 +13,12 @@ A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which they can be referred to. - containsUndefinedResource == false + undefinedResourceNames == '' - A content stream's named resources not define by a resource dictionary, which shall enumerate - the named resources needed by the operators in the content stream and the names by which they can - be referred to. - + A content stream references named resource(s) %1 not defined by a resource dictionary. + + undefinedResourceNames + diff --git a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml index 51c2d1c7..22e2b75f 100644 --- a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml +++ b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml @@ -15,9 +15,12 @@ shall only contain keys from the following list: E, X, D, U, Fo, and Bl. containsOtherActions == false - A document catalog dictionary include an AA entry and its value (which is an additional-actions - dictionary) contains key(s) not from the following list: E, X, D, U, Fo, and Bl - + Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, + U, Fo, and Bl + + actions.split('&').filter(elem => elem != 'E' && elem != 'X'&& elem != 'D' && + elem != 'U' && elem != 'Fo' && elem != 'Bl').toString() + diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index cdccf615..fd039627 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -128,10 +128,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + @@ -151,8 +154,10 @@ A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + @@ -555,8 +560,10 @@ even if such operators are bracketed by the BX/EX compatibility operators false - A content stream contains an operator not defined in PDF Reference - + A content stream contains operator %1 not defined in PDF Reference + + name + @@ -682,10 +689,17 @@ For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. - cmapName == "Identity-H" || cmapName == "Identity-V" || areRegistryOrderingCompatible == true + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry) - Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + @@ -784,10 +798,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -1303,8 +1321,11 @@ defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. false - Non-standard structure type is not mapped to a standard type - + Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this + structure type is detected + + valueS + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index bd59d93a..81a21289 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -128,10 +128,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + @@ -151,8 +154,10 @@ A stream object dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + @@ -555,8 +560,10 @@ even if such operators are bracketed by the BX/EX compatibility operators false - A content stream contains an operator not defined in PDF Reference - + A content stream contains operator %1 not defined in PDF Reference + + name + @@ -682,10 +689,17 @@ For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. - cmapName == "Identity-H" || cmapName == "Identity-V" || areRegistryOrderingCompatible == true + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry) - Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + @@ -784,10 +798,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 20ca5d01..6e13f63e 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -103,10 +103,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + @@ -126,8 +129,10 @@ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + @@ -200,10 +205,12 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - containsOtherEntries == false + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 - The document permissions dictionary contains keys other than UR3 and DocMDP - + The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP + + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString() + @@ -350,8 +357,10 @@ by the BX/EX compatibility operators. false - A content stream contains an operator not defined in ISO 32000-1 - + A content stream contains operator %1 not defined in ISO 32000-1 + + name + @@ -868,10 +877,21 @@ and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + @@ -1015,10 +1035,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -1066,8 +1090,9 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and @@ -1199,8 +1224,10 @@ A Widget annotation dictionary shall not contains the A or AA keys. containsA == false && containsAA == false - A Widget annotation contains either A or AA entry - + A Widget annotation contains %1 key(s) + + keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + @@ -1561,8 +1588,11 @@ defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. false - Non-standard structure type is not mapped to a standard type - + Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this + structure type is detected + + valueS + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index cb74af46..e11a9ee8 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -103,10 +103,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + @@ -126,8 +129,10 @@ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + @@ -200,10 +205,12 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - containsOtherEntries == false + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 - The document permissions dictionary contains keys other than UR3 and DocMDP - + The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP + + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString() + @@ -350,8 +357,10 @@ by the BX/EX compatibility operators. false - A content stream contains an operator not defined in ISO 32000-1 - + A content stream contains operator %1 not defined in ISO 32000-1 + + name + @@ -868,10 +877,21 @@ and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + @@ -1015,10 +1035,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -1066,8 +1090,9 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and @@ -1161,8 +1186,10 @@ A Widget annotation dictionary shall not contains the A or AA keys. containsA == false && containsAA == false - A Widget annotation contains either A or AA entry - + A Widget annotation contains %1 key(s) + + keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 47a0ddb5..2797ab15 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -103,10 +103,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + @@ -126,8 +129,10 @@ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + @@ -200,10 +205,12 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - containsOtherEntries == false + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 - The document permissions dictionary contains keys other than UR3 and DocMDP - + The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP + + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString() + @@ -350,8 +357,10 @@ by the BX/EX compatibility operators. false - A content stream contains an operator not defined in ISO 32000-1 - + A content stream contains operator %1 not defined in ISO 32000-1 + + name + @@ -868,10 +877,21 @@ and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + @@ -1015,10 +1035,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -1066,8 +1090,9 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and @@ -1184,8 +1209,10 @@ A Widget annotation dictionary shall not contains the A or AA keys. containsA == false && containsAA == false - A Widget annotation contains either A or AA entry - + A Widget annotation contains %1 key(s) + + keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 851cc560..5033e7d7 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -103,10 +103,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + @@ -126,8 +129,10 @@ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + @@ -200,10 +205,12 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - containsOtherEntries == false + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 - The document permissions dictionary contains keys other than UR3 and DocMDP - + The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP + + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString() + @@ -350,8 +357,10 @@ by the BX/EX compatibility operators. false - A content stream contains an operator not defined in ISO 32000-1 - + A content stream contains operator %1 not defined in ISO 32000-1 + + name + @@ -868,10 +877,21 @@ and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + @@ -1015,10 +1035,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -1066,8 +1090,9 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and @@ -1199,8 +1224,10 @@ A Widget annotation dictionary shall not contains the A or AA keys. containsA == false && containsAA == false - A Widget annotation contains either A or AA entry - + A Widget annotation contains %1 key(s) + + keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + @@ -1561,8 +1588,11 @@ defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. false - Non-standard structure type is not mapped to a standard type - + Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this + structure type is detected + + valueS + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 2f293433..e83e9d1f 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -103,10 +103,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + @@ -126,8 +129,10 @@ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + @@ -200,10 +205,12 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - containsOtherEntries == false + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 - The document permissions dictionary contains keys other than UR3 and DocMDP - + The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP + + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString() + @@ -350,8 +357,10 @@ by the BX/EX compatibility operators. false - A content stream contains an operator not defined in ISO 32000-1 - + A content stream contains operator %1 not defined in ISO 32000-1 + + name + @@ -868,10 +877,21 @@ and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + @@ -1015,10 +1035,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -1066,8 +1090,9 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and @@ -1161,8 +1186,10 @@ A Widget annotation dictionary shall not contains the A or AA keys. containsA == false && containsAA == false - A Widget annotation contains either A or AA entry - + A Widget annotation contains %1 key(s) + + keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 7b36ed67..765ed3ab 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -103,10 +103,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + @@ -126,8 +129,10 @@ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + @@ -200,10 +205,12 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - containsOtherEntries == false + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 - The document permissions dictionary contains keys other than UR3 and DocMDP - + The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP + + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString() + @@ -350,8 +357,10 @@ by the BX/EX compatibility operators. false - A content stream contains an operator not defined in ISO 32000-1 - + A content stream contains operator %1 not defined in ISO 32000-1 + + name + @@ -868,10 +877,21 @@ and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + @@ -1015,10 +1035,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -1066,8 +1090,9 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and @@ -1184,8 +1209,10 @@ A Widget annotation dictionary shall not contains the A or AA keys. containsA == false && containsAA == false - A Widget annotation contains either A or AA entry - + A Widget annotation contains %1 key(s) + + keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index bf515999..5484374b 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -82,8 +82,10 @@ If a document information dictionary is present, it shall only contain a ModDate entry. size == 1 && ModDate != null - Document information dictionary is present and does not contain only a ModDate entry - + Document information dictionary is present and contains %1 key(s), but allowed only ModDate + + keysString.split('&').filter(elem => elem != 'ModDate').toString() + @@ -123,10 +125,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + @@ -135,8 +140,10 @@ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + @@ -213,10 +220,12 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). - containsOtherEntries == false + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 - The document permissions dictionary contains keys other than UR3 and DocMDP - + The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP + + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString() + @@ -242,8 +251,10 @@ by the BX/EX compatibility operators. false - A content stream contains an operator not defined in ISO 32000-2:2020 - + A content stream contains operator %1 not defined in ISO 32000-2:2020 + + name + @@ -267,12 +278,12 @@ A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which they can be referred to. - containsUndefinedResource == false + undefinedResourceNames == '' - A content stream's named resources not define by a resource dictionary, which shall enumerate - the named resources needed by the operators in the content stream and the names by which they can - be referred to. - + A content stream references named resource(s) %1 not defined by a resource dictionary. + + undefinedResourceNames + @@ -781,10 +792,21 @@ - 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. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + @@ -909,10 +931,14 @@ For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -960,9 +986,9 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and 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=0) encoding. + The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain + either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, + Encoding ID=0) encoding. isSymbolic == false || cmap30Present == true || cmap10Present == true The embedded font program for a symbolic TrueType font does not contain Microsoft @@ -1153,9 +1179,12 @@ shall only contain keys from the following list: E, X, D, U, Fo, and Bl. containsOtherActions == false - A document catalog dictionary include an AA entry and its value (which is an additional-actions - dictionary) contains key(s) not from the following list: E, X, D, U, Fo, and Bl - + Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, + U, Fo, and Bl + + actions.split('&').filter(elem => elem != 'E' && elem != 'X'&& elem != 'D' && + elem != 'U' && elem != 'Fo' && elem != 'Bl').toString() + diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 383d6f03..905e48c9 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -82,8 +82,10 @@ If a document information dictionary is present, it shall only contain a ModDate entry. size == 1 && ModDate != null - Document information dictionary is present and does not contain only a ModDate entry - + Document information dictionary is present and contains %1 key(s), but allowed only ModDate + + keysString.split('&').filter(elem => elem != 'ModDate').toString() + @@ -121,10 +123,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + @@ -133,8 +138,10 @@ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + @@ -227,10 +234,12 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). - containsOtherEntries == false + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 - The document permissions dictionary contains keys other than UR3 and DocMDP - + The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP + + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString() + @@ -256,8 +265,10 @@ by the BX/EX compatibility operators. false - A content stream contains an operator not defined in ISO 32000-2:2020 - + A content stream contains operator %1 not defined in ISO 32000-2:2020 + + name + @@ -281,12 +292,12 @@ A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which they can be referred to. - containsUndefinedResource == false + undefinedResourceNames == '' - A content stream's named resources not define by a resource dictionary, which shall enumerate - the named resources needed by the operators in the content stream and the names by which they can - be referred to. - + A content stream references named resource(s) %1 not defined by a resource dictionary. + + undefinedResourceNames + @@ -795,10 +806,21 @@ - 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. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + @@ -923,10 +945,14 @@ For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -974,9 +1000,9 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and 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=0) encoding. + The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain + either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, + Encoding ID=0) encoding. isSymbolic == false || cmap30Present == true || cmap10Present == true The embedded font program for a symbolic TrueType font does not contain Microsoft @@ -1170,9 +1196,12 @@ shall only contain keys from the following list: E, X, D, U, Fo, and Bl. containsOtherActions == false - A document catalog dictionary include an AA entry and its value (which is an additional-actions - dictionary) contains key(s) not from the following list: E, X, D, U, Fo, and Bl - + Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, + U, Fo, and Bl + + actions.split('&').filter(elem => elem != 'E' && elem != 'X'&& elem != 'D' && + elem != 'U' && elem != 'Fo' && elem != 'Bl').toString() + diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 181004b0..fee6548d 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -82,8 +82,10 @@ If a document information dictionary is present, it shall only contain a ModDate entry. size == 1 && ModDate != null - Document information dictionary is present and does not contain only a ModDate entry - + Document information dictionary is present and contains %1 key(s), but allowed only ModDate + + keysString.split('&').filter(elem => elem != 'ModDate').toString() + @@ -123,10 +125,13 @@ The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. - isLengthCorrect + Length == realLength - Actual length of the stream does not match the value of the Length key in the Stream dictionary - + Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) + + realLength + Length + @@ -135,8 +140,10 @@ A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null - A stream object dictionary contains one of the F, FFilter, or FDecodeParms keys - + A stream object dictionary contains %1 key(s) + + keysString.split('&').filter(elem => elem == 'F' || elem == 'FFilter' || elem == 'FDecodeParms').toString() + @@ -213,10 +220,12 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). - containsOtherEntries == false + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 - The document permissions dictionary contains keys other than UR3 and DocMDP - + The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP + + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').toString() + @@ -242,8 +251,10 @@ by the BX/EX compatibility operators. false - A content stream contains an operator not defined in ISO 32000-2:2020 - + A content stream contains operator %1 not defined in ISO 32000-2:2020 + + name + @@ -267,12 +278,12 @@ A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which they can be referred to. - containsUndefinedResource == false + undefinedResourceNames == '' - A content stream's named resources not define by a resource dictionary, which shall enumerate - the named resources needed by the operators in the content stream and the names by which they can - be referred to. - + A content stream references named resource(s) %1 not defined by a resource dictionary. + + undefinedResourceNames + @@ -781,10 +792,21 @@ - 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. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + @@ -909,10 +931,14 @@ For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -960,9 +986,9 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and 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=0) encoding. + The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain + either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, + Encoding ID=0) encoding. isSymbolic == false || cmap30Present == true || cmap10Present == true The embedded font program for a symbolic TrueType font does not contain Microsoft @@ -1154,9 +1180,12 @@ shall only contain keys from the following list: E, X, D, U, Fo, and Bl. containsOtherActions == false - A document catalog dictionary include an AA entry and its value (which is an additional-actions - dictionary) contains key(s) not from the following list: E, X, D, U, Fo, and Bl - + Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, + U, Fo, and Bl + + actions.split('&').filter(elem => elem != 'E' && elem != 'X'&& elem != 'D' && + elem != 'U' && elem != 'Fo' && elem != 'Bl').toString() + diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml index 1bbd2ea8..24a8e516 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml @@ -17,8 +17,11 @@ non-standard type, but eventually the mapping shall terminate at a standard type. false - Non-standard structure type is not mapped to a standard type or a circular mapping exists - + Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this + structure type is detected + + valueS + diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml index 2941806b..f2f97165 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml @@ -11,8 +11,10 @@ A circular mapping shall not exist circularMappingExist != true - A circular mapping exists - + A circular mapping exists for %1 structure type + + valueS + diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml index bb5202b3..9bd2a0d1 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml @@ -11,8 +11,10 @@ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. isRemappedStandardType == false - Standard type is remapped - + Standard type %1 is remapped + + valueS + diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml index 8d010442..06dd387c 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml @@ -19,10 +19,21 @@ and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + diff --git a/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml index fa4a7b5f..47ff201d 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml @@ -11,10 +11,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml index 7b0e599f..daba84c9 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml @@ -2,15 +2,17 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps in the symbolic TrueType font program - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding.
- Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 9fbeb75c..ced8af70 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -78,8 +78,11 @@ non-standard type, but eventually the mapping shall terminate at a standard type. false - Non-standard structure type is not mapped to a standard type or a circular mapping exists - + Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this + structure type is detected + + valueS + @@ -90,8 +93,10 @@ A circular mapping shall not exist circularMappingExist != true - A circular mapping exists - + A circular mapping exists for %1 structure type + + valueS + @@ -100,8 +105,10 @@ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. isRemappedStandardType == false - Standard type is remapped - + Standard type %1 is remapped + + valueS + @@ -927,10 +934,21 @@ and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + @@ -1074,10 +1092,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -1125,8 +1147,9 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 01985973..253fdbe4 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -613,8 +613,11 @@ non-standard type, but eventually the mapping shall terminate at a standard type. false - Non-standard structure type is not mapped to a standard type or a circular mapping exists - + Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this + structure type is detected + + valueS + @@ -625,8 +628,10 @@ A circular mapping shall not exist circularMappingExist != true - A circular mapping exists - + A circular mapping exists for %1 structure type + + valueS + @@ -635,8 +640,10 @@ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. isRemappedStandardType == false - Standard type is remapped - + Standard type %1 is remapped + + valueS + @@ -1449,10 +1456,21 @@ and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (areRegistryOrderingCompatible == true && isSupplementCompatible == true) + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + @@ -1596,10 +1614,14 @@ For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. - renderingMode == 3 || isWidthConsistent == null || isWidthConsistent == true + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - Glyph width information in the embedded font program is not consistent with the Widths entry of the font dictionary - + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + @@ -1644,8 +1666,9 @@ - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary, and the 'cmap' table in the embedded font program - shall either contain exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either + exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, + Encoding ID=0) encoding. isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and From b49d5656719300a620e67dc72935fb07c21084dc Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 8 Jun 2022 12:20:16 +0300 Subject: [PATCH 415/557] Add ISO-32005-Tagged.xml --- PDF_UA/ISO-32005-Tagged.xml | 19873 ++++++++++++++++++++++++++++++++++ 1 file changed, 19873 insertions(+) create mode 100644 PDF_UA/ISO-32005-Tagged.xml diff --git a/PDF_UA/ISO-32005-Tagged.xml b/PDF_UA/ISO-32005-Tagged.xml new file mode 100644 index 00000000..7678bf07 --- /dev/null +++ b/PDF_UA/ISO-32005-Tagged.xml @@ -0,0 +1,19873 @@ + + +
+ Tagged PDF profile for ISO 32005 specification + Profile for validation of Tagged PDF structure tree relations for PDF 1.7 and PDF 2.0 standard structure types +
+ + + + + Every structure type should be mapped to a standard structure type + false + + Structure type %1 is not mapped to the standard structure type + + valueS + + + + + + + + + <StructTreeRoot> shall contain exactly one <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 1 + + <StructTreeRoot> either either doesn't contain or contains more than one <Document> + + + + + + + + + <StructTreeRoot> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <StructTreeRoot> contains <DocumentFragment> + + + + + + + + + <StructTreeRoot> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <StructTreeRoot> contains <Part> + + + + + + + + + <StructTreeRoot> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <StructTreeRoot> contains <Art> + + + + + + + + + <StructTreeRoot> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <StructTreeRoot> contains <Div> + + + + + + + + + <StructTreeRoot> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <StructTreeRoot> contains <Sect> + + + + + + + + + <StructTreeRoot> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <StructTreeRoot> contains <TOC> + + + + + + + + + <StructTreeRoot> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <StructTreeRoot> contains <TOCI> + + + + + + + + + <StructTreeRoot> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <StructTreeRoot> contains <Aside> + + + + + + + + + <StructTreeRoot> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <StructTreeRoot> contains <BlockQuote> + + + + + + + + + <StructTreeRoot> shall not contain <NonStruct> + kidsStandardTypes.split('&').filter(elem => elem == 'NonStruct').length == 0 + + <StructTreeRoot> contains <NonStruct> + + + + + + + + + <StructTreeRoot> shall not contain <Private> + kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0 + + <StructTreeRoot> contains <Private> + + + + + + + + + <StructTreeRoot> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <StructTreeRoot> contains <P> + + + + + + + + + <StructTreeRoot> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <StructTreeRoot> contains <Note> + + + + + + + + + <StructTreeRoot> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <StructTreeRoot> contains <Code> + + + + + + + + + <StructTreeRoot> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <StructTreeRoot> contains <Hn> + + + + + + + + + <StructTreeRoot> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <StructTreeRoot> contains <H> + + + + + + + + + <StructTreeRoot> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <StructTreeRoot> contains <Title> + + + + + + + + + <StructTreeRoot> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <StructTreeRoot> contains <Sub> + + + + + + + + + <StructTreeRoot> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <StructTreeRoot> contains <Lbl> + + + + + + + + + <StructTreeRoot> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <StructTreeRoot> contains <Em> + + + + + + + + + <StructTreeRoot> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <StructTreeRoot> contains <Strong> + + + + + + + + + <StructTreeRoot> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <StructTreeRoot> contains <Span> + + + + + + + + + <StructTreeRoot> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <StructTreeRoot> contains <Quote> + + + + + + + + + <StructTreeRoot> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <StructTreeRoot> contains <Link> + + + + + + + + + <StructTreeRoot> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <StructTreeRoot> contains <Reference> + + + + + + + + + <StructTreeRoot> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <StructTreeRoot> contains <Annot> + + + + + + + + + <StructTreeRoot> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <StructTreeRoot> contains <Form> + + + + + + + + + <StructTreeRoot> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <StructTreeRoot> contains <Ruby> + + + + + + + + + <StructTreeRoot> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <StructTreeRoot> contains <RB> + + + + + + + + + <StructTreeRoot> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <StructTreeRoot> contains <RT> + + + + + + + + + <StructTreeRoot> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <StructTreeRoot> contains <RP> + + + + + + + + + <StructTreeRoot> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <StructTreeRoot> contains <Warichu> + + + + + + + + + <StructTreeRoot> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <StructTreeRoot> contains <WT> + + + + + + + + + <StructTreeRoot> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <StructTreeRoot> contains <WP> + + + + + + + + + <StructTreeRoot> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <StructTreeRoot> contains <FENote> + + + + + + + + + <StructTreeRoot> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <StructTreeRoot> contains <Index> + + + + + + + + + <StructTreeRoot> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <StructTreeRoot> contains <L> + + + + + + + + + <StructTreeRoot> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <StructTreeRoot> contains <LI> + + + + + + + + + <StructTreeRoot> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <StructTreeRoot> contains <LBody> + + + + + + + + + <StructTreeRoot> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <StructTreeRoot> contains <BibEntry> + + + + + + + + + <StructTreeRoot> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <StructTreeRoot> contains <Table> + + + + + + + + + <StructTreeRoot> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <StructTreeRoot> contains <TR> + + + + + + + + + <StructTreeRoot> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <StructTreeRoot> contains <TH> + + + + + + + + + <StructTreeRoot> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <StructTreeRoot> contains <TD> + + + + + + + + + <StructTreeRoot> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <StructTreeRoot> contains <THead> + + + + + + + + + <StructTreeRoot> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <StructTreeRoot> contains <TBody> + + + + + + + + + <StructTreeRoot> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <StructTreeRoot> contains <TFoot> + + + + + + + + + <StructTreeRoot> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <StructTreeRoot> contains <Caption> + + + + + + + + + <StructTreeRoot> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <StructTreeRoot> contains <Figure> + + + + + + + + + <StructTreeRoot> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <StructTreeRoot> contains <Formula> + + + + + + + + + <StructTreeRoot> shall not contain <Artifact> + kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + + <StructTreeRoot> contains <Artifact> + + + + + + + + + <StructTreeRoot> shall not contain content item + hasContentItems == false + + <StructTreeRoot> contains content item(s) + + + + + + + + + <Document> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Document> contains <TOCI> + + + + + + + + + <Document> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Document> contains more than one <H> + + + + + + + + + <Document> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Document> contains <Sub> + + + + + + + + + <Document> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Document> contains <Lbl> + + + + + + + + + <Document> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Document> contains <Em> + + + + + + + + + <Document> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Document> contains <Strong> + + + + + + + + + <Document> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Document> contains <Span> + + + + + + + + + <Document> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Document> contains <Quote> + + + + + + + + + <Document> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Document> contains <Reference> + + + + + + + + + <Document> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Document> contains <Ruby> + + + + + + + + + <Document> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Document> contains <RB> + + + + + + + + + <Document> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Document> contains <RT> + + + + + + + + + <Document> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Document> contains <RP> + + + + + + + + + <Document> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Document> contains <Warichu> + + + + + + + + + <Document> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Document> contains <WT> + + + + + + + + + <Document> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Document> contains <WP> + + + + + + + + + <Document> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Document> contains <LI> + + + + + + + + + <Document> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Document> contains <LBody> + + + + + + + + + <Document> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Document> contains <BibEntry> + + + + + + + + + <Document> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Document> contains <TR> + + + + + + + + + <Document> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Document> contains <TH> + + + + + + + + + <Document> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Document> contains <TD> + + + + + + + + + <Document> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Document> contains <THead> + + + + + + + + + <Document> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Document> contains <TBody> + + + + + + + + + <Document> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Document> contains <TFoot> + + + + + + + + + <Document> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Document> contains <Caption> + + + + + + + + + <Document> shall not contain content item + hasContentItems == false + + <Document> contains content item(s) + + + + + + + + + <DocumentFragment> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <DocumentFragment> contains <TOCI> + + + + + + + + + <DocumentFragment> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <DocumentFragment> contains more than one <H> + + + + + + + + + <DocumentFragment> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <DocumentFragment> contains <Sub> + + + + + + + + + <DocumentFragment> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <DocumentFragment> contains <Lbl> + + + + + + + + + <DocumentFragment> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <DocumentFragment> contains <Em> + + + + + + + + + <DocumentFragment> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <DocumentFragment> contains <Strong> + + + + + + + + + <DocumentFragment> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <DocumentFragment> contains <Span> + + + + + + + + + <DocumentFragment> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <DocumentFragment> contains <Quote> + + + + + + + + + <DocumentFragment> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <DocumentFragment> contains <Reference> + + + + + + + + + <DocumentFragment> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <DocumentFragment> contains <Ruby> + + + + + + + + + <DocumentFragment> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <DocumentFragment> contains <RB> + + + + + + + + + <DocumentFragment> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <DocumentFragment> contains <RT> + + + + + + + + + <DocumentFragment> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <DocumentFragment> contains <RP> + + + + + + + + + <DocumentFragment> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <DocumentFragment> contains <Warichu> + + + + + + + + + <DocumentFragment> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <DocumentFragment> contains <WT> + + + + + + + + + <DocumentFragment> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <DocumentFragment> contains <WP> + + + + + + + + + <DocumentFragment> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <DocumentFragment> contains <LI> + + + + + + + + + <DocumentFragment> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <DocumentFragment> contains <LBody> + + + + + + + + + <DocumentFragment> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <DocumentFragment> contains <BibEntry> + + + + + + + + + <DocumentFragment> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <DocumentFragment> contains <TR> + + + + + + + + + <DocumentFragment> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <DocumentFragment> contains <TH> + + + + + + + + + <DocumentFragment> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <DocumentFragment> contains <TD> + + + + + + + + + <DocumentFragment> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <DocumentFragment> contains <THead> + + + + + + + + + <DocumentFragment> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <DocumentFragment> contains <TBody> + + + + + + + + + <DocumentFragment> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <DocumentFragment> contains <TFoot> + + + + + + + + + <DocumentFragment> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <DocumentFragment> contains <Caption> + + + + + + + + + <DocumentFragment> shall not contain content item + hasContentItems == false + + <DocumentFragment> contains content item(s) + + + + + + + + + <Part> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Part> contains <Em> + + + + + + + + + <Part> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Part> contains <Strong> + + + + + + + + + <Part> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Part> contains <Span> + + + + + + + + + <Part> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Part> contains <Quote> + + + + + + + + + <Part> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Part> contains <Ruby> + + + + + + + + + <Part> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Part> contains <RB> + + + + + + + + + <Part> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Part> contains <RT> + + + + + + + + + <Part> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Part> contains <RP> + + + + + + + + + <Part> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Part> contains <Warichu> + + + + + + + + + <Part> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Part> contains <WT> + + + + + + + + + <Part> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Part> contains <WP> + + + + + + + + + <Part> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Part> contains <LI> + + + + + + + + + <Part> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Part> contains <LBody> + + + + + + + + + <Part> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Part> contains <TR> + + + + + + + + + <Part> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Part> contains <TH> + + + + + + + + + <Part> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Part> contains <TD> + + + + + + + + + <Part> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Part> contains <THead> + + + + + + + + + <Part> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Part> contains <TBody> + + + + + + + + + <Part> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Part> contains <TFoot> + + + + + + + + + <Part> shall not contain content item + hasContentItems == false + + <Part> contains content item(s) + + + + + + + + + <Div> shall not contain content item + hasContentItems == false + + <Div> contains content item(s) + + + + + + + + + <Art> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Art> contains <Document> + + + + + + + + + <Art> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Art> contains <Art> + + + + + + + + + <Art> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Art> contains <TOCI> + + + + + + + + + <Art> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Art> contains more than one <H> + + + + + + + + + <Art> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Art> contains <Sub> + + + + + + + + + <Art> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Art> contains <Em> + + + + + + + + + <Art> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Art> contains <Strong> + + + + + + + + + <Art> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Art> contains <Span> + + + + + + + + + <Art> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Art> contains <Quote> + + + + + + + + + <Art> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Art> contains <Reference> + + + + + + + + + <Art> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Art> contains <Ruby> + + + + + + + + + <Art> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Art> contains <RB> + + + + + + + + + <Art> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Art> contains <RT> + + + + + + + + + <Art> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Art> contains <RP> + + + + + + + + + <Art> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Art> contains <Warichu> + + + + + + + + + <Art> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Art> contains <WT> + + + + + + + + + <Art> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Art> contains <WP> + + + + + + + + + <Art> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Art> contains <LI> + + + + + + + + + <Art> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Art> contains <LBody> + + + + + + + + + <Art> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Art> contains <BibEntry> + + + + + + + + + <Art> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Art> contains <TR> + + + + + + + + + <Art> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Art> contains <TH> + + + + + + + + + <Art> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Art> contains <TD> + + + + + + + + + <Art> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Art> contains <THead> + + + + + + + + + <Art> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Art> contains <TBody> + + + + + + + + + <Art> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Art> contains <TFoot> + + + + + + + + + <Art> shall not contain content item + hasContentItems == false + + <Art> contains content item(s) + + + + + + + + + <Sect> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Sect> contains <Document> + + + + + + + + + <Sect> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Sect> contains <TOCI> + + + + + + + + + <Sect> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Sect> contains more than one <H> + + + + + + + + + <Sect> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Sect> contains <Sub> + + + + + + + + + <Sect> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Sect> contains <Em> + + + + + + + + + <Sect> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Sect> contains <Strong> + + + + + + + + + <Sect> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Sect> contains <Span> + + + + + + + + + <Sect> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Sect> contains <Quote> + + + + + + + + + <Sect> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Sect> contains <Reference> + + + + + + + + + <Sect> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Sect> contains <Ruby> + + + + + + + + + <Sect> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Sect> contains <RB> + + + + + + + + + <Sect> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Sect> contains <RT> + + + + + + + + + <Sect> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Sect> contains <RP> + + + + + + + + + <Sect> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Sect> contains <Warichu> + + + + + + + + + <Sect> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Sect> contains <WT> + + + + + + + + + <Sect> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Sect> contains <WP> + + + + + + + + + <Sect> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Sect> contains <LI> + + + + + + + + + <Sect> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Sect> contains <LBody> + + + + + + + + + <Sect> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Sect> contains <BibEntry> + + + + + + + + + <Sect> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Sect> contains <TR> + + + + + + + + + <Sect> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Sect> contains <TH> + + + + + + + + + <Sect> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Sect> contains <TD> + + + + + + + + + <Sect> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Sect> contains <THead> + + + + + + + + + <Sect> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Sect> contains <TBody> + + + + + + + + + <Sect> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Sect> contains <TFoot> + + + + + + + + + <Sect> shall not contain content item + hasContentItems == false + + <Sect> contains content item(s) + + + + + + + + + <TOC> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TOC> contains <Document> + + + + + + + + + <TOC> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TOC> contains <DocumentFragment> + + + + + + + + + <TOC> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TOC> contains <Part> + + + + + + + + + <TOC> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <TOC> contains <Art> + + + + + + + + + <TOC> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <TOC> contains <Div> + + + + + + + + + <TOC> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <TOC> contains <Sect> + + + + + + + + + <TOC> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TOC> contains <Aside> + + + + + + + + + <TOC> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TOC> contains <BlockQuote> + + + + + + + + + <TOC> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <TOC> contains <P> + + + + + + + + + <TOC> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <TOC> contains <Note> + + + + + + + + + <TOC> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <TOC> contains <Code> + + + + + + + + + <TOC> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <TOC> contains <Hn> + + + + + + + + + <TOC> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <TOC> contains <H> + + + + + + + + + <TOC> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TOC> contains <Title> + + + + + + + + + <TOC> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TOC> contains <Sub> + + + + + + + + + <TOC> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <TOC> contains <Lbl> + + + + + + + + + <TOC> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <TOC> contains <Em> + + + + + + + + + <TOC> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <TOC> contains <Strong> + + + + + + + + + <TOC> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <TOC> contains <Span> + + + + + + + + + <TOC> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <TOC> contains <Quote> + + + + + + + + + <TOC> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <TOC> contains <Link> + + + + + + + + + <TOC> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <TOC> contains <Reference> + + + + + + + + + <TOC> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <TOC> contains <Annot> + + + + + + + + + <TOC> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <TOC> contains <Form> + + + + + + + + + <TOC> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <TOC> contains <Ruby> + + + + + + + + + <TOC> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TOC> contains <RB> + + + + + + + + + <TOC> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TOC> contains <RT> + + + + + + + + + <TOC> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TOC> contains <RP> + + + + + + + + + <TOC> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <TOC> contains <Warichu> + + + + + + + + + <TOC> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TOC> contains <WT> + + + + + + + + + <TOC> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TOC> contains <WP> + + + + + + + + + <TOC> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <TOC> contains <FENote> + + + + + + + + + <TOC> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <TOC> contains <Index> + + + + + + + + + <TOC> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <TOC> contains <L> + + + + + + + + + <TOC> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TOC> contains <LI> + + + + + + + + + <TOC> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TOC> contains <LBody> + + + + + + + + + <TOC> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <TOC> contains <BibEntry> + + + + + + + + + <TOC> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <TOC> contains <Table> + + + + + + + + + <TOC> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <TOC> contains <TR> + + + + + + + + + <TOC> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TOC> contains <TH> + + + + + + + + + <TOC> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TOC> contains <TD> + + + + + + + + + <TOC> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TOC> contains <THead> + + + + + + + + + <TOC> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TOC> contains <TBody> + + + + + + + + + <TOC> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TOC> contains <TFoot> + + + + + + + + + <TOC> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <TOC> contains more than one <Caption> + + + + + + + + + <TOC> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <TOC> contains <Figure> + + + + + + + + + <TOC> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <TOC> contains <Formula> + + + + + + + + + <TOC> shall not contain content item + hasContentItems == false + + <TOC> contains content item(s) + + + + + + + + + <TOCI> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TOCI> contains <Document> + + + + + + + + + <TOCI> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TOCI> contains <DocumentFragment> + + + + + + + + + <TOCI> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TOCI> contains <Part> + + + + + + + + + <TOCI> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <TOCI> contains <Art> + + + + + + + + + <TOCI> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <TOCI> contains <Sect> + + + + + + + + + <TOCI> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TOCI> contains <TOCI> + + + + + + + + + <TOCI> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TOCI> contains <Aside> + + + + + + + + + <TOCI> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TOCI> contains <BlockQuote> + + + + + + + + + <TOCI> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <TOCI> contains <Note> + + + + + + + + + <TOCI> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <TOCI> contains <Code> + + + + + + + + + <TOCI> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <TOCI> contains <Hn> + + + + + + + + + <TOCI> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <TOCI> contains <H> + + + + + + + + + <TOCI> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TOCI> contains <Title> + + + + + + + + + <TOCI> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TOCI> contains <Sub> + + + + + + + + + <TOCI> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <TOCI> contains <Em> + + + + + + + + + <TOCI> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <TOCI> contains <Strong> + + + + + + + + + <TOCI> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <TOCI> contains <Span> + + + + + + + + + <TOCI> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <TOCI> contains <Quote> + + + + + + + + + <TOCI> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <TOCI> contains <Link> + + + + + + + + + <TOCI> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <TOCI> contains <Annot> + + + + + + + + + <TOCI> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <TOCI> contains <Form> + + + + + + + + + <TOCI> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <TOCI> contains <Ruby> + + + + + + + + + <TOCI> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TOCI> contains <RB> + + + + + + + + + <TOCI> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TOCI> contains <RT> + + + + + + + + + <TOCI> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TOCI> contains <RP> + + + + + + + + + <TOCI> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <TOCI> contains <Warichu> + + + + + + + + + <TOCI> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TOCI> contains <WT> + + + + + + + + + <TOCI> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TOCI> contains <WP> + + + + + + + + + <TOCI> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <TOCI> contains <FENote> + + + + + + + + + <TOCI> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <TOCI> contains <Index> + + + + + + + + + <TOCI> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <TOCI> contains <L> + + + + + + + + + <TOCI> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TOCI> contains <LI> + + + + + + + + + <TOCI> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TOCI> contains <LBody> + + + + + + + + + <TOCI> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <TOCI> contains <BibEntry> + + + + + + + + + <TOCI> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <TOCI> contains <Table> + + + + + + + + + <TOCI> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <TOCI> contains <TR> + + + + + + + + + <TOCI> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TOCI> contains <TH> + + + + + + + + + <TOCI> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TOCI> contains <TD> + + + + + + + + + <TOCI> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TOCI> contains <THead> + + + + + + + + + <TOCI> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TOCI> contains <TBody> + + + + + + + + + <TOCI> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TOCI> contains <TFoot> + + + + + + + + + <TOCI> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TOCI> contains <Caption> + + + + + + + + + <TOCI> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <TOCI> contains <Figure> + + + + + + + + + <TOCI> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <TOCI> contains <Formula> + + + + + + + + + <TOCI> shall not contain content item + hasContentItems == false + + <TOCI> contains content item(s) + + + + + + + + + <Aside> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Aside> contains <TOCI> + + + + + + + + + <Aside> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Aside> contains <Aside> + + + + + + + + + <Aside> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Aside> contains more than one <H> + + + + + + + + + <Aside> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Aside> contains <Title> + + + + + + + + + <Aside> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Aside> contains <Sub> + + + + + + + + + <Aside> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Aside> contains <Em> + + + + + + + + + <Aside> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Aside> contains <Strong> + + + + + + + + + <Aside> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Aside> contains <Span> + + + + + + + + + <Aside> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Aside> contains <Quote> + + + + + + + + + <Aside> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Aside> contains <Ruby> + + + + + + + + + <Aside> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Aside> contains <RB> + + + + + + + + + <Aside> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Aside> contains <RT> + + + + + + + + + <Aside> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Aside> contains <RP> + + + + + + + + + <Aside> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Aside> contains <Warichu> + + + + + + + + + <Aside> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Aside> contains <WT> + + + + + + + + + <Aside> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Aside> contains <WP> + + + + + + + + + <Aside> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Aside> contains <LI> + + + + + + + + + <Aside> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Aside> contains <LBody> + + + + + + + + + <Aside> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Aside> contains <BibEntry> + + + + + + + + + <Aside> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Aside> contains <TR> + + + + + + + + + <Aside> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Aside> contains <TH> + + + + + + + + + <Aside> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Aside> contains <TD> + + + + + + + + + <Aside> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Aside> contains <THead> + + + + + + + + + <Aside> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Aside> contains <TBody> + + + + + + + + + <Aside> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Aside> contains <TFoot> + + + + + + + + + <Aside> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Aside> contains more than one <Caption> + + + + + + + + + <BlockQuote> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <BlockQuote> contains <TOCI> + + + + + + + + + <BlockQuote> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <BlockQuote> contains <Aside> + + + + + + + + + <BlockQuote> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <BlockQuote> contains more than one <H> + + + + + + + + + <BlockQuote> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <BlockQuote> contains <Title> + + + + + + + + + <BlockQuote> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <BlockQuote> contains <Sub> + + + + + + + + + <BlockQuote> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <BlockQuote> contains <Em> + + + + + + + + + <BlockQuote> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <BlockQuote> contains <Strong> + + + + + + + + + <BlockQuote> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <BlockQuote> contains <Span> + + + + + + + + + <BlockQuote> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <BlockQuote> contains <Quote> + + + + + + + + + <BlockQuote> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <BlockQuote> contains <Ruby> + + + + + + + + + <BlockQuote> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <BlockQuote> contains <RB> + + + + + + + + + <BlockQuote> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <BlockQuote> contains <RT> + + + + + + + + + <BlockQuote> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <BlockQuote> contains <RP> + + + + + + + + + <BlockQuote> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <BlockQuote> contains <Warichu> + + + + + + + + + <BlockQuote> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <BlockQuote> contains <WT> + + + + + + + + + <BlockQuote> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <BlockQuote> contains <WP> + + + + + + + + + <BlockQuote> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <BlockQuote> contains <LI> + + + + + + + + + <BlockQuote> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <BlockQuote> contains <LBody> + + + + + + + + + <BlockQuote> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <BlockQuote> contains <BibEntry> + + + + + + + + + <BlockQuote> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <BlockQuote> contains <TR> + + + + + + + + + <BlockQuote> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <BlockQuote> contains <TH> + + + + + + + + + <BlockQuote> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <BlockQuote> contains <TD> + + + + + + + + + <BlockQuote> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <BlockQuote> contains <THead> + + + + + + + + + <BlockQuote> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <BlockQuote> contains <TBody> + + + + + + + + + <BlockQuote> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <BlockQuote> contains <TFoot> + + + + + + + + + <BlockQuote> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <BlockQuote> contains more than one <Caption> + + + + + + + + + <Title> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Title> contains <Document> + + + + + + + + + <Title> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Title> contains <DocumentFragment> + + + + + + + + + <Title> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Title> contains <Art> + + + + + + + + + <Title> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Title> contains <Sect> + + + + + + + + + <Title> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Title> contains <TOC> + + + + + + + + + <Title> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Title> contains <TOCI> + + + + + + + + + <Title> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Title> contains <BlockQuote> + + + + + + + + + <Title> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Title> contains <Hn> + + + + + + + + + <Title> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Title> contains <H> + + + + + + + + + <Title> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Title> contains <Title> + + + + + + + + + <Title> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Title> contains <Sub> + + + + + + + + + <Title> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Title> contains <RB> + + + + + + + + + <Title> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Title> contains <RT> + + + + + + + + + <Title> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Title> contains <RP> + + + + + + + + + <Title> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Title> contains <WT> + + + + + + + + + <Title> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Title> contains <WP> + + + + + + + + + <Title> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Title> contains <Index> + + + + + + + + + <Title> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Title> contains <LI> + + + + + + + + + <Title> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Title> contains <LBody> + + + + + + + + + <Title> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Title> contains <TR> + + + + + + + + + <Title> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Title> contains <TH> + + + + + + + + + <Title> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Title> contains <TD> + + + + + + + + + <Title> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Title> contains <THead> + + + + + + + + + <Title> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Title> contains <TBody> + + + + + + + + + <Title> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Title> contains <TFoot> + + + + + + + + + <Title> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Title> contains more than one <Caption> + + + + + + + + + <Sub> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Sub> contains <Document> + + + + + + + + + <Sub> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Sub> contains <DocumentFragment> + + + + + + + + + <Sub> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Sub> contains <Part> + + + + + + + + + <Sub> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Sub> contains <Art> + + + + + + + + + <Sub> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Sub> contains <Div> + + + + + + + + + <Sub> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Sub> contains <Sect> + + + + + + + + + <Sub> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Sub> contains <TOC> + + + + + + + + + <Sub> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Sub> contains <TOCI> + + + + + + + + + <Sub> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Sub> contains <Aside> + + + + + + + + + <Sub> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Sub> contains <BlockQuote> + + + + + + + + + <Sub> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Sub> contains <P> + + + + + + + + + <Sub> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Sub> contains <Hn> + + + + + + + + + <Sub> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Sub> contains <H> + + + + + + + + + <Sub> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Sub> contains <Title> + + + + + + + + + <Sub> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Sub> contains <Sub> + + + + + + + + + <Sub> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Sub> contains <RB> + + + + + + + + + <Sub> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Sub> contains <RT> + + + + + + + + + <Sub> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Sub> contains <RP> + + + + + + + + + <Sub> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Sub> contains <WT> + + + + + + + + + <Sub> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Sub> contains <WP> + + + + + + + + + <Sub> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Sub> contains <Index> + + + + + + + + + <Sub> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Sub> contains <LI> + + + + + + + + + <Sub> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Sub> contains <LBody> + + + + + + + + + <Sub> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Sub> contains <Table> + + + + + + + + + <Sub> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Sub> contains <TR> + + + + + + + + + <Sub> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Sub> contains <TH> + + + + + + + + + <Sub> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Sub> contains <TD> + + + + + + + + + <Sub> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Sub> contains <THead> + + + + + + + + + <Sub> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Sub> contains <TBody> + + + + + + + + + <Sub> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Sub> contains <TFoot> + + + + + + + + + <Sub> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Sub> contains <Caption> + + + + + + + + + <P> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <P> contains <Document> + + + + + + + + + <P> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <P> contains <DocumentFragment> + + + + + + + + + <P> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <P> contains <Part> + + + + + + + + + <P> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <P> contains <Art> + + + + + + + + + <P> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <P> contains <Div> + + + + + + + + + <P> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <P> contains <Sect> + + + + + + + + + <P> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <P> contains <TOC> + + + + + + + + + <P> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <P> contains <TOCI> + + + + + + + + + <P> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <P> contains <Aside> + + + + + + + + + <P> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <P> contains <BlockQuote> + + + + + + + + + <P> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <P> contains <P> + + + + + + + + + <P> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <P> contains <Hn> + + + + + + + + + <P> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <P> contains <H> + + + + + + + + + <P> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <P> contains <Title> + + + + + + + + + <P> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <P> contains <RB> + + + + + + + + + <P> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <P> contains <RT> + + + + + + + + + <P> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <P> contains <RP> + + + + + + + + + <P> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <P> contains <WT> + + + + + + + + + <P> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <P> contains <WP> + + + + + + + + + <P> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <P> contains <Index> + + + + + + + + + <P> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <P> contains <LI> + + + + + + + + + <P> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <P> contains <LBody> + + + + + + + + + <P> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <P> contains <TR> + + + + + + + + + <P> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <P> contains <TH> + + + + + + + + + <P> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <P> contains <TD> + + + + + + + + + <P> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <P> contains <THead> + + + + + + + + + <P> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <P> contains <TBody> + + + + + + + + + <P> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <P> contains <TFoot> + + + + + + + + + <P> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <P> contains <Caption> + + + + + + + + + <Note> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Note> contains <Document> + + + + + + + + + <Note> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Note> contains <TOC> + + + + + + + + + <Note> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Note> contains <TOCI> + + + + + + + + + <Note> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Note> contains <Hn> + + + + + + + + + <Note> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Note> contains <H> + + + + + + + + + <Note> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Note> contains <Title> + + + + + + + + + <Note> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Note> contains <RB> + + + + + + + + + <Note> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Note> contains <RT> + + + + + + + + + <Note> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Note> contains <RP> + + + + + + + + + <Note> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Note> contains <WT> + + + + + + + + + <Note> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Note> contains <WP> + + + + + + + + + <Note> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Note> contains <LI> + + + + + + + + + <Note> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Note> contains <LBody> + + + + + + + + + <Note> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Note> contains <TR> + + + + + + + + + <Note> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Note> contains <TH> + + + + + + + + + <Note> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Note> contains <TD> + + + + + + + + + <Note> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Note> contains <THead> + + + + + + + + + <Note> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Note> contains <TBody> + + + + + + + + + <Note> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Note> contains <TFoot> + + + + + + + + + <Code> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Code> contains <Document> + + + + + + + + + <Code> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Code> contains <Art> + + + + + + + + + <Code> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Code> contains <Sect> + + + + + + + + + <Code> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Code> contains <TOC> + + + + + + + + + <Code> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Code> contains <TOCI> + + + + + + + + + <Code> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Code> contains <Aside> + + + + + + + + + <Code> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Code> contains <BlockQuote> + + + + + + + + + <Code> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Code> contains <P> + + + + + + + + + <Code> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Code> contains <Code> + + + + + + + + + <Code> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Code> contains <Hn> + + + + + + + + + <Code> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Code> contains <H> + + + + + + + + + <Code> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Code> contains <Title> + + + + + + + + + <Code> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Code> contains <Sub> + + + + + + + + + <Code> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Code> contains <Lbl> + + + + + + + + + <Code> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Code> contains <Quote> + + + + + + + + + <Code> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Code> contains <Form> + + + + + + + + + <Code> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Code> contains <Ruby> + + + + + + + + + <Code> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Code> contains <RB> + + + + + + + + + <Code> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Code> contains <RT> + + + + + + + + + <Code> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Code> contains <RP> + + + + + + + + + <Code> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Code> contains <Warichu> + + + + + + + + + <Code> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Code> contains <WT> + + + + + + + + + <Code> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Code> contains <WP> + + + + + + + + + <Code> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Code> contains <Index> + + + + + + + + + <Code> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Code> contains <L> + + + + + + + + + <Code> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Code> contains <LI> + + + + + + + + + <Code> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Code> contains <LBody> + + + + + + + + + <Code> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Code> contains <Table> + + + + + + + + + <Code> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Code> contains <TR> + + + + + + + + + <Code> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Code> contains <TH> + + + + + + + + + <Code> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Code> contains <TD> + + + + + + + + + <Code> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Code> contains <THead> + + + + + + + + + <Code> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Code> contains <TBody> + + + + + + + + + <Code> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Code> contains <TFoot> + + + + + + + + + <Code> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Code> contains <Caption> + + + + + + + + + <Code> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <Code> contains <Figure> + + + + + + + + + <Code> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <Code> contains <Formula> + + + + + + + + + <Hn> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Hn> contains <Document> + + + + + + + + + <Hn> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Hn> contains <DocumentFragment> + + + + + + + + + <Hn> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Hn> contains <Part> + + + + + + + + + <Hn> shall contain at most one <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1 + + <Hn> contains more than one <Art> + + + + + + + + + <Hn> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Hn> contains <Div> + + + + + + + + + <Hn> shall contain at most one <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1 + + <Hn> contains more than one <Sect> + + + + + + + + + <Hn> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Hn> contains <TOC> + + + + + + + + + <Hn> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Hn> contains <TOCI> + + + + + + + + + <Hn> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Hn> contains <Aside> + + + + + + + + + <Hn> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Hn> contains <BlockQuote> + + + + + + + + + <Hn> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Hn> contains <P> + + + + + + + + + <Hn> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Hn> contains <Hn> + + + + + + + + + <Hn> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Hn> contains <H> + + + + + + + + + <Hn> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Hn> contains <Title> + + + + + + + + + <Hn> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Hn> contains <RB> + + + + + + + + + <Hn> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Hn> contains <RT> + + + + + + + + + <Hn> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Hn> contains <RP> + + + + + + + + + <Hn> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Hn> contains <WT> + + + + + + + + + <Hn> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Hn> contains <WP> + + + + + + + + + <Hn> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Hn> contains <Index> + + + + + + + + + <Hn> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Hn> contains <L> + + + + + + + + + <Hn> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Hn> contains <LI> + + + + + + + + + <Hn> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Hn> contains <LBody> + + + + + + + + + <Hn> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Hn> contains <Table> + + + + + + + + + <Hn> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Hn> contains <TR> + + + + + + + + + <Hn> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Hn> contains <TH> + + + + + + + + + <Hn> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Hn> contains <TD> + + + + + + + + + <Hn> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Hn> contains <THead> + + + + + + + + + <Hn> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Hn> contains <TBody> + + + + + + + + + <Hn> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Hn> contains <TFoot> + + + + + + + + + <Hn> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Hn> contains <Caption> + + + + + + + + + <H> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <H> contains <Document> + + + + + + + + + <H> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <H> contains <DocumentFragment> + + + + + + + + + <H> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <H> contains <Part> + + + + + + + + + <H> shall contain at most one <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1 + + <H> contains more than one <Art> + + + + + + + + + <H> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <H> contains <Div> + + + + + + + + + <H> shall contain at most one <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1 + + <H> contains more than one <Sect> + + + + + + + + + <H> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <H> contains <TOC> + + + + + + + + + <H> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <H> contains <TOCI> + + + + + + + + + <H> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <H> contains <Aside> + + + + + + + + + <H> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <H> contains <BlockQuote> + + + + + + + + + <H> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <H> contains <P> + + + + + + + + + <H> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <H> contains <Hn> + + + + + + + + + <H> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <H> contains <H> + + + + + + + + + <H> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <H> contains <Title> + + + + + + + + + <H> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <H> contains <RB> + + + + + + + + + <H> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <H> contains <RT> + + + + + + + + + <H> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <H> contains <RP> + + + + + + + + + <H> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <H> contains <WT> + + + + + + + + + <H> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <H> contains <WP> + + + + + + + + + <H> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <H> contains <Index> + + + + + + + + + <H> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <H> contains <L> + + + + + + + + + <H> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <H> contains <LI> + + + + + + + + + <H> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <H> contains <LBody> + + + + + + + + + <H> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <H> contains <Table> + + + + + + + + + <H> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <H> contains <TR> + + + + + + + + + <H> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <H> contains <TH> + + + + + + + + + <H> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <H> contains <TD> + + + + + + + + + <H> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <H> contains <THead> + + + + + + + + + <H> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <H> contains <TBody> + + + + + + + + + <H> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <H> contains <TFoot> + + + + + + + + + <H> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <H> contains <Caption> + + + + + + + + + <Lbl> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Lbl> contains <Document> + + + + + + + + + <Lbl> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Lbl> contains <DocumentFragment> + + + + + + + + + <Lbl> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Lbl> contains <Part> + + + + + + + + + <Lbl> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Lbl> contains <Art> + + + + + + + + + <Lbl> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Lbl> contains <Div> + + + + + + + + + <Lbl> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Lbl> contains <Sect> + + + + + + + + + <Lbl> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Lbl> contains <TOC> + + + + + + + + + <Lbl> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Lbl> contains <TOCI> + + + + + + + + + <Lbl> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Lbl> contains <Aside> + + + + + + + + + <Lbl> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Lbl> contains <BlockQuote> + + + + + + + + + <Lbl> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Lbl> contains <P> + + + + + + + + + <Lbl> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Lbl> contains <Hn> + + + + + + + + + <Lbl> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Lbl> contains <H> + + + + + + + + + <Lbl> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Lbl> contains <Title> + + + + + + + + + <Lbl> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Lbl> contains <Lbl> + + + + + + + + + <Lbl> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Lbl> contains <RB> + + + + + + + + + <Lbl> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Lbl> contains <RT> + + + + + + + + + <Lbl> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Lbl> contains <RP> + + + + + + + + + <Lbl> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Lbl> contains <WT> + + + + + + + + + <Lbl> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Lbl> contains <WP> + + + + + + + + + <Lbl> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Lbl> contains <Index> + + + + + + + + + <Lbl> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Lbl> contains <L> + + + + + + + + + <Lbl> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Lbl> contains <LI> + + + + + + + + + <Lbl> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Lbl> contains <LBody> + + + + + + + + + <Lbl> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Lbl> contains <Table> + + + + + + + + + <Lbl> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Lbl> contains <TR> + + + + + + + + + <Lbl> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Lbl> contains <TH> + + + + + + + + + <Lbl> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Lbl> contains <TD> + + + + + + + + + <Lbl> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Lbl> contains <THead> + + + + + + + + + <Lbl> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Lbl> contains <TBody> + + + + + + + + + <Lbl> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Lbl> contains <TFoot> + + + + + + + + + <Lbl> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Lbl> contains <Caption> + + + + + + + + + <Em> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Em> contains <Document> + + + + + + + + + <Em> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Em> contains <DocumentFragment> + + + + + + + + + <Em> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Em> contains <Part> + + + + + + + + + <Em> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Em> contains <Art> + + + + + + + + + <Em> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Em> contains <Div> + + + + + + + + + <Em> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Em> contains <Sect> + + + + + + + + + <Em> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Em> contains <TOC> + + + + + + + + + <Em> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Em> contains <TOCI> + + + + + + + + + <Em> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Em> contains <Aside> + + + + + + + + + <Em> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Em> contains <BlockQuote> + + + + + + + + + <Em> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Em> contains <P> + + + + + + + + + <Em> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Em> contains <Hn> + + + + + + + + + <Em> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Em> contains <H> + + + + + + + + + <Em> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Em> contains <Title> + + + + + + + + + <Em> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Em> contains <RB> + + + + + + + + + <Em> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Em> contains <RT> + + + + + + + + + <Em> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Em> contains <RP> + + + + + + + + + <Em> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Em> contains <WT> + + + + + + + + + <Em> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Em> contains <WP> + + + + + + + + + <Em> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Em> contains <Index> + + + + + + + + + <Em> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Em> contains <L> + + + + + + + + + <Em> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Em> contains <LI> + + + + + + + + + <Em> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Em> contains <LBody> + + + + + + + + + <Em> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Em> contains <Table> + + + + + + + + + <Em> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Em> contains <TR> + + + + + + + + + <Em> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Em> contains <TH> + + + + + + + + + <Em> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Em> contains <TD> + + + + + + + + + <Em> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Em> contains <THead> + + + + + + + + + <Em> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Em> contains <TBody> + + + + + + + + + <Em> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Em> contains <TFoot> + + + + + + + + + <Em> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Em> contains <Caption> + + + + + + + + + <Strong> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Strong> contains <Document> + + + + + + + + + <Strong> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Strong> contains <DocumentFragment> + + + + + + + + + <Strong> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Strong> contains <Part> + + + + + + + + + <Strong> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Strong> contains <Art> + + + + + + + + + <Strong> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Strong> contains <Div> + + + + + + + + + <Strong> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Strong> contains <Sect> + + + + + + + + + <Strong> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Strong> contains <TOC> + + + + + + + + + <Strong> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Strong> contains <TOCI> + + + + + + + + + <Strong> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Strong> contains <Aside> + + + + + + + + + <Strong> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Strong> contains <BlockQuote> + + + + + + + + + <Strong> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Strong> contains <P> + + + + + + + + + <Strong> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Strong> contains <Hn> + + + + + + + + + <Strong> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Strong> contains <H> + + + + + + + + + <Strong> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Strong> contains <Title> + + + + + + + + + <Strong> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Strong> contains <RB> + + + + + + + + + <Strong> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Strong> contains <RT> + + + + + + + + + <Strong> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Strong> contains <RP> + + + + + + + + + <Strong> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Strong> contains <WT> + + + + + + + + + <Strong> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Strong> contains <WP> + + + + + + + + + <Strong> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Strong> contains <Index> + + + + + + + + + <Strong> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Strong> contains <L> + + + + + + + + + <Strong> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Strong> contains <LI> + + + + + + + + + <Strong> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Strong> contains <LBody> + + + + + + + + + <Strong> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Strong> contains <Table> + + + + + + + + + <Strong> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Strong> contains <TR> + + + + + + + + + <Strong> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Strong> contains <TH> + + + + + + + + + <Strong> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Strong> contains <TD> + + + + + + + + + <Strong> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Strong> contains <THead> + + + + + + + + + <Strong> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Strong> contains <TBody> + + + + + + + + + <Strong> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Strong> contains <TFoot> + + + + + + + + + <Strong> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Strong> contains <Caption> + + + + + + + + + <Span> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Span> contains <Document> + + + + + + + + + <Span> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Span> contains <DocumentFragment> + + + + + + + + + <Span> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Span> contains <Part> + + + + + + + + + <Span> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Span> contains <Art> + + + + + + + + + <Span> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Span> contains <Div> + + + + + + + + + <Span> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Span> contains <Sect> + + + + + + + + + <Span> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Span> contains <TOC> + + + + + + + + + <Span> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Span> contains <TOCI> + + + + + + + + + <Span> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Span> contains <Aside> + + + + + + + + + <Span> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Span> contains <BlockQuote> + + + + + + + + + <Span> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Span> contains <P> + + + + + + + + + <Span> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Span> contains <Hn> + + + + + + + + + <Span> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Span> contains <H> + + + + + + + + + <Span> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Span> contains <Title> + + + + + + + + + <Span> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Span> contains <RB> + + + + + + + + + <Span> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Span> contains <RT> + + + + + + + + + <Span> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Span> contains <RP> + + + + + + + + + <Span> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Span> contains <WT> + + + + + + + + + <Span> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Span> contains <WP> + + + + + + + + + <Span> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Span> contains <Index> + + + + + + + + + <Span> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Span> contains <L> + + + + + + + + + <Span> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Span> contains <LI> + + + + + + + + + <Span> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Span> contains <LBody> + + + + + + + + + <Span> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Span> contains <Table> + + + + + + + + + <Span> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Span> contains <TR> + + + + + + + + + <Span> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Span> contains <TH> + + + + + + + + + <Span> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Span> contains <TD> + + + + + + + + + <Span> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Span> contains <THead> + + + + + + + + + <Span> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Span> contains <TBody> + + + + + + + + + <Span> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Span> contains <TFoot> + + + + + + + + + <Span> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Span> contains <Caption> + + + + + + + + + <Quote> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Quote> contains <Document> + + + + + + + + + <Quote> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Quote> contains <DocumentFragment> + + + + + + + + + <Quote> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Quote> contains <Part> + + + + + + + + + <Quote> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Quote> contains <Art> + + + + + + + + + <Quote> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Quote> contains <Div> + + + + + + + + + <Quote> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Quote> contains <Sect> + + + + + + + + + <Quote> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Quote> contains <TOC> + + + + + + + + + <Quote> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Quote> contains <TOCI> + + + + + + + + + <Quote> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Quote> contains <Aside> + + + + + + + + + <Quote> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Quote> contains <BlockQuote> + + + + + + + + + <Quote> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Quote> contains <P> + + + + + + + + + <Quote> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Quote> contains <Hn> + + + + + + + + + <Quote> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Quote> contains <H> + + + + + + + + + <Quote> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Quote> contains <Title> + + + + + + + + + <Quote> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Quote> contains <RB> + + + + + + + + + <Quote> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Quote> contains <RT> + + + + + + + + + <Quote> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Quote> contains <RP> + + + + + + + + + <Quote> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Quote> contains <WT> + + + + + + + + + <Quote> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Quote> contains <WP> + + + + + + + + + <Quote> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Quote> contains <Index> + + + + + + + + + <Quote> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Quote> contains <L> + + + + + + + + + <Quote> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Quote> contains <LI> + + + + + + + + + <Quote> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Quote> contains <LBody> + + + + + + + + + <Quote> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Quote> contains <Table> + + + + + + + + + <Quote> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Quote> contains <TR> + + + + + + + + + <Quote> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Quote> contains <TH> + + + + + + + + + <Quote> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Quote> contains <TD> + + + + + + + + + <Quote> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Quote> contains <THead> + + + + + + + + + <Quote> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Quote> contains <TBody> + + + + + + + + + <Quote> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Quote> contains <TFoot> + + + + + + + + + <Quote> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Quote> contains <Caption> + + + + + + + + + <Link> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Link> contains <Document> + + + + + + + + + <Link> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Link> contains <TOC> + + + + + + + + + <Link> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Link> contains <TOCI> + + + + + + + + + <Link> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Link> contains <Link> + + + + + + + + + <Link> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Link> contains <RB> + + + + + + + + + <Link> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Link> contains <RT> + + + + + + + + + <Link> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Link> contains <RP> + + + + + + + + + <Link> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Link> contains <WT> + + + + + + + + + <Link> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Link> contains <WP> + + + + + + + + + <Link> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Link> contains <Index> + + + + + + + + + <Link> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Link> contains <LI> + + + + + + + + + <Link> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Link> contains <LBody> + + + + + + + + + <Link> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Link> contains <TR> + + + + + + + + + <Link> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Link> contains <TH> + + + + + + + + + <Link> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Link> contains <TD> + + + + + + + + + <Link> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Link> contains <THead> + + + + + + + + + <Link> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Link> contains <TBody> + + + + + + + + + <Link> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Link> contains <TFoot> + + + + + + + + + <Reference> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Reference> contains <Document> + + + + + + + + + <Reference> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Reference> contains <DocumentFragment> + + + + + + + + + <Reference> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Reference> contains <Part> + + + + + + + + + <Reference> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Reference> contains <Art> + + + + + + + + + <Reference> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Reference> contains <Div> + + + + + + + + + <Reference> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Reference> contains <Sect> + + + + + + + + + <Reference> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Reference> contains <TOC> + + + + + + + + + <Reference> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Reference> contains <TOCI> + + + + + + + + + <Reference> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Reference> contains <Aside> + + + + + + + + + <Reference> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Reference> contains <BlockQuote> + + + + + + + + + <Reference> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Reference> contains <P> + + + + + + + + + <Reference> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Reference> contains <Code> + + + + + + + + + <Reference> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Reference> contains <Hn> + + + + + + + + + <Reference> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Reference> contains <H> + + + + + + + + + <Reference> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Reference> contains <Title> + + + + + + + + + <Reference> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Reference> contains <Sub> + + + + + + + + + <Reference> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Reference> contains <Quote> + + + + + + + + + <Reference> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Reference> contains <Reference> + + + + + + + + + <Reference> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Reference> contains <Form> + + + + + + + + + <Reference> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Reference> contains <Ruby> + + + + + + + + + <Reference> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Reference> contains <RB> + + + + + + + + + <Reference> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Reference> contains <RT> + + + + + + + + + <Reference> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Reference> contains <RP> + + + + + + + + + <Reference> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Reference> contains <Warichu> + + + + + + + + + <Reference> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Reference> contains <WT> + + + + + + + + + <Reference> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Reference> contains <WP> + + + + + + + + + <Reference> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Reference> contains <Index> + + + + + + + + + <Reference> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Reference> contains <L> + + + + + + + + + <Reference> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Reference> contains <LI> + + + + + + + + + <Reference> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Reference> contains <LBody> + + + + + + + + + <Reference> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Reference> contains <Table> + + + + + + + + + <Reference> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Reference> contains <TR> + + + + + + + + + <Reference> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Reference> contains <TH> + + + + + + + + + <Reference> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Reference> contains <TD> + + + + + + + + + <Reference> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Reference> contains <THead> + + + + + + + + + <Reference> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Reference> contains <TBody> + + + + + + + + + <Reference> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Reference> contains <TFoot> + + + + + + + + + <Reference> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Reference> contains <Caption> + + + + + + + + + <Reference> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <Reference> contains <Formula> + + + + + + + + + <Annot> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Annot> contains <Document> + + + + + + + + + <Annot> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Annot> contains <TOC> + + + + + + + + + <Annot> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Annot> contains <TOCI> + + + + + + + + + <Annot> shall not contain <Private> + kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0 + + <Annot> contains <Private> + + + + + + + + + <Annot> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Annot> contains <RB> + + + + + + + + + <Annot> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Annot> contains <RT> + + + + + + + + + <Annot> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Annot> contains <RP> + + + + + + + + + <Annot> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Annot> contains <WT> + + + + + + + + + <Annot> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Annot> contains <WP> + + + + + + + + + <Annot> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Annot> contains <Index> + + + + + + + + + <Annot> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Annot> contains <LI> + + + + + + + + + <Annot> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Annot> contains <LBody> + + + + + + + + + <Annot> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Annot> contains <TR> + + + + + + + + + <Annot> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Annot> contains <TH> + + + + + + + + + <Annot> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Annot> contains <TD> + + + + + + + + + <Annot> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Annot> contains <THead> + + + + + + + + + <Annot> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Annot> contains <TBody> + + + + + + + + + <Annot> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Annot> contains <TFoot> + + + + + + + + + <Form> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Form> contains <Document> + + + + + + + + + <Form> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Form> contains <DocumentFragment> + + + + + + + + + <Form> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Form> contains <Art> + + + + + + + + + <Form> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Form> contains <Sect> + + + + + + + + + <Form> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Form> contains <TOC> + + + + + + + + + <Form> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Form> contains <TOCI> + + + + + + + + + <Form> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Form> contains <Aside> + + + + + + + + + <Form> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Form> contains <BlockQuote> + + + + + + + + + <Form> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Form> contains <P> + + + + + + + + + <Form> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Form> contains <Hn> + + + + + + + + + <Form> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Form> contains <H> + + + + + + + + + <Form> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Form> contains <Title> + + + + + + + + + <Form> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Form> contains <Sub> + + + + + + + + + <Form> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Form> contains <Em> + + + + + + + + + <Form> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Form> contains <Strong> + + + + + + + + + <Form> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Form> contains <Span> + + + + + + + + + <Form> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Form> contains <Quote> + + + + + + + + + <Form> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Form> contains <Link> + + + + + + + + + <Form> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <Form> contains <Annot> + + + + + + + + + <Form> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Form> contains <Form> + + + + + + + + + <Form> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Form> contains <Ruby> + + + + + + + + + <Form> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Form> contains <RB> + + + + + + + + + <Form> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Form> contains <RT> + + + + + + + + + <Form> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Form> contains <RP> + + + + + + + + + <Form> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Form> contains <Warichu> + + + + + + + + + <Form> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Form> contains <WT> + + + + + + + + + <Form> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Form> contains <WP> + + + + + + + + + <Form> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Form> contains <Index> + + + + + + + + + <Form> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Form> contains <LI> + + + + + + + + + <Form> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Form> contains <LBody> + + + + + + + + + <Form> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Form> contains <TR> + + + + + + + + + <Form> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Form> contains <TH> + + + + + + + + + <Form> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Form> contains <TD> + + + + + + + + + <Form> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Form> contains <THead> + + + + + + + + + <Form> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Form> contains <TBody> + + + + + + + + + <Form> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Form> contains <TFoot> + + + + + + + + + <Form> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Form> contains more than one <Caption> + + + + + + + + + <Ruby> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Ruby> contains <Document> + + + + + + + + + <Ruby> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Ruby> contains <DocumentFragment> + + + + + + + + + <Ruby> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Ruby> contains <Part> + + + + + + + + + <Ruby> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Ruby> contains <Art> + + + + + + + + + <Ruby> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Ruby> contains <Div> + + + + + + + + + <Ruby> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Ruby> contains <Sect> + + + + + + + + + <Ruby> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Ruby> contains <TOC> + + + + + + + + + <Ruby> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Ruby> contains <TOCI> + + + + + + + + + <Ruby> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Ruby> contains <Aside> + + + + + + + + + <Ruby> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Ruby> contains <BlockQuote> + + + + + + + + + <Ruby> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Ruby> contains <P> + + + + + + + + + <Ruby> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <Ruby> contains <Note> + + + + + + + + + <Ruby> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Ruby> contains <Code> + + + + + + + + + <Ruby> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Ruby> contains <Hn> + + + + + + + + + <Ruby> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Ruby> contains <H> + + + + + + + + + <Ruby> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Ruby> contains <Title> + + + + + + + + + <Ruby> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Ruby> contains <Sub> + + + + + + + + + <Ruby> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Ruby> contains <Lbl> + + + + + + + + + <Ruby> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Ruby> contains <Em> + + + + + + + + + <Ruby> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Ruby> contains <Strong> + + + + + + + + + <Ruby> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Ruby> contains <Span> + + + + + + + + + <Ruby> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Ruby> contains <Quote> + + + + + + + + + <Ruby> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Ruby> contains <Link> + + + + + + + + + <Ruby> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Ruby> contains <Reference> + + + + + + + + + <Ruby> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <Ruby> contains <Annot> + + + + + + + + + <Ruby> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Ruby> contains <Form> + + + + + + + + + <Ruby> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Ruby> contains <Ruby> + + + + + + + + + <Ruby> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Ruby> contains <Warichu> + + + + + + + + + <Ruby> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Ruby> contains <WT> + + + + + + + + + <Ruby> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Ruby> contains <WP> + + + + + + + + + <Ruby> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <Ruby> contains <FENote> + + + + + + + + + <Ruby> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Ruby> contains <Index> + + + + + + + + + <Ruby> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Ruby> contains <L> + + + + + + + + + <Ruby> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Ruby> contains <LI> + + + + + + + + + <Ruby> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Ruby> contains <LBody> + + + + + + + + + <Ruby> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Ruby> contains <BibEntry> + + + + + + + + + <Ruby> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Ruby> contains <Table> + + + + + + + + + <Ruby> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Ruby> contains <TR> + + + + + + + + + <Ruby> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Ruby> contains <TH> + + + + + + + + + <Ruby> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Ruby> contains <TD> + + + + + + + + + <Ruby> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Ruby> contains <THead> + + + + + + + + + <Ruby> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Ruby> contains <TBody> + + + + + + + + + <Ruby> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Ruby> contains <TFoot> + + + + + + + + + <Ruby> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Ruby> contains <Caption> + + + + + + + + + <Ruby> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <Ruby> contains <Figure> + + + + + + + + + <Ruby> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <Ruby> contains <Formula> + + + + + + + + + <Ruby> shall not contain <Artifact> + kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + + <Ruby> contains <Artifact> + + + + + + + + + <RB> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <RB> contains <Document> + + + + + + + + + <RB> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <RB> contains <DocumentFragment> + + + + + + + + + <RB> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <RB> contains <Part> + + + + + + + + + <RB> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <RB> contains <Art> + + + + + + + + + <RB> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <RB> contains <Div> + + + + + + + + + <RB> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <RB> contains <Sect> + + + + + + + + + <RB> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <RB> contains <TOC> + + + + + + + + + <RB> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <RB> contains <TOCI> + + + + + + + + + <RB> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <RB> contains <Aside> + + + + + + + + + <RB> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <RB> contains <BlockQuote> + + + + + + + + + <RB> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <RB> contains <P> + + + + + + + + + <RB> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <RB> contains <Note> + + + + + + + + + <RB> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <RB> contains <Code> + + + + + + + + + <RB> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <RB> contains <Hn> + + + + + + + + + <RB> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <RB> contains <H> + + + + + + + + + <RB> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <RB> contains <Title> + + + + + + + + + <RB> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <RB> contains <Lbl> + + + + + + + + + <RB> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <RB> contains <Ruby> + + + + + + + + + <RB> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <RB> contains <RB> + + + + + + + + + <RB> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <RB> contains <RT> + + + + + + + + + <RB> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <RB> contains <RP> + + + + + + + + + <RB> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <RB> contains <Warichu> + + + + + + + + + <RB> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <RB> contains <WT> + + + + + + + + + <RB> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <RB> contains <WP> + + + + + + + + + <RB> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <RB> contains <FENote> + + + + + + + + + <RB> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <RB> contains <Index> + + + + + + + + + <RB> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <RB> contains <L> + + + + + + + + + <RB> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <RB> contains <LI> + + + + + + + + + <RB> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <RB> contains <LBody> + + + + + + + + + <RB> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <RB> contains <BibEntry> + + + + + + + + + <RB> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <RB> contains <Table> + + + + + + + + + <RB> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <RB> contains <TR> + + + + + + + + + <RB> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <RB> contains <TH> + + + + + + + + + <RB> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <RB> contains <TD> + + + + + + + + + <RB> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <RB> contains <THead> + + + + + + + + + <RB> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <RB> contains <TBody> + + + + + + + + + <RB> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <RB> contains <TFoot> + + + + + + + + + <RB> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <RB> contains <Caption> + + + + + + + + + <RB> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <RB> contains <Figure> + + + + + + + + + <RB> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <RB> contains <Formula> + + + + + + + + + <RT> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <RT> contains <Document> + + + + + + + + + <RT> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <RT> contains <DocumentFragment> + + + + + + + + + <RT> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <RT> contains <Part> + + + + + + + + + <RT> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <RT> contains <Art> + + + + + + + + + <RT> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <RT> contains <Div> + + + + + + + + + <RT> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <RT> contains <Sect> + + + + + + + + + <RT> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <RT> contains <TOC> + + + + + + + + + <RT> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <RT> contains <TOCI> + + + + + + + + + <RT> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <RT> contains <Aside> + + + + + + + + + <RT> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <RT> contains <BlockQuote> + + + + + + + + + <RT> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <RT> contains <P> + + + + + + + + + <RT> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <RT> contains <Note> + + + + + + + + + <RT> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <RT> contains <Code> + + + + + + + + + <RT> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <RT> contains <Hn> + + + + + + + + + <RT> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <RT> contains <H> + + + + + + + + + <RT> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <RT> contains <Title> + + + + + + + + + <RT> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <RT> contains <Lbl> + + + + + + + + + <RT> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <RT> contains <Ruby> + + + + + + + + + <RT> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <RT> contains <RB> + + + + + + + + + <RT> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <RT> contains <RT> + + + + + + + + + <RT> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <RT> contains <RP> + + + + + + + + + <RT> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <RT> contains <Warichu> + + + + + + + + + <RT> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <RT> contains <WT> + + + + + + + + + <RT> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <RT> contains <WP> + + + + + + + + + <RT> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <RT> contains <FENote> + + + + + + + + + <RT> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <RT> contains <Index> + + + + + + + + + <RT> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <RT> contains <L> + + + + + + + + + <RT> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <RT> contains <LI> + + + + + + + + + <RT> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <RT> contains <LBody> + + + + + + + + + <RT> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <RT> contains <BibEntry> + + + + + + + + + <RT> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <RT> contains <Table> + + + + + + + + + <RT> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <RT> contains <TR> + + + + + + + + + <RT> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <RT> contains <TH> + + + + + + + + + <RT> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <RT> contains <TD> + + + + + + + + + <RT> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <RT> contains <THead> + + + + + + + + + <RT> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <RT> contains <TBody> + + + + + + + + + <RT> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <RT> contains <TFoot> + + + + + + + + + <RT> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <RT> contains <Caption> + + + + + + + + + <RT> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <RT> contains <Figure> + + + + + + + + + <RT> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <RT> contains <Formula> + + + + + + + + + <RP> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <RP> contains <Document> + + + + + + + + + <RP> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <RP> contains <DocumentFragment> + + + + + + + + + <RP> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <RP> contains <Part> + + + + + + + + + <RP> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <RP> contains <Art> + + + + + + + + + <RP> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <RP> contains <Div> + + + + + + + + + <RP> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <RP> contains <Sect> + + + + + + + + + <RP> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <RP> contains <TOC> + + + + + + + + + <RP> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <RP> contains <TOCI> + + + + + + + + + <RP> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <RP> contains <Aside> + + + + + + + + + <RP> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <RP> contains <BlockQuote> + + + + + + + + + <RP> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <RP> contains <P> + + + + + + + + + <RP> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <RP> contains <Note> + + + + + + + + + <RP> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <RP> contains <Code> + + + + + + + + + <RP> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <RP> contains <Hn> + + + + + + + + + <RP> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <RP> contains <H> + + + + + + + + + <RP> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <RP> contains <Title> + + + + + + + + + <RP> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <RP> contains <Lbl> + + + + + + + + + <RP> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <RP> contains <Ruby> + + + + + + + + + <RP> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <RP> contains <RB> + + + + + + + + + <RP> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <RP> contains <RT> + + + + + + + + + <RP> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <RP> contains <RP> + + + + + + + + + <RP> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <RP> contains <Warichu> + + + + + + + + + <RP> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <RP> contains <WT> + + + + + + + + + <RP> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <RP> contains <WP> + + + + + + + + + <RP> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <RP> contains <FENote> + + + + + + + + + <RP> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <RP> contains <Index> + + + + + + + + + <RP> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <RP> contains <L> + + + + + + + + + <RP> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <RP> contains <LI> + + + + + + + + + <RP> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <RP> contains <LBody> + + + + + + + + + <RP> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <RP> contains <BibEntry> + + + + + + + + + <RP> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <RP> contains <Table> + + + + + + + + + <RP> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <RP> contains <TR> + + + + + + + + + <RP> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <RP> contains <TH> + + + + + + + + + <RP> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <RP> contains <TD> + + + + + + + + + <RP> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <RP> contains <THead> + + + + + + + + + <RP> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <RP> contains <TBody> + + + + + + + + + <RP> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <RP> contains <TFoot> + + + + + + + + + <RP> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <RP> contains <Caption> + + + + + + + + + <RP> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <RP> contains <Figure> + + + + + + + + + <RP> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <RP> contains <Formula> + + + + + + + + + <Warichu> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Warichu> contains <Document> + + + + + + + + + <Warichu> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Warichu> contains <DocumentFragment> + + + + + + + + + <Warichu> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Warichu> contains <Part> + + + + + + + + + <Warichu> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Warichu> contains <Art> + + + + + + + + + <Warichu> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Warichu> contains <Div> + + + + + + + + + <Warichu> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Warichu> contains <Sect> + + + + + + + + + <Warichu> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Warichu> contains <TOC> + + + + + + + + + <Warichu> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Warichu> contains <TOCI> + + + + + + + + + <Warichu> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Warichu> contains <Aside> + + + + + + + + + <Warichu> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Warichu> contains <BlockQuote> + + + + + + + + + <Warichu> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Warichu> contains <P> + + + + + + + + + <Warichu> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <Warichu> contains <Note> + + + + + + + + + <Warichu> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Warichu> contains <Code> + + + + + + + + + <Warichu> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Warichu> contains <Hn> + + + + + + + + + <Warichu> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Warichu> contains <H> + + + + + + + + + <Warichu> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Warichu> contains <Title> + + + + + + + + + <Warichu> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Warichu> contains <Sub> + + + + + + + + + <Warichu> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Warichu> contains <Lbl> + + + + + + + + + <Warichu> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Warichu> contains <Em> + + + + + + + + + <Warichu> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Warichu> contains <Strong> + + + + + + + + + <Warichu> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Warichu> contains <Span> + + + + + + + + + <Warichu> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Warichu> contains <Quote> + + + + + + + + + <Warichu> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Warichu> contains <Link> + + + + + + + + + <Warichu> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Warichu> contains <Reference> + + + + + + + + + <Warichu> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <Warichu> contains <Annot> + + + + + + + + + <Warichu> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Warichu> contains <Form> + + + + + + + + + <Warichu> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Warichu> contains <Ruby> + + + + + + + + + <Warichu> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Warichu> contains <RB> + + + + + + + + + <Warichu> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Warichu> contains <RT> + + + + + + + + + <Warichu> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Warichu> contains <RP> + + + + + + + + + <Warichu> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Warichu> contains <Warichu> + + + + + + + + + <Warichu> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <Warichu> contains <FENote> + + + + + + + + + <Warichu> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Warichu> contains <Index> + + + + + + + + + <Warichu> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Warichu> contains <L> + + + + + + + + + <Warichu> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Warichu> contains <LI> + + + + + + + + + <Warichu> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Warichu> contains <LBody> + + + + + + + + + <Warichu> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Warichu> contains <BibEntry> + + + + + + + + + <Warichu> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Warichu> contains <Table> + + + + + + + + + <Warichu> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Warichu> contains <TR> + + + + + + + + + <Warichu> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Warichu> contains <TH> + + + + + + + + + <Warichu> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Warichu> contains <TD> + + + + + + + + + <Warichu> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Warichu> contains <THead> + + + + + + + + + <Warichu> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Warichu> contains <TBody> + + + + + + + + + <Warichu> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Warichu> contains <TFoot> + + + + + + + + + <Warichu> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Warichu> contains <Caption> + + + + + + + + + <Warichu> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <Warichu> contains <Figure> + + + + + + + + + <Warichu> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <Warichu> contains <Formula> + + + + + + + + + <Warichu> shall not contain <Artifact> + kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + + <Warichu> contains <Artifact> + + + + + + + + + <WT> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <WT> contains <Document> + + + + + + + + + <WT> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <WT> contains <DocumentFragment> + + + + + + + + + <WT> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <WT> contains <Part> + + + + + + + + + <WT> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <WT> contains <Art> + + + + + + + + + <WT> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <WT> contains <Div> + + + + + + + + + <WT> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <WT> contains <Sect> + + + + + + + + + <WT> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <WT> contains <TOC> + + + + + + + + + <WT> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <WT> contains <TOCI> + + + + + + + + + <WT> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <WT> contains <Aside> + + + + + + + + + <WT> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <WT> contains <BlockQuote> + + + + + + + + + <WT> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <WT> contains <P> + + + + + + + + + <WT> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <WT> contains <Note> + + + + + + + + + <WT> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <WT> contains <Code> + + + + + + + + + <WT> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <WT> contains <Hn> + + + + + + + + + <WT> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <WT> contains <H> + + + + + + + + + <WT> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <WT> contains <Title> + + + + + + + + + <WT> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <WT> contains <Lbl> + + + + + + + + + <WT> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <WT> contains <Ruby> + + + + + + + + + <WT> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <WT> contains <RB> + + + + + + + + + <WT> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <WT> contains <RT> + + + + + + + + + <WT> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <WT> contains <RP> + + + + + + + + + <WT> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <WT> contains <Warichu> + + + + + + + + + <WT> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <WT> contains <WT> + + + + + + + + + <WT> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <WT> contains <WP> + + + + + + + + + <WT> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <WT> contains <FENote> + + + + + + + + + <WT> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <WT> contains <Index> + + + + + + + + + <WT> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <WT> contains <L> + + + + + + + + + <WT> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <WT> contains <LI> + + + + + + + + + <WT> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <WT> contains <LBody> + + + + + + + + + <WT> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <WT> contains <BibEntry> + + + + + + + + + <WT> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <WT> contains <Table> + + + + + + + + + <WT> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <WT> contains <TR> + + + + + + + + + <WT> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <WT> contains <TH> + + + + + + + + + <WT> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <WT> contains <TD> + + + + + + + + + <WT> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <WT> contains <THead> + + + + + + + + + <WT> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <WT> contains <TBody> + + + + + + + + + <WT> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <WT> contains <TFoot> + + + + + + + + + <WT> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <WT> contains <Caption> + + + + + + + + + <WT> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <WT> contains <Figure> + + + + + + + + + <WT> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <WT> contains <Formula> + + + + + + + + + <WP> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <WP> contains <Document> + + + + + + + + + <WP> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <WP> contains <DocumentFragment> + + + + + + + + + <WP> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <WP> contains <Part> + + + + + + + + + <WP> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <WP> contains <Art> + + + + + + + + + <WP> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <WP> contains <Div> + + + + + + + + + <WP> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <WP> contains <Sect> + + + + + + + + + <WP> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <WP> contains <TOC> + + + + + + + + + <WP> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <WP> contains <TOCI> + + + + + + + + + <WP> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <WP> contains <Aside> + + + + + + + + + <WP> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <WP> contains <BlockQuote> + + + + + + + + + <WP> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <WP> contains <P> + + + + + + + + + <WP> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <WP> contains <Note> + + + + + + + + + <WP> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <WP> contains <Code> + + + + + + + + + <WP> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <WP> contains <Hn> + + + + + + + + + <WP> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <WP> contains <H> + + + + + + + + + <WP> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <WP> contains <Title> + + + + + + + + + <WP> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <WP> contains <Lbl> + + + + + + + + + <WP> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <WP> contains <Ruby> + + + + + + + + + <WP> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <WP> contains <RB> + + + + + + + + + <WP> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <WP> contains <RT> + + + + + + + + + <WP> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <WP> contains <RP> + + + + + + + + + <WP> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <WP> contains <Warichu> + + + + + + + + + <WP> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <WP> contains <WT> + + + + + + + + + <WP> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <WP> contains <WP> + + + + + + + + + <WP> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <WP> contains <FENote> + + + + + + + + + <WP> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <WP> contains <Index> + + + + + + + + + <WP> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <WP> contains <L> + + + + + + + + + <WP> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <WP> contains <LI> + + + + + + + + + <WP> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <WP> contains <LBody> + + + + + + + + + <WP> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <WP> contains <BibEntry> + + + + + + + + + <WP> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <WP> contains <Table> + + + + + + + + + <WP> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <WP> contains <TR> + + + + + + + + + <WP> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <WP> contains <TH> + + + + + + + + + <WP> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <WP> contains <TD> + + + + + + + + + <WP> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <WP> contains <THead> + + + + + + + + + <WP> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <WP> contains <TBody> + + + + + + + + + <WP> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <WP> contains <TFoot> + + + + + + + + + <WP> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <WP> contains <Caption> + + + + + + + + + <WP> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <WP> contains <Figure> + + + + + + + + + <WP> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <WP> contains <Formula> + + + + + + + + + <FENote> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <FENote> contains <Document> + + + + + + + + + <FENote> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <FENote> contains <TOC> + + + + + + + + + <FENote> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <FENote> contains <TOCI> + + + + + + + + + <FENote> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <FENote> contains <Hn> + + + + + + + + + <FENote> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <FENote> contains <H> + + + + + + + + + <FENote> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <FENote> contains <Title> + + + + + + + + + <FENote> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <FENote> contains <RB> + + + + + + + + + <FENote> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <FENote> contains <RT> + + + + + + + + + <FENote> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <FENote> contains <RP> + + + + + + + + + <FENote> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <FENote> contains <WT> + + + + + + + + + <FENote> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <FENote> contains <WP> + + + + + + + + + <FENote> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <FENote> contains <Index> + + + + + + + + + <FENote> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <FENote> contains <LI> + + + + + + + + + <FENote> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <FENote> contains <LBody> + + + + + + + + + <FENote> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <FENote> contains <BibEntry> + + + + + + + + + <FENote> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <FENote> contains <TR> + + + + + + + + + <FENote> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <FENote> contains <TH> + + + + + + + + + <FENote> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <FENote> contains <TD> + + + + + + + + + <FENote> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <FENote> contains <THead> + + + + + + + + + <FENote> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <FENote> contains <TBody> + + + + + + + + + <FENote> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <FENote> contains <TFoot> + + + + + + + + + <Index> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Index> contains <Document> + + + + + + + + + <Index> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Index> contains <DocumentFragment> + + + + + + + + + <Index> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Index> contains <Art> + + + + + + + + + <Index> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Index> contains <TOC> + + + + + + + + + <Index> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Index> contains <TOCI> + + + + + + + + + <Index> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Index> contains <Aside> + + + + + + + + + <Index> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Index> contains <BlockQuote> + + + + + + + + + <Index> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Index> contains <Code> + + + + + + + + + <Index> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Index> contains <Title> + + + + + + + + + <Index> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Index> contains <Sub> + + + + + + + + + <Index> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Index> contains <Lbl> + + + + + + + + + <Index> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Index> contains <Em> + + + + + + + + + <Index> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Index> contains <Strong> + + + + + + + + + <Index> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Index> contains <Span> + + + + + + + + + <Index> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Index> contains <Quote> + + + + + + + + + <Index> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Index> contains <Link> + + + + + + + + + <Index> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Index> contains <Form> + + + + + + + + + <Index> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Index> contains <Ruby> + + + + + + + + + <Index> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Index> contains <RB> + + + + + + + + + <Index> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Index> contains <RT> + + + + + + + + + <Index> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Index> contains <RP> + + + + + + + + + <Index> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Index> contains <Warichu> + + + + + + + + + <Index> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Index> contains <WT> + + + + + + + + + <Index> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Index> contains <WP> + + + + + + + + + <Index> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Index> contains <Index> + + + + + + + + + <Index> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Index> contains <LI> + + + + + + + + + <Index> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Index> contains <LBody> + + + + + + + + + <Index> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Index> contains <BibEntry> + + + + + + + + + <Index> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Index> contains <TR> + + + + + + + + + <Index> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Index> contains <TH> + + + + + + + + + <Index> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Index> contains <TD> + + + + + + + + + <Index> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Index> contains <THead> + + + + + + + + + <Index> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Index> contains <TBody> + + + + + + + + + <Index> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Index> contains <TFoot> + + + + + + + + + <Index> shall not contain content item + hasContentItems == false + + <Index> contains content item(s) + + + + + + + + + <L> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <L> contains <Document> + + + + + + + + + <L> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <L> contains <DocumentFragment> + + + + + + + + + <L> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <L> contains <Part> + + + + + + + + + <L> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <L> contains <Art> + + + + + + + + + <L> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <L> contains <Div> + + + + + + + + + <L> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <L> contains <Sect> + + + + + + + + + <L> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <L> contains <TOC> + + + + + + + + + <L> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <L> contains <TOCI> + + + + + + + + + <L> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <L> contains <Aside> + + + + + + + + + <L> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <L> contains <BlockQuote> + + + + + + + + + <L> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <L> contains <P> + + + + + + + + + <L> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <L> contains <Note> + + + + + + + + + <L> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <L> contains <Code> + + + + + + + + + <L> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <L> contains <Hn> + + + + + + + + + <L> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <L> contains <H> + + + + + + + + + <L> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <L> contains <Title> + + + + + + + + + <L> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <L> contains <Sub> + + + + + + + + + <L> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <L> contains <Lbl> + + + + + + + + + <L> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <L> contains <Em> + + + + + + + + + <L> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <L> contains <Strong> + + + + + + + + + <L> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <L> contains <Span> + + + + + + + + + <L> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <L> contains <Quote> + + + + + + + + + <L> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <L> contains <Link> + + + + + + + + + <L> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <L> contains <Reference> + + + + + + + + + <L> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <L> contains <Annot> + + + + + + + + + <L> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <L> contains <Form> + + + + + + + + + <L> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <L> contains <Ruby> + + + + + + + + + <L> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <L> contains <RB> + + + + + + + + + <L> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <L> contains <RT> + + + + + + + + + <L> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <L> contains <RP> + + + + + + + + + <L> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <L> contains <Warichu> + + + + + + + + + <L> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <L> contains <WT> + + + + + + + + + <L> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <L> contains <WP> + + + + + + + + + <L> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <L> contains <FENote> + + + + + + + + + <L> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <L> contains <Index> + + + + + + + + + <L> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <L> contains <LBody> + + + + + + + + + <L> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <L> contains <BibEntry> + + + + + + + + + <L> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <L> contains <Table> + + + + + + + + + <L> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <L> contains <TR> + + + + + + + + + <L> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <L> contains <TH> + + + + + + + + + <L> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <L> contains <TD> + + + + + + + + + <L> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <L> contains <THead> + + + + + + + + + <L> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <L> contains <TBody> + + + + + + + + + <L> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <L> contains <TFoot> + + + + + + + + + <L> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <L> contains more than one <Caption> + + + + + + + + + <L> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <L> contains <Figure> + + + + + + + + + <L> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <L> contains <Formula> + + + + + + + + + <L> shall not contain content item + hasContentItems == false + + <L> contains content item(s) + + + + + + + + + <LI> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <LI> contains <Document> + + + + + + + + + <LI> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <LI> contains <DocumentFragment> + + + + + + + + + <LI> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <LI> contains <Part> + + + + + + + + + <LI> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <LI> contains <Art> + + + + + + + + + <LI> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <LI> contains <Sect> + + + + + + + + + <LI> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <LI> contains <TOC> + + + + + + + + + <LI> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <LI> contains <TOCI> + + + + + + + + + <LI> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <LI> contains <Aside> + + + + + + + + + <LI> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <LI> contains <BlockQuote> + + + + + + + + + <LI> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <LI> contains <P> + + + + + + + + + <LI> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <LI> contains <Note> + + + + + + + + + <LI> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <LI> contains <Code> + + + + + + + + + <LI> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <LI> contains <Hn> + + + + + + + + + <LI> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <LI> contains <H> + + + + + + + + + <LI> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <LI> contains <Title> + + + + + + + + + <LI> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <LI> contains <Sub> + + + + + + + + + <LI> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <LI> contains <Em> + + + + + + + + + <LI> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <LI> contains <Strong> + + + + + + + + + <LI> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <LI> contains <Span> + + + + + + + + + <LI> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <LI> contains <Quote> + + + + + + + + + <LI> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <LI> contains <Link> + + + + + + + + + <LI> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <LI> contains <Reference> + + + + + + + + + <LI> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <LI> contains <Annot> + + + + + + + + + <LI> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <LI> contains <Form> + + + + + + + + + <LI> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <LI> contains <Ruby> + + + + + + + + + <LI> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <LI> contains <RB> + + + + + + + + + <LI> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <LI> contains <RT> + + + + + + + + + <LI> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <LI> contains <RP> + + + + + + + + + <LI> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <LI> contains <Warichu> + + + + + + + + + <LI> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <LI> contains <WT> + + + + + + + + + <LI> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <LI> contains <WP> + + + + + + + + + <LI> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <LI> contains <FENote> + + + + + + + + + <LI> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <LI> contains <Index> + + + + + + + + + <LI> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <LI> contains <L> + + + + + + + + + <LI> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <LI> contains <LI> + + + + + + + + + <LI> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <LI> contains <BibEntry> + + + + + + + + + <LI> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <LI> contains <Table> + + + + + + + + + <LI> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <LI> contains <TR> + + + + + + + + + <LI> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <LI> contains <TH> + + + + + + + + + <LI> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <LI> contains <TD> + + + + + + + + + <LI> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <LI> contains <THead> + + + + + + + + + <LI> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <LI> contains <TBody> + + + + + + + + + <LI> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <LI> contains <TFoot> + + + + + + + + + <LI> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <LI> contains <Caption> + + + + + + + + + <LI> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <LI> contains <Figure> + + + + + + + + + <LI> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <LI> contains <Formula> + + + + + + + + + <LBody> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <LBody> contains <Document> + + + + + + + + + <LBody> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <LBody> contains <DocumentFragment> + + + + + + + + + <LBody> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <LBody> contains <TOC> + + + + + + + + + <LBody> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <LBody> contains <TOCI> + + + + + + + + + <LBody> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <LBody> contains more than one <H> + + + + + + + + + <LBody> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <LBody> contains <Title> + + + + + + + + + <LBody> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <LBody> contains <Lbl> + + + + + + + + + <LBody> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <LBody> contains <RB> + + + + + + + + + <LBody> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <LBody> contains <RT> + + + + + + + + + <LBody> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <LBody> contains <RP> + + + + + + + + + <LBody> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <LBody> contains <WT> + + + + + + + + + <LBody> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <LBody> contains <WP> + + + + + + + + + <LBody> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <LBody> contains <LI> + + + + + + + + + <LBody> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <LBody> contains <LBody> + + + + + + + + + <LBody> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <LBody> contains <TR> + + + + + + + + + <LBody> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <LBody> contains <TH> + + + + + + + + + <LBody> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <LBody> contains <TD> + + + + + + + + + <LBody> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <LBody> contains <THead> + + + + + + + + + <LBody> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <LBody> contains <TBody> + + + + + + + + + <LBody> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <LBody> contains <TFoot> + + + + + + + + + <LBody> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <LBody> contains more than one <Caption> + + + + + + + + + <BibEntry> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <BibEntry> contains <Document> + + + + + + + + + <BibEntry> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <BibEntry> contains <DocumentFragment> + + + + + + + + + <BibEntry> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <BibEntry> contains <Art> + + + + + + + + + <BibEntry> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <BibEntry> contains <Sect> + + + + + + + + + <BibEntry> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <BibEntry> contains <TOC> + + + + + + + + + <BibEntry> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <BibEntry> contains <TOCI> + + + + + + + + + <BibEntry> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <BibEntry> contains <Aside> + + + + + + + + + <BibEntry> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <BibEntry> contains <BlockQuote> + + + + + + + + + <BibEntry> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <BibEntry> contains <Code> + + + + + + + + + <BibEntry> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <BibEntry> contains <Hn> + + + + + + + + + <BibEntry> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <BibEntry> contains <H> + + + + + + + + + <BibEntry> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <BibEntry> contains <Title> + + + + + + + + + <BibEntry> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <BibEntry> contains <Sub> + + + + + + + + + <BibEntry> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <BibEntry> contains <Quote> + + + + + + + + + <BibEntry> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <BibEntry> contains <Form> + + + + + + + + + <BibEntry> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <BibEntry> contains <Ruby> + + + + + + + + + <BibEntry> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <BibEntry> contains <RB> + + + + + + + + + <BibEntry> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <BibEntry> contains <RT> + + + + + + + + + <BibEntry> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <BibEntry> contains <RP> + + + + + + + + + <BibEntry> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <BibEntry> contains <Warichu> + + + + + + + + + <BibEntry> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <BibEntry> contains <WT> + + + + + + + + + <BibEntry> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <BibEntry> contains <WP> + + + + + + + + + <BibEntry> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <BibEntry> contains <Index> + + + + + + + + + <BibEntry> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <BibEntry> contains <L> + + + + + + + + + <BibEntry> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <BibEntry> contains <LI> + + + + + + + + + <BibEntry> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <BibEntry> contains <LBody> + + + + + + + + + <BibEntry> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <BibEntry> contains <BibEntry> + + + + + + + + + <BibEntry> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <BibEntry> contains <Table> + + + + + + + + + <BibEntry> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <BibEntry> contains <TR> + + + + + + + + + <BibEntry> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <BibEntry> contains <TH> + + + + + + + + + <BibEntry> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <BibEntry> contains <TD> + + + + + + + + + <BibEntry> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <BibEntry> contains <THead> + + + + + + + + + <BibEntry> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <BibEntry> contains <TBody> + + + + + + + + + <BibEntry> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <BibEntry> contains <TFoot> + + + + + + + + + <BibEntry> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <BibEntry> contains <Caption> + + + + + + + + + <BibEntry> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <BibEntry> contains <Formula> + + + + + + + + + <Table> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Table> contains <Document> + + + + + + + + + <Table> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Table> contains <DocumentFragment> + + + + + + + + + <Table> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Table> contains <Part> + + + + + + + + + <Table> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Table> contains <Art> + + + + + + + + + <Table> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Table> contains <Div> + + + + + + + + + <Table> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Table> contains <Sect> + + + + + + + + + <Table> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Table> contains <TOC> + + + + + + + + + <Table> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Table> contains <TOCI> + + + + + + + + + <Table> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Table> contains <Aside> + + + + + + + + + <Table> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Table> contains <BlockQuote> + + + + + + + + + <Table> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Table> contains <P> + + + + + + + + + <Table> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <Table> contains <Note> + + + + + + + + + <Table> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Table> contains <Code> + + + + + + + + + <Table> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Table> contains <Hn> + + + + + + + + + <Table> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Table> contains <H> + + + + + + + + + <Table> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Table> contains <Title> + + + + + + + + + <Table> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Table> contains <Sub> + + + + + + + + + <Table> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Table> contains <Lbl> + + + + + + + + + <Table> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Table> contains <Em> + + + + + + + + + <Table> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Table> contains <Strong> + + + + + + + + + <Table> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Table> contains <Span> + + + + + + + + + <Table> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Table> contains <Quote> + + + + + + + + + <Table> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Table> contains <Link> + + + + + + + + + <Table> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Table> contains <Reference> + + + + + + + + + <Table> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <Table> contains <Annot> + + + + + + + + + <Table> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Table> contains <Form> + + + + + + + + + <Table> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Table> contains <Ruby> + + + + + + + + + <Table> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Table> contains <RB> + + + + + + + + + <Table> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Table> contains <RT> + + + + + + + + + <Table> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Table> contains <RP> + + + + + + + + + <Table> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Table> contains <Warichu> + + + + + + + + + <Table> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Table> contains <WT> + + + + + + + + + <Table> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Table> contains <WP> + + + + + + + + + <Table> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <Table> contains <FENote> + + + + + + + + + <Table> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Table> contains <Index> + + + + + + + + + <Table> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Table> contains <L> + + + + + + + + + <Table> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Table> contains <LI> + + + + + + + + + <Table> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Table> contains <LBody> + + + + + + + + + <Table> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Table> contains <BibEntry> + + + + + + + + + <Table> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Table> contains <Table> + + + + + + + + + <Table> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Table> contains <TH> + + + + + + + + + <Table> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Table> contains <TD> + + + + + + + + + <Table> shall contain at most one <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 + + <Table> contains more than one <THead> + + + + + + + + + <Table> shall contain at most one <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 + + <Table> contains more than one <TFoot> + + + + + + + + + <Table> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Table> contains more than one <Caption> + + + + + + + + + <Table> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <Table> contains <Figure> + + + + + + + + + <Table> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <Table> contains <Formula> + + + + + + + + + <Table> shall not contain content item + hasContentItems == false + + <Table> contains content item(s) + + + + + + + + + <TR> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TR> contains <Document> + + + + + + + + + <TR> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TR> contains <DocumentFragment> + + + + + + + + + <TR> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TR> contains <Part> + + + + + + + + + <TR> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <TR> contains <Art> + + + + + + + + + <TR> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <TR> contains <Div> + + + + + + + + + <TR> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <TR> contains <Sect> + + + + + + + + + <TR> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <TR> contains <TOC> + + + + + + + + + <TR> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TR> contains <TOCI> + + + + + + + + + <TR> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TR> contains <Aside> + + + + + + + + + <TR> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TR> contains <BlockQuote> + + + + + + + + + <TR> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <TR> contains <P> + + + + + + + + + <TR> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <TR> contains <Note> + + + + + + + + + <TR> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <TR> contains <Code> + + + + + + + + + <TR> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <TR> contains <Hn> + + + + + + + + + <TR> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <TR> contains <H> + + + + + + + + + <TR> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TR> contains <Title> + + + + + + + + + <TR> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TR> contains <Sub> + + + + + + + + + <TR> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <TR> contains <Lbl> + + + + + + + + + <TR> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <TR> contains <Em> + + + + + + + + + <TR> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <TR> contains <Strong> + + + + + + + + + <TR> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <TR> contains <Span> + + + + + + + + + <TR> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <TR> contains <Quote> + + + + + + + + + <TR> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <TR> contains <Link> + + + + + + + + + <TR> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <TR> contains <Reference> + + + + + + + + + <TR> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <TR> contains <Annot> + + + + + + + + + <TR> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <TR> contains <Form> + + + + + + + + + <TR> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <TR> contains <Ruby> + + + + + + + + + <TR> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TR> contains <RB> + + + + + + + + + <TR> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TR> contains <RT> + + + + + + + + + <TR> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TR> contains <RP> + + + + + + + + + <TR> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <TR> contains <Warichu> + + + + + + + + + <TR> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TR> contains <WT> + + + + + + + + + <TR> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TR> contains <WP> + + + + + + + + + <TR> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <TR> contains <FENote> + + + + + + + + + <TR> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <TR> contains <Index> + + + + + + + + + <TR> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <TR> contains <L> + + + + + + + + + <TR> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TR> contains <LI> + + + + + + + + + <TR> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TR> contains <LBody> + + + + + + + + + <TR> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <TR> contains <BibEntry> + + + + + + + + + <TR> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <TR> contains <Table> + + + + + + + + + <TR> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <TR> contains <TR> + + + + + + + + + <TR> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TR> contains <THead> + + + + + + + + + <TR> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TR> contains <TBody> + + + + + + + + + <TR> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TR> contains <TFoot> + + + + + + + + + <TR> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TR> contains <Caption> + + + + + + + + + <TR> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <TR> contains <Figure> + + + + + + + + + <TR> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <TR> contains <Formula> + + + + + + + + + <TR> shall not contain content item + hasContentItems == false + + <TR> contains content item(s) + + + + + + + + + <TH> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TH> contains <Document> + + + + + + + + + <TH> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TH> contains <DocumentFragment> + + + + + + + + + <TH> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TH> contains <Part> + + + + + + + + + <TH> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <TH> contains <TOC> + + + + + + + + + <TH> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TH> contains <TOCI> + + + + + + + + + <TH> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TH> contains <Aside> + + + + + + + + + <TH> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TH> contains <BlockQuote> + + + + + + + + + <TH> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <TH> contains more than one <H> + + + + + + + + + <TH> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TH> contains <Title> + + + + + + + + + <TH> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TH> contains <Sub> + + + + + + + + + <TH> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TH> contains <RB> + + + + + + + + + <TH> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TH> contains <RT> + + + + + + + + + <TH> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TH> contains <RP> + + + + + + + + + <TH> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TH> contains <WT> + + + + + + + + + <TH> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TH> contains <WP> + + + + + + + + + <TH> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TH> contains <LI> + + + + + + + + + <TH> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TH> contains <LBody> + + + + + + + + + <TH> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <TH> contains <TR> + + + + + + + + + <TH> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TH> contains <TH> + + + + + + + + + <TH> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TH> contains <TD> + + + + + + + + + <TH> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TH> contains <THead> + + + + + + + + + <TH> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TH> contains <TBody> + + + + + + + + + <TH> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TH> contains <TFoot> + + + + + + + + + <TH> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TH> contains <Caption> + + + + + + + + + <TD> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TD> contains <Document> + + + + + + + + + <TD> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TD> contains <DocumentFragment> + + + + + + + + + <TD> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TD> contains <Part> + + + + + + + + + <TD> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <TD> contains <TOC> + + + + + + + + + <TD> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TD> contains <TOCI> + + + + + + + + + <TD> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TD> contains <Aside> + + + + + + + + + <TD> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TD> contains <BlockQuote> + + + + + + + + + <TD> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <TD> contains more than one <H> + + + + + + + + + <TD> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TD> contains <Title> + + + + + + + + + <TD> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TD> contains <Sub> + + + + + + + + + <TD> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TD> contains <RB> + + + + + + + + + <TD> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TD> contains <RT> + + + + + + + + + <TD> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TD> contains <RP> + + + + + + + + + <TD> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TD> contains <WT> + + + + + + + + + <TD> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TD> contains <WP> + + + + + + + + + <TD> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TD> contains <LI> + + + + + + + + + <TD> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TD> contains <LBody> + + + + + + + + + <TD> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <TD> contains <TR> + + + + + + + + + <TD> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TD> contains <TH> + + + + + + + + + <TD> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TD> contains <TD> + + + + + + + + + <TD> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TD> contains <THead> + + + + + + + + + <TD> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TD> contains <TBody> + + + + + + + + + <TD> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TD> contains <TFoot> + + + + + + + + + <TD> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TD> contains <Caption> + + + + + + + + + <THead> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <THead> contains <Document> + + + + + + + + + <THead> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <THead> contains <DocumentFragment> + + + + + + + + + <THead> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <THead> contains <Part> + + + + + + + + + <THead> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <THead> contains <Art> + + + + + + + + + <THead> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <THead> contains <Div> + + + + + + + + + <THead> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <THead> contains <Sect> + + + + + + + + + <THead> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <THead> contains <TOC> + + + + + + + + + <THead> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <THead> contains <TOCI> + + + + + + + + + <THead> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <THead> contains <Aside> + + + + + + + + + <THead> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <THead> contains <BlockQuote> + + + + + + + + + <THead> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <THead> contains <P> + + + + + + + + + <THead> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <THead> contains <Note> + + + + + + + + + <THead> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <THead> contains <Code> + + + + + + + + + <THead> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <THead> contains <Hn> + + + + + + + + + <THead> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <THead> contains <H> + + + + + + + + + <THead> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <THead> contains <Title> + + + + + + + + + <THead> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <THead> contains <Sub> + + + + + + + + + <THead> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <THead> contains <Lbl> + + + + + + + + + <THead> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <THead> contains <Em> + + + + + + + + + <THead> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <THead> contains <Strong> + + + + + + + + + <THead> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <THead> contains <Span> + + + + + + + + + <THead> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <THead> contains <Quote> + + + + + + + + + <THead> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <THead> contains <Link> + + + + + + + + + <THead> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <THead> contains <Reference> + + + + + + + + + <THead> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <THead> contains <Annot> + + + + + + + + + <THead> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <THead> contains <Form> + + + + + + + + + <THead> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <THead> contains <Ruby> + + + + + + + + + <THead> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <THead> contains <RB> + + + + + + + + + <THead> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <THead> contains <RT> + + + + + + + + + <THead> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <THead> contains <RP> + + + + + + + + + <THead> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <THead> contains <Warichu> + + + + + + + + + <THead> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <THead> contains <WT> + + + + + + + + + <THead> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <THead> contains <WP> + + + + + + + + + <THead> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <THead> contains <FENote> + + + + + + + + + <THead> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <THead> contains <Index> + + + + + + + + + <THead> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <THead> contains <L> + + + + + + + + + <THead> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <THead> contains <LI> + + + + + + + + + <THead> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <THead> contains <LBody> + + + + + + + + + <THead> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <THead> contains <BibEntry> + + + + + + + + + <THead> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <THead> contains <Table> + + + + + + + + + <THead> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <THead> contains <TH> + + + + + + + + + <THead> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <THead> contains <TD> + + + + + + + + + <THead> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <THead> contains <THead> + + + + + + + + + <THead> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <THead> contains <TBody> + + + + + + + + + <THead> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <THead> contains <TFoot> + + + + + + + + + <THead> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <THead> contains <Caption> + + + + + + + + + <THead> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <THead> contains <Figure> + + + + + + + + + <THead> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <THead> contains <Formula> + + + + + + + + + <THead> shall not contain content item + hasContentItems == false + + <THead> contains content item(s) + + + + + + + + + <TBody> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TBody> contains <Document> + + + + + + + + + <TBody> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TBody> contains <DocumentFragment> + + + + + + + + + <TBody> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TBody> contains <Part> + + + + + + + + + <TBody> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <TBody> contains <Art> + + + + + + + + + <TBody> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <TBody> contains <Div> + + + + + + + + + <TBody> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <TBody> contains <Sect> + + + + + + + + + <TBody> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <TBody> contains <TOC> + + + + + + + + + <TBody> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TBody> contains <TOCI> + + + + + + + + + <TBody> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TBody> contains <Aside> + + + + + + + + + <TBody> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TBody> contains <BlockQuote> + + + + + + + + + <TBody> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <TBody> contains <P> + + + + + + + + + <TBody> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <TBody> contains <Note> + + + + + + + + + <TBody> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <TBody> contains <Code> + + + + + + + + + <TBody> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <TBody> contains <Hn> + + + + + + + + + <TBody> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <TBody> contains <H> + + + + + + + + + <TBody> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TBody> contains <Title> + + + + + + + + + <TBody> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TBody> contains <Sub> + + + + + + + + + <TBody> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <TBody> contains <Lbl> + + + + + + + + + <TBody> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <TBody> contains <Em> + + + + + + + + + <TBody> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <TBody> contains <Strong> + + + + + + + + + <TBody> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <TBody> contains <Span> + + + + + + + + + <TBody> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <TBody> contains <Quote> + + + + + + + + + <TBody> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <TBody> contains <Link> + + + + + + + + + <TBody> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <TBody> contains <Reference> + + + + + + + + + <TBody> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <TBody> contains <Annot> + + + + + + + + + <TBody> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <TBody> contains <Form> + + + + + + + + + <TBody> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <TBody> contains <Ruby> + + + + + + + + + <TBody> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TBody> contains <RB> + + + + + + + + + <TBody> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TBody> contains <RT> + + + + + + + + + <TBody> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TBody> contains <RP> + + + + + + + + + <TBody> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <TBody> contains <Warichu> + + + + + + + + + <TBody> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TBody> contains <WT> + + + + + + + + + <TBody> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TBody> contains <WP> + + + + + + + + + <TBody> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <TBody> contains <FENote> + + + + + + + + + <TBody> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <TBody> contains <Index> + + + + + + + + + <TBody> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <TBody> contains <L> + + + + + + + + + <TBody> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TBody> contains <LI> + + + + + + + + + <TBody> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TBody> contains <LBody> + + + + + + + + + <TBody> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <TBody> contains <BibEntry> + + + + + + + + + <TBody> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <TBody> contains <Table> + + + + + + + + + <TBody> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TBody> contains <TH> + + + + + + + + + <TBody> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TBody> contains <TD> + + + + + + + + + <TBody> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TBody> contains <THead> + + + + + + + + + <TBody> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TBody> contains <TBody> + + + + + + + + + <TBody> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TBody> contains <TFoot> + + + + + + + + + <TBody> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TBody> contains <Caption> + + + + + + + + + <TBody> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <TBody> contains <Figure> + + + + + + + + + <TBody> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <TBody> contains <Formula> + + + + + + + + + <TBody> shall not contain content item + hasContentItems == false + + <TBody> contains content item(s) + + + + + + + + + <TFoot> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TFoot> contains <Document> + + + + + + + + + <TFoot> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TFoot> contains <DocumentFragment> + + + + + + + + + <TFoot> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TFoot> contains <Part> + + + + + + + + + <TFoot> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <TFoot> contains <Art> + + + + + + + + + <TFoot> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <TFoot> contains <Div> + + + + + + + + + <TFoot> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <TFoot> contains <Sect> + + + + + + + + + <TFoot> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <TFoot> contains <TOC> + + + + + + + + + <TFoot> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TFoot> contains <TOCI> + + + + + + + + + <TFoot> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TFoot> contains <Aside> + + + + + + + + + <TFoot> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TFoot> contains <BlockQuote> + + + + + + + + + <TFoot> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <TFoot> contains <P> + + + + + + + + + <TFoot> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <TFoot> contains <Note> + + + + + + + + + <TFoot> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <TFoot> contains <Code> + + + + + + + + + <TFoot> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <TFoot> contains <Hn> + + + + + + + + + <TFoot> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <TFoot> contains <H> + + + + + + + + + <TFoot> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TFoot> contains <Title> + + + + + + + + + <TFoot> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TFoot> contains <Sub> + + + + + + + + + <TFoot> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <TFoot> contains <Lbl> + + + + + + + + + <TFoot> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <TFoot> contains <Em> + + + + + + + + + <TFoot> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <TFoot> contains <Strong> + + + + + + + + + <TFoot> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <TFoot> contains <Span> + + + + + + + + + <TFoot> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <TFoot> contains <Quote> + + + + + + + + + <TFoot> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <TFoot> contains <Link> + + + + + + + + + <TFoot> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <TFoot> contains <Reference> + + + + + + + + + <TFoot> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <TFoot> contains <Annot> + + + + + + + + + <TFoot> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <TFoot> contains <Form> + + + + + + + + + <TFoot> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <TFoot> contains <Ruby> + + + + + + + + + <TFoot> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TFoot> contains <RB> + + + + + + + + + <TFoot> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TFoot> contains <RT> + + + + + + + + + <TFoot> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TFoot> contains <RP> + + + + + + + + + <TFoot> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <TFoot> contains <Warichu> + + + + + + + + + <TFoot> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TFoot> contains <WT> + + + + + + + + + <TFoot> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TFoot> contains <WP> + + + + + + + + + <TFoot> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <TFoot> contains <FENote> + + + + + + + + + <TFoot> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <TFoot> contains <Index> + + + + + + + + + <TFoot> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <TFoot> contains <L> + + + + + + + + + <TFoot> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TFoot> contains <LI> + + + + + + + + + <TFoot> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TFoot> contains <LBody> + + + + + + + + + <TFoot> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <TFoot> contains <BibEntry> + + + + + + + + + <TFoot> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <TFoot> contains <Table> + + + + + + + + + <TFoot> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TFoot> contains <TH> + + + + + + + + + <TFoot> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TFoot> contains <TD> + + + + + + + + + <TFoot> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TFoot> contains <THead> + + + + + + + + + <TFoot> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TFoot> contains <TBody> + + + + + + + + + <TFoot> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TFoot> contains <TFoot> + + + + + + + + + <TFoot> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TFoot> contains <Caption> + + + + + + + + + <TFoot> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <TFoot> contains <Figure> + + + + + + + + + <TFoot> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <TFoot> contains <Formula> + + + + + + + + + <TFoot> shall not contain content item + hasContentItems == false + + <TFoot> contains content item(s) + + + + + + + + + <Caption> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Caption> contains <Document> + + + + + + + + + <Caption> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Caption> contains <TOC> + + + + + + + + + <Caption> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Caption> contains <TOCI> + + + + + + + + + <Caption> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Caption> contains more than one <H> + + + + + + + + + <Caption> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Caption> contains <Title> + + + + + + + + + <Caption> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Caption> contains <RB> + + + + + + + + + <Caption> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Caption> contains <RT> + + + + + + + + + <Caption> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Caption> contains <RP> + + + + + + + + + <Caption> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Caption> contains <WT> + + + + + + + + + <Caption> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Caption> contains <WP> + + + + + + + + + <Caption> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Caption> contains <LI> + + + + + + + + + <Caption> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Caption> contains <LBody> + + + + + + + + + <Caption> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Caption> contains <TR> + + + + + + + + + <Caption> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Caption> contains <TH> + + + + + + + + + <Caption> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Caption> contains <TD> + + + + + + + + + <Caption> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Caption> contains <THead> + + + + + + + + + <Caption> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Caption> contains <TBody> + + + + + + + + + <Caption> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Caption> contains <TFoot> + + + + + + + + + <Caption> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Caption> contains <Caption> + + + + + + + + + <Figure> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Figure> contains <Document> + + + + + + + + + <Figure> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Figure> contains <DocumentFragment> + + + + + + + + + <Figure> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Figure> contains <TOC> + + + + + + + + + <Figure> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Figure> contains <TOCI> + + + + + + + + + <Figure> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Figure> contains more than one <H> + + + + + + + + + <Figure> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Figure> contains <Title> + + + + + + + + + <Figure> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Figure> contains <RB> + + + + + + + + + <Figure> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Figure> contains <RT> + + + + + + + + + <Figure> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Figure> contains <RP> + + + + + + + + + <Figure> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Figure> contains <WT> + + + + + + + + + <Figure> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Figure> contains <WP> + + + + + + + + + <Figure> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Figure> contains <LI> + + + + + + + + + <Figure> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Figure> contains <LBody> + + + + + + + + + <Figure> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Figure> contains <TR> + + + + + + + + + <Figure> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Figure> contains <TH> + + + + + + + + + <Figure> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Figure> contains <TD> + + + + + + + + + <Figure> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Figure> contains <THead> + + + + + + + + + <Figure> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Figure> contains <TBody> + + + + + + + + + <Figure> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Figure> contains <TFoot> + + + + + + + + + <Figure> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Figure> contains more than one <Caption> + + + + + + + + + <Formula> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Formula> contains <Document> + + + + + + + + + <Formula> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Formula> contains <DocumentFragment> + + + + + + + + + <Formula> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Formula> contains <Art> + + + + + + + + + <Formula> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Formula> contains <Sect> + + + + + + + + + <Formula> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Formula> contains <TOC> + + + + + + + + + <Formula> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Formula> contains <TOCI> + + + + + + + + + <Formula> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Formula> contains more than one <H> + + + + + + + + + <Formula> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Formula> contains <Title> + + + + + + + + + <Formula> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Formula> contains <RB> + + + + + + + + + <Formula> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Formula> contains <RT> + + + + + + + + + <Formula> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Formula> contains <RP> + + + + + + + + + <Formula> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Formula> contains <WT> + + + + + + + + + <Formula> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Formula> contains <WP> + + + + + + + + + <Formula> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Formula> contains <LI> + + + + + + + + + <Formula> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Formula> contains <LBody> + + + + + + + + + <Formula> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Formula> contains <TR> + + + + + + + + + <Formula> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Formula> contains <TH> + + + + + + + + + <Formula> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Formula> contains <TD> + + + + + + + + + <Formula> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Formula> contains <THead> + + + + + + + + + <Formula> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Formula> contains <TBody> + + + + + + + + + <Formula> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Formula> contains <TFoot> + + + + + + + + + <Formula> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Formula> contains more than one <Caption> + + + + + + + + + <Artifact> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Artifact> contains more than one <H> + + + + + + + + + <Artifact> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Artifact> contains more than one <Caption> + + + + + + + + +
From 90b255adf577cafec9730c26bf6a85efad9753b8 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 16 Jun 2022 17:34:22 +0300 Subject: [PATCH 416/557] Update wcag profiles --- PDF_UA/WCAG-21-Complete.xml | 21 +++++++++++++++++---- PDF_UA/WCAG-21.xml | 21 +++++++++++++++++---- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 253fdbe4..cfd746cc 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -187,7 +187,7 @@ Incorrect use of a paragraph - correctType != 'P' || correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -200,7 +200,7 @@ Incorrect use of a span - correctType != 'Span' || correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -229,7 +229,7 @@ Incorrect use of a heading - correctType != 'H' || correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -242,7 +242,7 @@ Incorrect use of a numbered heading - correctType != 'Hn' || correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -541,6 +541,19 @@ + + + This structure element should be a part or several different paragraphs instead of a paragraph + correctType != 'Part' || correctSemanticScore < 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index faebcab8..3a8020b4 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -187,7 +187,7 @@ Incorrect use of a paragraph - correctType != 'P' || correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -200,7 +200,7 @@ Incorrect use of a span - correctType != 'Span' || correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -229,7 +229,7 @@ Incorrect use of a heading - correctType != 'H' || correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -242,7 +242,7 @@ Incorrect use of a numbered heading - correctType != 'Hn' || correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -541,6 +541,19 @@ + + + This structure element should be a part or several different paragraphs instead of a paragraph + correctType != 'Part' || correctSemanticScore < 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + +
From 275b1fd7e52abe3b1920931447312080655a65af Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 13 Jun 2022 10:49:26 +0300 Subject: [PATCH 417/557] Fix error messages in rules 6.6.2.3-1, 6.6.3-1, 6.10-3 --- .../verapdf-profile-6-6-2-3-t01.xml | 6 +- .../verapdf-profile-6-1-7-t01.xml | 6 +- .../verapdf-profile-6-10-t03.xml | 8 +- .../verapdf-profile-6-6-3-t01.xml | 3 +- PDF_A/PDFA-4.xml | 3 +- PDF_A/PDFA-4E.xml | 3 +- PDF_A/PDFA-4F.xml | 3 +- .../1/7.1 General/verapdf-profile-7-1-t01.xml | 6 +- .../1/7.1 General/verapdf-profile-7-1-t02.xml | 6 +- .../verapdf-profile-7-18-6-2-t02.xml | 6 +- PDF_UA/ISO-32005-Tagged.xml | 212 +++++++++--------- 11 files changed, 139 insertions(+), 123 deletions(-) diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t01.xml index 50b6bf73..4eddadaa 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t01.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t01.xml @@ -13,8 +13,10 @@ of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false - An extension schema object contains fields not defined by the specification - + An extension schema object contains field(s) %1 not defined by the specification + + undefinedFields + diff --git a/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml index 6e6e18e5..401f2da8 100644 --- a/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml @@ -13,8 +13,10 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct UTF-8 character sequence - + The name value %1 does not represent a correct UTF-8 character sequence + + unicodeValue + diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml index a9e645c1..dd161f85 100644 --- a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml @@ -11,10 +11,12 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - doesOrderContainAllOCGs == true + OCGsNotContainInOrder == '' - Not all optional content groups are present in the Order entry of the optional content configuration dictionary - + Optional content groups %1 are not present in the Order entry of the optional content configuration dictionary + + OCGsNotContainInOrder + diff --git a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml index 22e2b75f..ff35967e 100644 --- a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml +++ b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml @@ -13,7 +13,8 @@ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl. - containsOtherActions == false + parentType == 'WidgetAnnot' || parentType == 'FormField' || actions.split('&').filter(elem => elem != 'E' && + elem != 'X'&& elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 5484374b..445cd557 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -1177,7 +1177,8 @@ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl. - containsOtherActions == false + parentType == 'WidgetAnnot' || parentType == 'FormField' || actions.split('&').filter(elem => elem != 'E' && + elem != 'X'&& elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 905e48c9..27bbdacb 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1194,7 +1194,8 @@ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl. - containsOtherActions == false + parentType == 'WidgetAnnot' || parentType == 'FormField' || actions.split('&').filter(elem => elem != 'E' && + elem != 'X'&& elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index fee6548d..de9efc49 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -1178,7 +1178,8 @@ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl. - containsOtherActions == false + parentType == 'WidgetAnnot' || parentType == 'FormField' || actions.split('&').filter(elem => elem != 'E' && + elem != 'X'&& elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml index 6d373506..9e7cc511 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml @@ -11,8 +11,10 @@ Content marked as Artifact should not present inside tagged content tag != 'Artifact' || parentStructureTag == null - Content marked as Artifact is present inside tagged content - + Content marked as Artifact is present inside tagged content (tag %1) + + parentStructureTag + diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml index 2aa1ee2d..8f3145c5 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml @@ -11,8 +11,10 @@ Tagged content should not present inside content marked as Artifact structureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 - Tagged content is present inside content marked as Artifact - + Tagged content (tag %1) is present inside content marked as Artifact + + structureTag + diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml index 942c7e51..e7452170 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml @@ -13,8 +13,10 @@ is required. hasCorrectAlt == true - Alt key is missing from the media clip data dictionary or has not correct value - + Alt key (value %1) is missing from the media clip data dictionary or has incorrect value + + Alt + diff --git a/PDF_UA/ISO-32005-Tagged.xml b/PDF_UA/ISO-32005-Tagged.xml index 7678bf07..89483c09 100644 --- a/PDF_UA/ISO-32005-Tagged.xml +++ b/PDF_UA/ISO-32005-Tagged.xml @@ -22,10 +22,10 @@ - <StructTreeRoot> shall contain exactly one <Document> + StructTreeRoot shall contain exactly one <Document> kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 1 - <StructTreeRoot> either either doesn't contain or contains more than one <Document> + StructTreeRoot either either doesn't contain or contains more than one <Document> @@ -34,10 +34,10 @@ - <StructTreeRoot> shall not contain <DocumentFragment> + StructTreeRoot shall not contain <DocumentFragment> kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 - <StructTreeRoot> contains <DocumentFragment> + StructTreeRoot contains <DocumentFragment> @@ -46,10 +46,10 @@ - <StructTreeRoot> shall not contain <Part> + StructTreeRoot shall not contain <Part> kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 - <StructTreeRoot> contains <Part> + StructTreeRoot contains <Part> @@ -58,10 +58,10 @@ - <StructTreeRoot> shall not contain <Art> + StructTreeRoot shall not contain <Art> kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 - <StructTreeRoot> contains <Art> + StructTreeRoot contains <Art> @@ -70,10 +70,10 @@ - <StructTreeRoot> shall not contain <Div> + StructTreeRoot shall not contain <Div> kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 - <StructTreeRoot> contains <Div> + StructTreeRoot contains <Div> @@ -82,10 +82,10 @@ - <StructTreeRoot> shall not contain <Sect> + StructTreeRoot shall not contain <Sect> kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 - <StructTreeRoot> contains <Sect> + StructTreeRoot contains <Sect> @@ -94,10 +94,10 @@ - <StructTreeRoot> shall not contain <TOC> + StructTreeRoot shall not contain <TOC> kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 - <StructTreeRoot> contains <TOC> + StructTreeRoot contains <TOC> @@ -106,10 +106,10 @@ - <StructTreeRoot> shall not contain <TOCI> + StructTreeRoot shall not contain <TOCI> kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 - <StructTreeRoot> contains <TOCI> + StructTreeRoot contains <TOCI> @@ -118,10 +118,10 @@ - <StructTreeRoot> shall not contain <Aside> + StructTreeRoot shall not contain <Aside> kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 - <StructTreeRoot> contains <Aside> + StructTreeRoot contains <Aside> @@ -130,10 +130,10 @@ - <StructTreeRoot> shall not contain <BlockQuote> + StructTreeRoot shall not contain <BlockQuote> kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 - <StructTreeRoot> contains <BlockQuote> + StructTreeRoot contains <BlockQuote> @@ -142,10 +142,10 @@ - <StructTreeRoot> shall not contain <NonStruct> + StructTreeRoot shall not contain <NonStruct> kidsStandardTypes.split('&').filter(elem => elem == 'NonStruct').length == 0 - <StructTreeRoot> contains <NonStruct> + StructTreeRoot contains <NonStruct> @@ -154,10 +154,10 @@ - <StructTreeRoot> shall not contain <Private> + StructTreeRoot shall not contain <Private> kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0 - <StructTreeRoot> contains <Private> + StructTreeRoot contains <Private> @@ -166,10 +166,10 @@ - <StructTreeRoot> shall not contain <P> + StructTreeRoot shall not contain <P> kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 - <StructTreeRoot> contains <P> + StructTreeRoot contains <P> @@ -178,10 +178,10 @@ - <StructTreeRoot> shall not contain <Note> + StructTreeRoot shall not contain <Note> kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 - <StructTreeRoot> contains <Note> + StructTreeRoot contains <Note> @@ -190,10 +190,10 @@ - <StructTreeRoot> shall not contain <Code> + StructTreeRoot shall not contain <Code> kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 - <StructTreeRoot> contains <Code> + StructTreeRoot contains <Code> @@ -202,10 +202,10 @@ - <StructTreeRoot> shall not contain <Hn> + StructTreeRoot shall not contain <Hn> kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 - <StructTreeRoot> contains <Hn> + StructTreeRoot contains <Hn> @@ -214,10 +214,10 @@ - <StructTreeRoot> shall not contain <H> + StructTreeRoot shall not contain <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 - <StructTreeRoot> contains <H> + StructTreeRoot contains <H> @@ -226,10 +226,10 @@ - <StructTreeRoot> shall not contain <Title> + StructTreeRoot shall not contain <Title> kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 - <StructTreeRoot> contains <Title> + StructTreeRoot contains <Title> @@ -238,10 +238,10 @@ - <StructTreeRoot> shall not contain <Sub> + StructTreeRoot shall not contain <Sub> kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 - <StructTreeRoot> contains <Sub> + StructTreeRoot contains <Sub> @@ -250,10 +250,10 @@ - <StructTreeRoot> shall not contain <Lbl> + StructTreeRoot shall not contain <Lbl> kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 - <StructTreeRoot> contains <Lbl> + StructTreeRoot contains <Lbl> @@ -262,10 +262,10 @@ - <StructTreeRoot> shall not contain <Em> + StructTreeRoot shall not contain <Em> kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 - <StructTreeRoot> contains <Em> + StructTreeRoot contains <Em> @@ -274,10 +274,10 @@ - <StructTreeRoot> shall not contain <Strong> + StructTreeRoot shall not contain <Strong> kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 - <StructTreeRoot> contains <Strong> + StructTreeRoot contains <Strong> @@ -286,10 +286,10 @@ - <StructTreeRoot> shall not contain <Span> + StructTreeRoot shall not contain <Span> kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 - <StructTreeRoot> contains <Span> + StructTreeRoot contains <Span> @@ -298,10 +298,10 @@ - <StructTreeRoot> shall not contain <Quote> + StructTreeRoot shall not contain <Quote> kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 - <StructTreeRoot> contains <Quote> + StructTreeRoot contains <Quote> @@ -310,10 +310,10 @@ - <StructTreeRoot> shall not contain <Link> + StructTreeRoot shall not contain <Link> kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 - <StructTreeRoot> contains <Link> + StructTreeRoot contains <Link> @@ -322,10 +322,10 @@ - <StructTreeRoot> shall not contain <Reference> + StructTreeRoot shall not contain <Reference> kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 - <StructTreeRoot> contains <Reference> + StructTreeRoot contains <Reference> @@ -334,10 +334,10 @@ - <StructTreeRoot> shall not contain <Annot> + StructTreeRoot shall not contain <Annot> kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 - <StructTreeRoot> contains <Annot> + StructTreeRoot contains <Annot> @@ -346,10 +346,10 @@ - <StructTreeRoot> shall not contain <Form> + StructTreeRoot shall not contain <Form> kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 - <StructTreeRoot> contains <Form> + StructTreeRoot contains <Form> @@ -358,10 +358,10 @@ - <StructTreeRoot> shall not contain <Ruby> + StructTreeRoot shall not contain <Ruby> kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 - <StructTreeRoot> contains <Ruby> + StructTreeRoot contains <Ruby> @@ -370,10 +370,10 @@ - <StructTreeRoot> shall not contain <RB> + StructTreeRoot shall not contain <RB> kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 - <StructTreeRoot> contains <RB> + StructTreeRoot contains <RB> @@ -382,10 +382,10 @@ - <StructTreeRoot> shall not contain <RT> + StructTreeRoot shall not contain <RT> kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 - <StructTreeRoot> contains <RT> + StructTreeRoot contains <RT> @@ -394,10 +394,10 @@ - <StructTreeRoot> shall not contain <RP> + StructTreeRoot shall not contain <RP> kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 - <StructTreeRoot> contains <RP> + StructTreeRoot contains <RP> @@ -406,10 +406,10 @@ - <StructTreeRoot> shall not contain <Warichu> + StructTreeRoot shall not contain <Warichu> kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 - <StructTreeRoot> contains <Warichu> + StructTreeRoot contains <Warichu> @@ -418,10 +418,10 @@ - <StructTreeRoot> shall not contain <WT> + StructTreeRoot shall not contain <WT> kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 - <StructTreeRoot> contains <WT> + StructTreeRoot contains <WT> @@ -430,10 +430,10 @@ - <StructTreeRoot> shall not contain <WP> + StructTreeRoot shall not contain <WP> kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 - <StructTreeRoot> contains <WP> + StructTreeRoot contains <WP> @@ -442,10 +442,10 @@ - <StructTreeRoot> shall not contain <FENote> + StructTreeRoot shall not contain <FENote> kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 - <StructTreeRoot> contains <FENote> + StructTreeRoot contains <FENote> @@ -454,10 +454,10 @@ - <StructTreeRoot> shall not contain <Index> + StructTreeRoot shall not contain <Index> kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 - <StructTreeRoot> contains <Index> + StructTreeRoot contains <Index> @@ -466,10 +466,10 @@ - <StructTreeRoot> shall not contain <L> + StructTreeRoot shall not contain <L> kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 - <StructTreeRoot> contains <L> + StructTreeRoot contains <L> @@ -478,10 +478,10 @@ - <StructTreeRoot> shall not contain <LI> + StructTreeRoot shall not contain <LI> kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 - <StructTreeRoot> contains <LI> + StructTreeRoot contains <LI> @@ -490,10 +490,10 @@ - <StructTreeRoot> shall not contain <LBody> + StructTreeRoot shall not contain <LBody> kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 - <StructTreeRoot> contains <LBody> + StructTreeRoot contains <LBody> @@ -502,10 +502,10 @@ - <StructTreeRoot> shall not contain <BibEntry> + StructTreeRoot shall not contain <BibEntry> kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 - <StructTreeRoot> contains <BibEntry> + StructTreeRoot contains <BibEntry> @@ -514,10 +514,10 @@ - <StructTreeRoot> shall not contain <Table> + StructTreeRoot shall not contain <Table> kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 - <StructTreeRoot> contains <Table> + StructTreeRoot contains <Table> @@ -526,10 +526,10 @@ - <StructTreeRoot> shall not contain <TR> + StructTreeRoot shall not contain <TR> kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 - <StructTreeRoot> contains <TR> + StructTreeRoot contains <TR> @@ -538,10 +538,10 @@ - <StructTreeRoot> shall not contain <TH> + StructTreeRoot shall not contain <TH> kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 - <StructTreeRoot> contains <TH> + StructTreeRoot contains <TH> @@ -550,10 +550,10 @@ - <StructTreeRoot> shall not contain <TD> + StructTreeRoot shall not contain <TD> kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 - <StructTreeRoot> contains <TD> + StructTreeRoot contains <TD> @@ -562,10 +562,10 @@ - <StructTreeRoot> shall not contain <THead> + StructTreeRoot shall not contain <THead> kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 - <StructTreeRoot> contains <THead> + StructTreeRoot contains <THead> @@ -574,10 +574,10 @@ - <StructTreeRoot> shall not contain <TBody> + StructTreeRoot shall not contain <TBody> kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 - <StructTreeRoot> contains <TBody> + StructTreeRoot contains <TBody> @@ -586,10 +586,10 @@ - <StructTreeRoot> shall not contain <TFoot> + StructTreeRoot shall not contain <TFoot> kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 - <StructTreeRoot> contains <TFoot> + StructTreeRoot contains <TFoot> @@ -598,10 +598,10 @@ - <StructTreeRoot> shall not contain <Caption> + StructTreeRoot shall not contain <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 - <StructTreeRoot> contains <Caption> + StructTreeRoot contains <Caption> @@ -610,10 +610,10 @@ - <StructTreeRoot> shall not contain <Figure> + StructTreeRoot shall not contain <Figure> kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 - <StructTreeRoot> contains <Figure> + StructTreeRoot contains <Figure> @@ -622,10 +622,10 @@ - <StructTreeRoot> shall not contain <Formula> + StructTreeRoot shall not contain <Formula> kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 - <StructTreeRoot> contains <Formula> + StructTreeRoot contains <Formula> @@ -634,10 +634,10 @@ - <StructTreeRoot> shall not contain <Artifact> + StructTreeRoot shall not contain <Artifact> kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 - <StructTreeRoot> contains <Artifact> + StructTreeRoot contains <Artifact> @@ -646,10 +646,10 @@ - <StructTreeRoot> shall not contain content item + StructTreeRoot shall not contain content item hasContentItems == false - <StructTreeRoot> contains content item(s) + StructTreeRoot contains content item(s) From e15ccaf34249c5f208067bf3cd3abb521e2710f0 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Sun, 19 Jun 2022 20:47:09 +0300 Subject: [PATCH 418/557] Update error messages --- .../verapdf-profile-6-7-8-t01.xml | 6 ++-- .../verapdf-profile-6-1-8-t01.xml | 6 ++-- .../verapdf-profile-6-2-2-t02.xml | 10 +++--- .../verapdf-profile-6-9-t03.xml | 8 +++-- .../verapdf-profile-6-10-t03.xml | 2 +- .../verapdf-profile-6-2-2-t02.xml | 10 +++--- PDF_A/PDFA-1A.xml | 6 ++-- PDF_A/PDFA-1B.xml | 6 ++-- PDF_A/PDFA-2A.xml | 30 +++++++++++------- PDF_A/PDFA-2B.xml | 30 +++++++++++------- PDF_A/PDFA-2U.xml | 30 +++++++++++------- PDF_A/PDFA-3A.xml | 30 +++++++++++------- PDF_A/PDFA-3B.xml | 30 +++++++++++------- PDF_A/PDFA-3U.xml | 30 +++++++++++------- PDF_A/PDFA-4.xml | 24 ++++++++------ PDF_A/PDFA-4E.xml | 24 ++++++++------ PDF_A/PDFA-4F.xml | 24 ++++++++------ .../verapdf-profile-7-18-1-t02.xml | 11 ++++--- .../verapdf-profile-7-18-1-t03.xml | 2 +- PDF_UA/PDFUA-1.xml | 31 ++++++++++++------- PDF_UA/WCAG-21-Complete.xml | 31 ++++++++++++------- 21 files changed, 238 insertions(+), 143 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml index 66cca0dd..3515e8bd 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml @@ -11,8 +11,10 @@ Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. containsUndefinedFields == false - An extension schema object contains fields not defined by the specification - + An extension schema object contains field(s) %1 not defined by the specification + + undefinedFields + diff --git a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml index ba9c54aa..11f4086e 100644 --- a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml @@ -13,8 +13,10 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct UTF-8 character sequence - + The name value %1 does not represent a correct UTF-8 character sequence + + unicodeValue + diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml index 03237e33..031a5081 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml @@ -7,14 +7,16 @@
- + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + inheritedResourceNames == '' - A content stream refers to resources not defined in an explicitly associated Resources dictionary - + A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary + + inheritedResourceNames + diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml index 0f2904af..dc4680d1 100644 --- a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml @@ -11,10 +11,12 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - doesOrderContainAllOCGs == true + OCGsNotContainInOrder == '' - Not all optional content groups are present in the Order entry of the optional content configuration dictionary - + Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary + + OCGsNotContainInOrder + diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml index dd161f85..d098b1bc 100644 --- a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml @@ -13,7 +13,7 @@ to all OCGs in the conforming file. OCGsNotContainInOrder == '' - Optional content groups %1 are not present in the Order entry of the optional content configuration dictionary + Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary OCGsNotContainInOrder diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml index 3432679e..fe7625ef 100644 --- a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml @@ -9,16 +9,18 @@
- + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this content stream. - isInherited == false + inheritedResourceNames == '' - A content stream refers to resources not defined in an explicitly associated Resources dictionary - + A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary + + inheritedResourceNames + diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index fd039627..739c9f4e 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1136,8 +1136,10 @@ Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. containsUndefinedFields == false - An extension schema object contains fields not defined by the specification - + An extension schema object contains field(s) %1 not defined by the specification + + undefinedFields + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 81a21289..af2d323c 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1122,8 +1122,10 @@ Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. containsUndefinedFields == false - An extension schema object contains fields not defined by the specification - + An extension schema object contains field(s) %1 not defined by the specification + + undefinedFields + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 6e13f63e..3158d3ee 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -163,8 +163,10 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct UTF-8 character sequence - + The name value %1 does not represent a correct UTF-8 character sequence + + unicodeValue + @@ -364,14 +366,16 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + inheritedResourceNames == '' - A content stream refers to resources not defined in an explicitly associated Resources dictionary - + A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary + + inheritedResourceNames + @@ -1418,8 +1422,10 @@ of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false - An extension schema object contains fields not defined by the specification - + An extension schema object contains field(s) %1 not defined by the specification + + undefinedFields + @@ -1665,10 +1671,12 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - doesOrderContainAllOCGs == true + OCGsNotContainInOrder == '' - Not all optional content groups are present in the Order entry of the optional content configuration dictionary - + Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary + + OCGsNotContainInOrder + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index e11a9ee8..6a35e811 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -163,8 +163,10 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct UTF-8 character sequence - + The name value %1 does not represent a correct UTF-8 character sequence + + unicodeValue + @@ -364,14 +366,16 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + inheritedResourceNames == '' - A content stream refers to resources not defined in an explicitly associated Resources dictionary - + A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary + + inheritedResourceNames + @@ -1380,8 +1384,10 @@ of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false - An extension schema object contains fields not defined by the specification - + An extension schema object contains field(s) %1 not defined by the specification + + undefinedFields + @@ -1568,10 +1574,12 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - doesOrderContainAllOCGs == true + OCGsNotContainInOrder == '' - Not all optional content groups are present in the Order entry of the optional content configuration dictionary - + Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary + + OCGsNotContainInOrder + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 2797ab15..a88888c4 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -163,8 +163,10 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct UTF-8 character sequence - + The name value %1 does not represent a correct UTF-8 character sequence + + unicodeValue + @@ -364,14 +366,16 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + inheritedResourceNames == '' - A content stream refers to resources not defined in an explicitly associated Resources dictionary - + A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary + + inheritedResourceNames + @@ -1403,8 +1407,10 @@ of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false - An extension schema object contains fields not defined by the specification - + An extension schema object contains field(s) %1 not defined by the specification + + undefinedFields + @@ -1591,10 +1597,12 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - doesOrderContainAllOCGs == true + OCGsNotContainInOrder == '' - Not all optional content groups are present in the Order entry of the optional content configuration dictionary - + Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary + + OCGsNotContainInOrder + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 5033e7d7..20ac5e6a 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -163,8 +163,10 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct UTF-8 character sequence - + The name value %1 does not represent a correct UTF-8 character sequence + + unicodeValue + @@ -364,14 +366,16 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + inheritedResourceNames == '' - A content stream refers to resources not defined in an explicitly associated Resources dictionary - + A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary + + inheritedResourceNames + @@ -1418,8 +1422,10 @@ of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false - An extension schema object contains fields not defined by the specification - + An extension schema object contains field(s) %1 not defined by the specification + + undefinedFields + @@ -1689,10 +1695,12 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - doesOrderContainAllOCGs == true + OCGsNotContainInOrder == '' - Not all optional content groups are present in the Order entry of the optional content configuration dictionary - + Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary + + OCGsNotContainInOrder + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index e83e9d1f..23aeefdc 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -163,8 +163,10 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct UTF-8 character sequence - + The name value %1 does not represent a correct UTF-8 character sequence + + unicodeValue + @@ -364,14 +366,16 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + inheritedResourceNames == '' - A content stream refers to resources not defined in an explicitly associated Resources dictionary - + A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary + + inheritedResourceNames + @@ -1380,8 +1384,10 @@ of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false - An extension schema object contains fields not defined by the specification - + An extension schema object contains field(s) %1 not defined by the specification + + undefinedFields + @@ -1592,10 +1598,12 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - doesOrderContainAllOCGs == true + OCGsNotContainInOrder == '' - Not all optional content groups are present in the Order entry of the optional content configuration dictionary - + Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary + + OCGsNotContainInOrder + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 765ed3ab..d828b482 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -163,8 +163,10 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct UTF-8 character sequence - + The name value %1 does not represent a correct UTF-8 character sequence + + unicodeValue + @@ -364,14 +366,16 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. - isInherited == false + inheritedResourceNames == '' - A content stream refers to resources not defined in an explicitly associated Resources dictionary - + A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary + + inheritedResourceNames + @@ -1403,8 +1407,10 @@ of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false - An extension schema object contains fields not defined by the specification - + An extension schema object contains field(s) %1 not defined by the specification + + undefinedFields + @@ -1615,10 +1621,12 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - doesOrderContainAllOCGs == true + OCGsNotContainInOrder == '' - Not all optional content groups are present in the Order entry of the optional content configuration dictionary - + Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary + + OCGsNotContainInOrder + diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 445cd557..5ff2825f 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -176,8 +176,10 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct UTF-8 character sequence - + The name value %1 does not represent a correct UTF-8 character sequence + + unicodeValue + @@ -258,16 +260,18 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this content stream. - isInherited == false + inheritedResourceNames == '' - A content stream refers to resources not defined in an explicitly associated Resources dictionary - + A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary + + inheritedResourceNames + @@ -1381,10 +1385,12 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - doesOrderContainAllOCGs == true + OCGsNotContainInOrder == '' - Not all optional content groups are present in the Order entry of the optional content configuration dictionary - + Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary + + OCGsNotContainInOrder + diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 27bbdacb..29851e27 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -190,8 +190,10 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct UTF-8 character sequence - + The name value %1 does not represent a correct UTF-8 character sequence + + unicodeValue + @@ -272,16 +274,18 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this content stream. - isInherited == false + inheritedResourceNames == '' - A content stream refers to resources not defined in an explicitly associated Resources dictionary - + A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary + + inheritedResourceNames + @@ -1390,10 +1394,12 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - doesOrderContainAllOCGs == true + OCGsNotContainInOrder == '' - Not all optional content groups are present in the Order entry of the optional content configuration dictionary - + Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary + + OCGsNotContainInOrder + diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index de9efc49..9f3fff0a 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -176,8 +176,10 @@ a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. isValidUtf8 == true - The name object does not represent a correct UTF-8 character sequence - + The name value %1 does not represent a correct UTF-8 character sequence + + unicodeValue + @@ -258,16 +260,18 @@ - + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this content stream. - isInherited == false + inheritedResourceNames == '' - A content stream refers to resources not defined in an explicitly associated Resources dictionary - + A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary + + inheritedResourceNames + @@ -1388,10 +1392,12 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - doesOrderContainAllOCGs == true + OCGsNotContainInOrder == '' - Not all optional content groups are present in the Order entry of the optional content configuration dictionary - + Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary + + OCGsNotContainInOrder + diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml index 604fecf3..52682cfb 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml @@ -13,14 +13,15 @@ An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element - structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, - or those having rectangle outside the crop-box) has neither Contents key nor an Alt entry - in the enclosing structure element - + %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box + has neither Contents key nor an Alt entry in the enclosing structure element + + Subtype + diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml index ac37207b..10760162 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml @@ -16,7 +16,7 @@ isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - and does not have a TU key and its Widget annotations do not have alternative descriptions + has neither TU key nor its Widget annotations do not have alternative descriptions (in the form of an Alt entry in the enclosing structure element) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index ced8af70..293641c2 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -33,8 +33,10 @@ Content marked as Artifact should not present inside tagged content tag != 'Artifact' || parentStructureTag == null - Content marked as Artifact is present inside tagged content - + Content marked as Artifact is present inside tagged content (tag %1) + + parentStructureTag + @@ -43,8 +45,10 @@ Tagged content should not present inside content marked as Artifact structureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 - Tagged content is present inside content marked as Artifact - + Tagged content (tag %1) is present inside content marked as Artifact + + structureTag + @@ -763,14 +767,15 @@ An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element - structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, - or those having rectangle outside the crop-box) has neither Contents key nor an Alt entry - in the enclosing structure element - + %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box + has neither Contents key nor an Alt entry in the enclosing structure element + + Subtype + @@ -782,7 +787,7 @@ isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - and does not have a TU key and its Widget annotations do not have alternative descriptions + has neither TU key nor its Widget annotations do not have alternative descriptions (in the form of an Alt entry in the enclosing structure element) @@ -883,8 +888,10 @@ is required. hasCorrectAlt == true - Alt key is missing from the media clip data dictionary or has not correct value - + Alt key (value %1) is missing from the media clip data dictionary or has incorrect value + + Alt + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index cfd746cc..9b6b4023 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -581,8 +581,10 @@ Content marked as Artifact should not present inside tagged content tag != 'Artifact' || parentStructureTag == null - Content marked as Artifact is present inside tagged content - + Content marked as Artifact is present inside tagged content (tag %1) + + parentStructureTag + @@ -591,8 +593,10 @@ Tagged content should not present inside content marked as Artifact structureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 - Tagged content is present inside content marked as Artifact - + Tagged content (tag %1) is present inside content marked as Artifact + + structureTag + @@ -1310,14 +1314,15 @@ An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element - structParentType != 'Annot' || Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, - or those having rectangle outside the crop-box) has neither Contents key nor an Alt entry - in the enclosing structure element - + %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box + has neither Contents key nor an Alt entry in the enclosing structure element + + Subtype + @@ -1329,7 +1334,7 @@ isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - and does not have a TU key and its Widget annotations do not have alternative descriptions + has neither TU key nor its Widget annotations do not have alternative descriptions (in the form of an Alt entry in the enclosing structure element) @@ -1418,8 +1423,10 @@ is required. hasCorrectAlt == true - Alt key is missing from the media clip data dictionary or has not correct value - + Alt key (value %1) is missing from the media clip data dictionary or has incorrect value + + Alt + From eaef92a224ab84529abd10797fe05bf67a34be58 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 21 Jun 2022 18:09:12 +0300 Subject: [PATCH 419/557] Fix rules 6.1.12-1, 6.4.1-1, 6.6.3-1 --- .../6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml | 2 +- .../6.4.1 General/verapdf-profile-6-4-1-t01.xml | 2 +- .../6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml | 2 +- .../6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml | 6 +++--- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- PDF_A/PDFA-4.xml | 8 ++++---- PDF_A/PDFA-4E.xml | 8 ++++---- PDF_A/PDFA-4F.xml | 8 ++++---- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml | 6 +++--- PDF_UA/PDFUA-1.xml | 6 +++--- PDF_UA/WCAG-21-Complete.xml | 6 +++--- 16 files changed, 39 insertions(+), 39 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml index c651b92e..805626c2 100644 --- a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml @@ -9,7 +9,7 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index 1364a17f..8d86e69d 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -13,7 +13,7 @@ A Widget annotation contains %1 key(s) - keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() diff --git a/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml b/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml index 485e2933..28f14d57 100644 --- a/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml @@ -9,7 +9,7 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). - entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP diff --git a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml index ff35967e..527f476a 100644 --- a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml +++ b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml @@ -13,13 +13,13 @@ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl. - parentType == 'WidgetAnnot' || parentType == 'FormField' || actions.split('&').filter(elem => elem != 'E' && - elem != 'X'&& elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 + parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && + elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == '' Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl - actions.split('&').filter(elem => elem != 'E' && elem != 'X'&& elem != 'D' && + entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').toString() diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 3158d3ee..fdac788c 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -207,7 +207,7 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -1230,7 +1230,7 @@ A Widget annotation contains %1 key(s) - keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 6a35e811..2367f1e3 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -207,7 +207,7 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -1192,7 +1192,7 @@ A Widget annotation contains %1 key(s) - keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index a88888c4..1ffb2d59 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -207,7 +207,7 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -1215,7 +1215,7 @@ A Widget annotation contains %1 key(s) - keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 20ac5e6a..19b416bd 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -207,7 +207,7 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -1230,7 +1230,7 @@ A Widget annotation contains %1 key(s) - keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 23aeefdc..69db82ac 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -207,7 +207,7 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -1192,7 +1192,7 @@ A Widget annotation contains %1 key(s) - keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index d828b482..4a7a7aa8 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -207,7 +207,7 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). - entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -1215,7 +1215,7 @@ A Widget annotation contains %1 key(s) - keys.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() + entries.split('&').filter(elem => elem == 'A' || elem == 'AA').toString() diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 5ff2825f..aec37428 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -222,7 +222,7 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). - entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -1181,13 +1181,13 @@ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl. - parentType == 'WidgetAnnot' || parentType == 'FormField' || actions.split('&').filter(elem => elem != 'E' && - elem != 'X'&& elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 + parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && + elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == '' Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl - actions.split('&').filter(elem => elem != 'E' && elem != 'X'&& elem != 'D' && + entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').toString() diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 29851e27..5f1722ee 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -236,7 +236,7 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). - entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -1198,13 +1198,13 @@ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl. - parentType == 'WidgetAnnot' || parentType == 'FormField' || actions.split('&').filter(elem => elem != 'E' && - elem != 'X'&& elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 + parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && + elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == '' Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl - actions.split('&').filter(elem => elem != 'E' && elem != 'X'&& elem != 'D' && + entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').toString() diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 9f3fff0a..9ef1682a 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -222,7 +222,7 @@ No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). - entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 + entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -1182,13 +1182,13 @@ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl. - parentType == 'WidgetAnnot' || parentType == 'FormField' || actions.split('&').filter(elem => elem != 'E' && - elem != 'X'&& elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 + parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && + elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == '' Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl - actions.split('&').filter(elem => elem != 'E' && elem != 'X'&& elem != 'D' && + entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').toString() diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml index 66c04df0..551b2cf9 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml @@ -9,7 +9,7 @@ THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' THead element contains %1 element(s) instead of TR @@ -23,7 +23,7 @@ TBody element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' TBody element contains %1 element(s) instead of TR @@ -37,7 +37,7 @@ TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' TFoot element contains %1 element(s) instead of TR diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 293641c2..f4397d1b 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -545,7 +545,7 @@ THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' THead element contains %1 element(s) instead of TR @@ -559,7 +559,7 @@ TBody element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' TBody element contains %1 element(s) instead of TR @@ -573,7 +573,7 @@ TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' TFoot element contains %1 element(s) instead of TR diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 9b6b4023..8d951e7b 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1092,7 +1092,7 @@ THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' THead element contains %1 element(s) instead of TR @@ -1106,7 +1106,7 @@ TBody element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' TBody element contains %1 element(s) instead of TR @@ -1120,7 +1120,7 @@ TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' TFoot element contains %1 element(s) instead of TR From 7815d7c10de329997555335252ccfb00ebd904d8 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 24 Jun 2022 14:20:18 +0300 Subject: [PATCH 420/557] Fix error messages --- .../verapdf-profile-6-8-2-t01.xml | 8 +++-- .../verapdf-profile-6-7-2-t01.xml | 8 +++-- .../verapdf-profile-6-1-12-t02.xml | 10 +++++-- .../verapdf-profile-6-9-t03.xml | 2 +- .../verapdf-profile-6-10-t03.xml | 2 +- PDF_A/PDFA-1A.xml | 8 +++-- PDF_A/PDFA-2A.xml | 20 +++++++++---- PDF_A/PDFA-2B.xml | 12 +++++--- PDF_A/PDFA-2U.xml | 12 +++++--- PDF_A/PDFA-3A.xml | 20 +++++++++---- PDF_A/PDFA-3B.xml | 12 +++++--- PDF_A/PDFA-3U.xml | 12 +++++--- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t10.xml | 15 +++++++--- .../verapdf-profile-7-11-t01.xml | 8 +++-- .../verapdf-profile-7-16-t01.xml | 6 +++- .../verapdf-profile-7-18-1-t03.xml | 4 +-- PDF_UA/PDFUA-1.xml | 30 ++++++++++++++----- PDF_UA/WCAG-21-Complete.xml | 30 ++++++++++++++----- 21 files changed, 158 insertions(+), 67 deletions(-) diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml index e8a3b58d..678ed70c 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml @@ -11,8 +11,12 @@ The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true. Marked == true - /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false - + MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or + is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2) + + MarkInfo + Marked + diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml index d3750852..0ce5a647 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml @@ -11,8 +11,12 @@ The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. Marked == true - /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false - + MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or + is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2) + + MarkInfo + Marked + diff --git a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml index c2aa83e3..b5235cfa 100644 --- a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml @@ -11,10 +11,14 @@ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || containsDigestEntries == false + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. - + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + + entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').toString() + diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml index dc4680d1..22e5d5c3 100644 --- a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml @@ -11,7 +11,7 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == '' + OCGsNotContainInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml index d098b1bc..2b804ba9 100644 --- a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml @@ -11,7 +11,7 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == '' + OCGsNotContainInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 739c9f4e..282d46be 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1298,8 +1298,12 @@ The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true. Marked == true - /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false - + MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or + is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2) + + MarkInfo + Marked + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index fdac788c..c33537f4 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -222,10 +222,14 @@ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || containsDigestEntries == false + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. - + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + + entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').toString() + @@ -1568,8 +1572,12 @@ The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. Marked == true - /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false - + MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or + is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2) + + MarkInfo + Marked + @@ -1671,7 +1679,7 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == '' + OCGsNotContainInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 2367f1e3..6f939354 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -222,10 +222,14 @@ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || containsDigestEntries == false + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. - + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + + entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').toString() + @@ -1574,7 +1578,7 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == '' + OCGsNotContainInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 1ffb2d59..23d16bfd 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -222,10 +222,14 @@ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || containsDigestEntries == false + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. - + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + + entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').toString() + @@ -1597,7 +1601,7 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == '' + OCGsNotContainInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 19b416bd..ab163cf7 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -222,10 +222,14 @@ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || containsDigestEntries == false + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. - + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + + entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').toString() + @@ -1568,8 +1572,12 @@ The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. Marked == true - /Marked entry of the MarkInfo dictionary is not present in the document catalog or is set to false - + MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or + is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2) + + MarkInfo + Marked + @@ -1695,7 +1703,7 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == '' + OCGsNotContainInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 69db82ac..d33dfe86 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -222,10 +222,14 @@ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || containsDigestEntries == false + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. - + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + + entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').toString() + @@ -1598,7 +1602,7 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == '' + OCGsNotContainInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 4a7a7aa8..51461b5b 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -222,10 +222,14 @@ If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || containsDigestEntries == false + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains one of the keys DigestLocation, DigestMethod, or DigestValue in presence of DocMDP entry in the permissions dictionary. - + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + + entries.split('&').filter(elem => elem == 'DigestLocation' || + elem == 'DigestMethod' || elem == 'DigestValue').toString() + @@ -1621,7 +1625,7 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == '' + OCGsNotContainInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index aec37428..d7366ae5 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -1385,7 +1385,7 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == '' + OCGsNotContainInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 5f1722ee..7799657f 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1394,7 +1394,7 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == '' + OCGsNotContainInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 9ef1682a..6b49b0a2 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -1392,7 +1392,7 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == '' + OCGsNotContainInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml index 51e4e2d1..dfd16956 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml @@ -2,17 +2,24 @@
ISO 14289-1:2014 - 7.1 General - DisplayDocTitle - The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. + The document catalog dictionary shall include a ViewerPreferences dictionary containing a + DisplayDocTitle key, whose value shall be true.
- The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. + The document catalog dictionary shall include a ViewerPreferences dictionary containing a + DisplayDocTitle key, whose value shall be true. DisplayDocTitle == true - DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to false - + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is + set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, + DisplayDocTitle = %2) + + ViewerPreferences + DisplayDocTitle + diff --git a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml index 3c85afc0..da4e4a65 100644 --- a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml +++ b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml @@ -11,8 +11,12 @@ The file specification dictionary for an embedded file shall contain the non-empty F and UF keys containsEF == false || (F != null && F != '' && UF != null && UF != '') - The file specification dictionary for an embedded file does not contain either F or EF key or at least one of the keys is empty - + The file specification dictionary for an embedded file does not contain either F or UF key or + at least one of the keys is empty (F = %1, UF = %2) + + F + UF +
diff --git a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml index 8414b764..dc687b7c 100644 --- a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml +++ b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml @@ -15,8 +15,12 @@ The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false + (P = %1, 10th bit = %2) - + + P + P != null ? (P & 512) >> 9 : null + diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml index 10760162..c6634850 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml @@ -16,8 +16,8 @@ isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - has neither TU key nor its Widget annotations do not have alternative descriptions - (in the form of an Alt entry in the enclosing structure element) + neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt + entry in the enclosing structure element) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index f4397d1b..b3b9ee05 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -144,11 +144,17 @@
- The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. + The document catalog dictionary shall include a ViewerPreferences dictionary containing a + DisplayDocTitle key, whose value shall be true. DisplayDocTitle == true - DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to false - + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is + set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, + DisplayDocTitle = %2) + + ViewerPreferences + DisplayDocTitle + @@ -718,8 +724,12 @@ The file specification dictionary for an embedded file shall contain the non-empty F and UF keys containsEF == false || (F != null && F != '' && UF != null && UF != '') - The file specification dictionary for an embedded file does not contain either F or EF key or at least one of the keys is empty - + The file specification dictionary for an embedded file does not contain either F or UF key or + at least one of the keys is empty (F = %1, UF = %2) + + F + UF +
@@ -741,8 +751,12 @@ The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false + (P = %1, 10th bit = %2) - + + P + P != null ? (P & 512) >> 9 : null + @@ -787,8 +801,8 @@ isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - has neither TU key nor its Widget annotations do not have alternative descriptions - (in the form of an Alt entry in the enclosing structure element) + neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt + entry in the enclosing structure element) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 8d951e7b..cd751cff 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -692,11 +692,17 @@
- The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. + The document catalog dictionary shall include a ViewerPreferences dictionary containing a + DisplayDocTitle key, whose value shall be true. DisplayDocTitle == true - DisplayDocTitle key of the ViewerPreferences dictionary is not present in the document catalog or is set to false - + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is + set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, + DisplayDocTitle = %2) + + ViewerPreferences + DisplayDocTitle + @@ -1265,8 +1271,12 @@ The file specification dictionary for an embedded file shall contain the non-empty F and UF keys containsEF == false || (F != null && F != '' && UF != null && UF != '') - The file specification dictionary for an embedded file does not contain either F or EF key or at least one of the keys is empty - + The file specification dictionary for an embedded file does not contain either F or UF key or + at least one of the keys is empty (F = %1, UF = %2) + + F + UF +
@@ -1288,8 +1298,12 @@ The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false + (P = %1, 10th bit = %2) - + + P + P != null ? (P & 512) >> 9 : null + @@ -1334,8 +1348,8 @@ isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - has neither TU key nor its Widget annotations do not have alternative descriptions - (in the form of an Alt entry in the enclosing structure element) + neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt + entry in the enclosing structure element) From 738b1439a42a1989ee810ceb258ce43330d89131 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Sat, 9 Jul 2022 15:26:34 +0300 Subject: [PATCH 421/557] Fix error messages --- .../verapdf-profile-6-1-2-t01.xml | 2 +- .../verapdf-profile-6-1-2-t02.xml | 10 ++- .../verapdf-profile-6-1-3-t01.xml | 2 +- .../verapdf-profile-6-1-4-t01.xml | 2 +- .../verapdf-profile-6-1-4-t02.xml | 2 +- .../verapdf-profile-6-1-7-t02.xml | 2 +- .../verapdf-profile-6-1-8-t01.xml | 2 +- .../verapdf-profile-6-3-5-t03.xml | 3 +- .../verapdf-profile-6-3-7-t01.xml | 5 +- .../verapdf-profile-6-5-3-t02.xml | 11 ++- .../verapdf-profile-6-5-3-t03.xml | 7 +- .../verapdf-profile-6-7-8-t02.xml | 2 +- .../verapdf-profile-6-1-2-t01.xml | 3 +- .../verapdf-profile-6-1-2-t02.xml | 10 ++- .../verapdf-profile-6-1-4-t02.xml | 2 +- .../verapdf-profile-6-1-7-t02.xml | 2 +- .../verapdf-profile-6-1-7-t04.xml | 2 +- .../verapdf-profile-6-1-9-t01.xml | 2 +- .../verapdf-profile-6-2-11-4-t04.xml | 2 +- .../verapdf-profile-6-2-11-6-t01.xml | 8 +- .../verapdf-profile-6-2-11-6-t02.xml | 6 +- .../verapdf-profile-6-2-5-t06.xml | 2 +- .../verapdf-profile-6-2-8-3-t03.xml | 6 +- .../verapdf-profile-6-2-8-3-t05.xml | 6 +- .../verapdf-profile-6-3-2-t02.xml | 12 ++- .../verapdf-profile-6-6-2-3-t02.xml | 2 +- .../verapdf-profile-6-8-t02.xml | 8 +- .../verapdf-profile-6-9-t03.xml | 4 +- .../verapdf-profile-6-1-12-t01.xml | 3 +- .../verapdf-profile-6-1-2-t01.xml | 3 +- .../verapdf-profile-6-1-2-t02.xml | 10 ++- .../verapdf-profile-6-1-4-t01.xml | 2 +- .../verapdf-profile-6-1-8-t01.xml | 2 +- .../verapdf-profile-6-10-t03.xml | 4 +- .../verapdf-profile-6-2-10-6-t02.xml | 6 +- .../verapdf-profile-6-2-10-7-t01.xml | 2 +- .../verapdf-profile-6-2-10-8-t01.xml | 2 +- .../verapdf-profile-6-2-4-2-t03.xml | 4 +- .../verapdf-profile-6-2-4-3-t02.xml | 4 +- .../verapdf-profile-6-2-4-3-t03.xml | 4 +- .../verapdf-profile-6-2-5-t06.xml | 2 +- .../verapdf-profile-6-2-7-3-t03.xml | 6 +- .../verapdf-profile-6-2-7-3-t05.xml | 8 +- .../verapdf-profile-6-3-2-t02.xml | 12 ++- .../verapdf-profile-6-9-t02.xml | 8 +- PDF_A/PDFA-1A.xml | 50 +++++++---- PDF_A/PDFA-1B.xml | 50 +++++++---- PDF_A/PDFA-2A.xml | 79 ++++++++++++------ PDF_A/PDFA-2B.xml | 77 +++++++++++------ PDF_A/PDFA-2U.xml | 79 ++++++++++++------ PDF_A/PDFA-3A.xml | 79 ++++++++++++------ PDF_A/PDFA-3B.xml | 77 +++++++++++------ PDF_A/PDFA-3U.xml | 79 ++++++++++++------ PDF_A/PDFA-4.xml | 82 +++++++++++++------ PDF_A/PDFA-4E.xml | 82 +++++++++++++------ PDF_A/PDFA-4F.xml | 82 +++++++++++++------ .../verapdf-profile-7-21-4-2-t02.xml | 2 +- .../verapdf-profile-7-21-6-t01.xml | 8 +- .../verapdf-profile-7-21-6-t02.xml | 6 +- .../verapdf-profile-7-21-7-t02.xml | 2 +- .../7.3 Graphics/verapdf-profile-7-3-t01.xml | 2 +- .../verapdf-profile-7-7-t01.xml | 2 +- PDF_UA/PDFUA-1.xml | 22 ++--- PDF_UA/WCAG-21-Complete.xml | 22 ++--- 64 files changed, 715 insertions(+), 376 deletions(-) diff --git a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml index a032c76f..0c876d71 100644 --- a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -13,7 +13,7 @@ The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not correctly identify the version of the PDF document + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-n.m header headerOffset diff --git a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml index 17a5dbdf..8987c317 100644 --- a/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml @@ -13,8 +13,14 @@ least four characters, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 +
diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index d1afb43d..b033698b 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -10,7 +10,7 @@ The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 - (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + (isLinearized == true) ? (firstPageID != null) : (lastID != null) Missing ID in the document trailer diff --git a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml index 09b12ca1..f218745b 100644 --- a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml @@ -11,7 +11,7 @@ In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) subsectionHeaderSpaceSeparated == true - Spacings of subsection headers in the cross reference table do not comply PDF/A specification + Extra or missing spacings around in a subsection header of the cross reference table diff --git a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml index 6940cb68..cb6abdf0 100644 --- a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml @@ -11,7 +11,7 @@ The xref keyword and the cross reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table diff --git a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml index 31d659ef..08c101b1 100644 --- a/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml +++ b/PDF_A/1b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml @@ -13,7 +13,7 @@ or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' diff --git a/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml index cffcb845..06281884 100644 --- a/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml @@ -15,7 +15,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml index 5db1050e..07ec965f 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml @@ -13,7 +13,8 @@ CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs + present in the embedded font subset and used for rendering diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml index b8c34b8a..1e1cf59c 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml @@ -18,10 +18,11 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && containsDifferences == false) - A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or - WinAnsiEncoding or Encoding entry contains a Differences entry. + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2) Encoding + containsDifferences diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml index 0ecb1521..268eaaca 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml @@ -13,8 +13,15 @@ Invisible and NoView flag bits shall be set to 0 F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - Annotation flags are either missing or have forbidden values - + Annotation flags are either missing or set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5) + + F + F != null ? (F & 4) >> 2 : null + F != null ? (F & 1) : null + F != null ? (F & 2) >> 1 : null + F != null ? (F & 32) >> 5 : null +
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml index 3fdb7072..a0c2171e 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml @@ -13,8 +13,11 @@ DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - Annotation's color or interior color is used without specifying RGB-based destination output profile - + Annotation's color (C = %1) or interior color (IC = %2) is used without specifying RGB-based destination output profile + + C + IC +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml index b2135fed..4bb26300 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml @@ -13,7 +13,7 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid syntax of the extension schema container + Invalid type or prefix of the extension schema container diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml index de36db43..a840e1b6 100644 --- a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -13,7 +13,8 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-2 specification + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, + where 'n' is a single digit number between 0 and 7 header headerOffset diff --git a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml index 8a368786..6167a331 100644 --- a/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml @@ -13,8 +13,14 @@ byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 +
diff --git a/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml index 84798352..3a637a3c 100644 --- a/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t02.xml @@ -11,7 +11,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml index 0b2364bb..cb684229 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml @@ -13,7 +13,7 @@ character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml index 637d734e..c123546f 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml @@ -23,7 +23,7 @@ (internalRepresentation == "Crypt" && decodeParms == "Identity")
- Inline image uses not permitted or unknown filter %1 + Unknown or not permitted Stream filter %1 is used internalRepresentation diff --git a/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml index f6eecb2b..93ef724b 100644 --- a/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml @@ -15,7 +15,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml index 55bdd048..3471d92b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml @@ -13,7 +13,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml index d0336b32..7d2079f9 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml @@ -11,12 +11,10 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) - - nrCmaps - + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml index a021b2a0..2a24346c 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml @@ -22,10 +22,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml index ae09edfb..ac8177ba 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -13,7 +13,7 @@ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null)
- Invalid use of TransferFunction key in the Halftone dictionary + Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml index fff37937..fc5c7bcd 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml @@ -13,8 +13,10 @@ that colour space and shall ignore all other colour space specifications. hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 - Colour specification of the JPEG2000 image has specification method. - + Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 + + colrMethod + diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml index 54d5bcfb..fd2881e0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml @@ -9,10 +9,12 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. - bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) JPEG2000 image has invalid bit-depth parameters - + + bitDepth + diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml index 3bed2565..5a2e16a3 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml @@ -11,8 +11,16 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - + Annotation flags are set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + + F + (F & 4) >> 2 + (F & 1) + (F & 2) >> 1 + (F & 32) >> 5 + (F & 256) >> 8 + diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t02.xml index ce3d4690..d183832e 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t02.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t02.xml @@ -13,7 +13,7 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid syntax of the extension schema container + Invalid type or prefix of the extension schema container diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml index d2c63e71..5c9caa62 100644 --- a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml +++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t02.xml @@ -11,8 +11,12 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or EF key - + The file specification dictionary for an embedded file does not contain either F or UF key + (F = %1, UF = %2) + + F + UF + diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml index 22e5d5c3..f681b608 100644 --- a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml @@ -11,11 +11,11 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == null + OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary - OCGsNotContainInOrder + OCGsNotContainedInOrder diff --git a/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml index ed3fda57..131b0928 100644 --- a/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml @@ -15,7 +15,8 @@ character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. Version == null || /^2\.[0-9]$/.test(Version) - The Version key with value %1 does not comply with the requirements of PDF/A-4 specification. + The Version key with value %1 does not match the pattern 2.n, + where 'n' is a single digit number between 0 and 9. Version diff --git a/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml index 0adc943c..47df538d 100644 --- a/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t01.xml @@ -13,7 +13,8 @@ where 'n' is a single digit number between 0 (30h) and 9 (39h) headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-4 specification + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, + where 'n' is a single digit number between 0 and 9 header headerOffset diff --git a/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml index 004ee1f7..6978f00a 100644 --- a/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml +++ b/PDF_A/4/6.1 File structure/6.1.2 File header/verapdf-profile-6-1-2-t02.xml @@ -13,8 +13,14 @@ byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + diff --git a/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml b/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml index f26d1a4f..284e7f65 100644 --- a/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t01.xml @@ -11,7 +11,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table diff --git a/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml index eb0ebf5c..ada733b4 100644 --- a/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml @@ -15,7 +15,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml index 2b804ba9..6e498cca 100644 --- a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml @@ -11,11 +11,11 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == null + OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary - OCGsNotContainInOrder + OCGsNotContainedInOrder diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml index ac12d1b6..f15e5ef4 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml @@ -22,10 +22,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml index 49a5958a..15a4f043 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml @@ -13,7 +13,7 @@ zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml index 4dbd17cf..ef3d902d 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml @@ -11,7 +11,7 @@ The ActualText entry shall not contain any PUA values. containsPUA == false - The ActualText entry contains any PUA values. + The ActualText entry contains a Private Unicoide Area value diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml index 0befb123..08e324c5 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml @@ -15,8 +15,8 @@ ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) - An ICCBased colour space is used where the profile is a CMYK destination profile and - is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or + the current transparency blending color space diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml index 5c8c211f..e5c7d7c6 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml @@ -18,8 +18,8 @@ (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' - DeviceRGB colour space is used without RGB output intent profile and - without current transparency RGB blending space + DeviceRGB colour space is used without RGB output intent profile and without current + transparency blending space being Device-independent RGB diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml index 3b5382b7..81119d7f 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml @@ -17,8 +17,8 @@ OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' - DeviceCMYK colour space is used without CMYK output intent profile and - without current transparency CMYK blending space + DeviceCMYK colour space is used without CMYK output intent profile and without current + transparency blending space being Device-independent CMYK diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml index 1f4882a0..1b386064 100644 --- a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -13,7 +13,7 @@ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) - Invalid use of TransferFunction key in the Halftone dictionary + Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml index 86e695c8..8c588ae8 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml @@ -13,8 +13,10 @@ that colour space and shall ignore all other colour space specifications. hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 - Colour specification of the JPEG2000 image has specification method. - + Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 + + colrMethod + diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml index e94ddf76..b74ec1f0 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml @@ -11,8 +11,12 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has invalid bit-depth parameters - + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range + ('bpcc' box present = %1, bit depth = %2) + + bpccBoxPresent + bitDepth + diff --git a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml index 8ea8321e..1f6cc1d3 100644 --- a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml @@ -11,8 +11,16 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - + Annotation flags are set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + + F + (F & 4) >> 2 + (F & 1) + (F & 2) >> 1 + (F & 32) >> 5 + (F & 256) >> 8 + diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t02.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t02.xml index 757e339d..c72d202d 100644 --- a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t02.xml +++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t02.xml @@ -11,8 +11,12 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or EF key - + The file specification dictionary for an embedded file does not contain either F or UF key + (F = %1, UF = %2) + + F + UF + diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 282d46be..94f6fa11 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -12,7 +12,7 @@ The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not correctly identify the version of the PDF document + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-n.m header headerOffset @@ -28,8 +28,14 @@ least four characters, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + @@ -37,7 +43,7 @@ The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 - (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + (isLinearized == true) ? (firstPageID != null) : (lastID != null) Missing ID in the document trailer @@ -87,7 +93,7 @@ In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) subsectionHeaderSpaceSeparated == true - Spacings of subsection headers in the cross reference table do not comply PDF/A specification + Extra or missing spacings around in a subsection header of the cross reference table @@ -97,7 +103,7 @@ The xref keyword and the cross reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table @@ -144,7 +150,7 @@ or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -170,7 +176,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -787,7 +793,8 @@ CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs + present in the embedded font subset and used for rendering @@ -820,10 +827,11 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && containsDifferences == false) - A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or - WinAnsiEncoding or Encoding entry contains a Differences entry. + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2) Encoding + containsDifferences @@ -979,8 +987,15 @@ Invisible and NoView flag bits shall be set to 0 F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - Annotation flags are either missing or have forbidden values - + Annotation flags are either missing or set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5) + + F + F != null ? (F & 4) >> 2 : null + F != null ? (F & 1) : null + F != null ? (F & 2) >> 1 : null + F != null ? (F & 32) >> 5 : null + @@ -990,8 +1005,11 @@ DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - Annotation's color or interior color is used without specifying RGB-based destination output profile - + Annotation's color (C = %1) or interior color (IC = %2) is used without specifying RGB-based destination output profile + + C + IC + @@ -1151,7 +1169,7 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid syntax of the extension schema container + Invalid type or prefix of the extension schema container diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index af2d323c..e24f7321 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -12,7 +12,7 @@ The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not correctly identify the version of the PDF document + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-n.m header headerOffset @@ -28,8 +28,14 @@ least four characters, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + @@ -37,7 +43,7 @@ The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 - (isLinearized == true && firstPageID != null) || ((isLinearized != true) && lastID != null) + (isLinearized == true) ? (firstPageID != null) : (lastID != null) Missing ID in the document trailer @@ -87,7 +93,7 @@ In a cross reference subsection header the starting object number and the range shall be separated by a single SPACE character (20h) subsectionHeaderSpaceSeparated == true - Spacings of subsection headers in the cross reference table do not comply PDF/A specification + Extra or missing spacings around in a subsection header of the cross reference table @@ -97,7 +103,7 @@ The xref keyword and the cross reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table @@ -144,7 +150,7 @@ or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -170,7 +176,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -787,7 +793,8 @@ CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs + present in the embedded font subset and used for rendering @@ -820,10 +827,11 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && containsDifferences == false) - A non-symbolic TrueType font has an encoding %1 different from MacRomanEncoding or - WinAnsiEncoding or Encoding entry contains a Differences entry. + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2) Encoding + containsDifferences @@ -965,8 +973,15 @@ Invisible and NoView flag bits shall be set to 0 F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - Annotation flags are either missing or have forbidden values - + Annotation flags are either missing or set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5) + + F + F != null ? (F & 4) >> 2 : null + F != null ? (F & 1) : null + F != null ? (F & 2) >> 1 : null + F != null ? (F & 32) >> 5 : null + @@ -976,8 +991,11 @@ DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - Annotation's color or interior color is used without specifying RGB-based destination output profile - + Annotation's color (C = %1) or interior color (IC = %2) is used without specifying RGB-based destination output profile + + C + IC + @@ -1137,7 +1155,7 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid syntax of the extension schema container + Invalid type or prefix of the extension schema container diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index c33537f4..db054c70 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -12,7 +12,8 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-2 specification + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, + where 'n' is a single digit number between 0 and 7 header headerOffset @@ -26,8 +27,14 @@ byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + @@ -72,7 +79,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table @@ -119,7 +126,7 @@ character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -179,7 +186,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -579,7 +586,7 @@ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) - Invalid use of TransferFunction key in the Halftone dictionary + Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -661,8 +668,10 @@ that colour space and shall ignore all other colour space specifications. hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 - Colour specification of the JPEG2000 image has specification method. - + Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 + + colrMethod + @@ -681,8 +690,12 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has invalid bit-depth parameters - + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range + ('bpcc' box present = %1, bit depth = %2) + + bpccBoxPresent + bitDepth + @@ -1034,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse @@ -1058,12 +1071,10 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) - - nrCmaps - + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + @@ -1078,10 +1089,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant @@ -1129,7 +1142,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1196,8 +1209,16 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - + Annotation flags are set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + + F + (F & 4) >> 2 + (F & 1) + (F & 2) >> 1 + (F & 32) >> 5 + (F & 256) >> 8 + @@ -1439,7 +1460,7 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid syntax of the extension schema container + Invalid type or prefix of the extension schema container @@ -1635,8 +1656,12 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or EF key - + The file specification dictionary for an embedded file does not contain either F or UF key + (F = %1, UF = %2) + + F + UF + @@ -1679,11 +1704,11 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == null + OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary - OCGsNotContainInOrder + OCGsNotContainedInOrder diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 6f939354..9056a6bf 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -12,7 +12,8 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-2 specification + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, + where 'n' is a single digit number between 0 and 7 header headerOffset @@ -26,8 +27,14 @@ byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + @@ -72,7 +79,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table @@ -119,7 +126,7 @@ character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -179,7 +186,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -579,7 +586,7 @@ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) - Invalid use of TransferFunction key in the Halftone dictionary + Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -661,8 +668,10 @@ that colour space and shall ignore all other colour space specifications. hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 - Colour specification of the JPEG2000 image has specification method. - + Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 + + colrMethod + @@ -681,8 +690,12 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has invalid bit-depth parameters - + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range + ('bpcc' box present = %1, bit depth = %2) + + bpccBoxPresent + bitDepth + @@ -1034,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse @@ -1058,12 +1071,10 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) - - nrCmaps - + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + @@ -1078,10 +1089,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant @@ -1158,8 +1171,16 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - + Annotation flags are set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + + F + (F & 4) >> 2 + (F & 1) + (F & 2) >> 1 + (F & 32) >> 5 + (F & 256) >> 8 + @@ -1401,7 +1422,7 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid syntax of the extension schema container + Invalid type or prefix of the extension schema container @@ -1534,8 +1555,12 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or EF key - + The file specification dictionary for an embedded file does not contain either F or UF key + (F = %1, UF = %2) + + F + UF + @@ -1578,11 +1603,11 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == null + OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary - OCGsNotContainInOrder + OCGsNotContainedInOrder diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 23d16bfd..46d99e52 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -12,7 +12,8 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-2 specification + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, + where 'n' is a single digit number between 0 and 7 header headerOffset @@ -26,8 +27,14 @@ byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + @@ -72,7 +79,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table @@ -119,7 +126,7 @@ character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -179,7 +186,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -579,7 +586,7 @@ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) - Invalid use of TransferFunction key in the Halftone dictionary + Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -661,8 +668,10 @@ that colour space and shall ignore all other colour space specifications. hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 - Colour specification of the JPEG2000 image has specification method. - + Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 + + colrMethod + @@ -681,8 +690,12 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has invalid bit-depth parameters - + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range + ('bpcc' box present = %1, bit depth = %2) + + bpccBoxPresent + bitDepth + @@ -1034,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse @@ -1058,12 +1071,10 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) - - nrCmaps - + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + @@ -1078,10 +1089,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant @@ -1129,7 +1142,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1181,8 +1194,16 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - + Annotation flags are set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + + F + (F & 4) >> 2 + (F & 1) + (F & 2) >> 1 + (F & 32) >> 5 + (F & 256) >> 8 + @@ -1424,7 +1445,7 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid syntax of the extension schema container + Invalid type or prefix of the extension schema container @@ -1557,8 +1578,12 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or EF key - + The file specification dictionary for an embedded file does not contain either F or UF key + (F = %1, UF = %2) + + F + UF + @@ -1601,11 +1626,11 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == null + OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary - OCGsNotContainInOrder + OCGsNotContainedInOrder diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ab163cf7..b477a1fe 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -12,7 +12,8 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-3 specification + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, + where 'n' is a single digit number between 0 and 7 header headerOffset @@ -26,8 +27,14 @@ byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + @@ -72,7 +79,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table @@ -119,7 +126,7 @@ character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -179,7 +186,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -579,7 +586,7 @@ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) - Invalid use of TransferFunction key in the Halftone dictionary + Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -661,8 +668,10 @@ that colour space and shall ignore all other colour space specifications. hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 - Colour specification of the JPEG2000 image has specification method. - + Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 + + colrMethod + @@ -681,8 +690,12 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has invalid bit-depth parameters - + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range + ('bpcc' box present = %1, bit depth = %2) + + bpccBoxPresent + bitDepth + @@ -1034,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse @@ -1058,12 +1071,10 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) - - nrCmaps - + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + @@ -1078,10 +1089,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant @@ -1129,7 +1142,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1196,8 +1209,16 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - + Annotation flags are set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + + F + (F & 4) >> 2 + (F & 1) + (F & 2) >> 1 + (F & 32) >> 5 + (F & 256) >> 8 + @@ -1439,7 +1460,7 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid syntax of the extension schema container + Invalid type or prefix of the extension schema container @@ -1648,8 +1669,12 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or EF key - + The file specification dictionary for an embedded file does not contain either F or UF key + (F = %1, UF = %2) + + F + UF + @@ -1703,11 +1728,11 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == null + OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary - OCGsNotContainInOrder + OCGsNotContainedInOrder diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d33dfe86..a833807e 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -12,7 +12,8 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-3 specification + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, + where 'n' is a single digit number between 0 and 7 header headerOffset @@ -26,8 +27,14 @@ byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + @@ -72,7 +79,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table @@ -119,7 +126,7 @@ character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -179,7 +186,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -579,7 +586,7 @@ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) - Invalid use of TransferFunction key in the Halftone dictionary + Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -661,8 +668,10 @@ that colour space and shall ignore all other colour space specifications. hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 - Colour specification of the JPEG2000 image has specification method. - + Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 + + colrMethod + @@ -681,8 +690,12 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has invalid bit-depth parameters - + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range + ('bpcc' box present = %1, bit depth = %2) + + bpccBoxPresent + bitDepth + @@ -1034,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse @@ -1058,12 +1071,10 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) - - nrCmaps - + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + @@ -1078,10 +1089,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant @@ -1158,8 +1171,16 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - + Annotation flags are set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + + F + (F & 4) >> 2 + (F & 1) + (F & 2) >> 1 + (F & 32) >> 5 + (F & 256) >> 8 + @@ -1401,7 +1422,7 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid syntax of the extension schema container + Invalid type or prefix of the extension schema container @@ -1547,8 +1568,12 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or EF key - + The file specification dictionary for an embedded file does not contain either F or UF key + (F = %1, UF = %2) + + F + UF + @@ -1602,11 +1627,11 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == null + OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary - OCGsNotContainInOrder + OCGsNotContainedInOrder diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 51461b5b..9adc5503 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -12,7 +12,8 @@ where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-3 specification + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, + where 'n' is a single digit number between 0 and 7 header headerOffset @@ -26,8 +27,14 @@ byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + @@ -72,7 +79,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table @@ -119,7 +126,7 @@ character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true - Spacings of keywords 'stream' and 'endstream' do not comply PDF/A specification + Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -179,7 +186,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -579,7 +586,7 @@ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) - Invalid use of TransferFunction key in the Halftone dictionary + Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -661,8 +668,10 @@ that colour space and shall ignore all other colour space specifications. hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 - Colour specification of the JPEG2000 image has specification method. - + Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 + + colrMethod + @@ -681,8 +690,12 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has invalid bit-depth parameters - + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range + ('bpcc' box present = %1, bit depth = %2) + + bpccBoxPresent + bitDepth + @@ -1034,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse @@ -1058,12 +1071,10 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) - - nrCmaps - + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + @@ -1078,10 +1089,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant @@ -1129,7 +1142,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1181,8 +1194,16 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - + Annotation flags are set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + + F + (F & 4) >> 2 + (F & 1) + (F & 2) >> 1 + (F & 32) >> 5 + (F & 256) >> 8 + @@ -1424,7 +1445,7 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid syntax of the extension schema container + Invalid type or prefix of the extension schema container @@ -1570,8 +1591,12 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or EF key - + The file specification dictionary for an embedded file does not contain either F or UF key + (F = %1, UF = %2) + + F + UF + @@ -1625,11 +1650,11 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == null + OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary - OCGsNotContainInOrder + OCGsNotContainedInOrder diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index d7366ae5..9e7fb38c 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -12,7 +12,8 @@ where 'n' is a single digit number between 0 (30h) and 9 (39h) headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-4 specification + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, + where 'n' is a single digit number between 0 and 9 header headerOffset @@ -26,8 +27,14 @@ byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + @@ -94,7 +101,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table @@ -192,7 +199,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -240,7 +247,8 @@ character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. Version == null || /^2\.[0-9]$/.test(Version) - The Version key with value %1 does not comply with the requirements of PDF/A-4 specification. + The Version key with value %1 does not match the pattern 2.n, + where 'n' is a single digit number between 0 and 9. Version @@ -376,8 +384,8 @@ ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) - An ICCBased colour space is used where the profile is a CMYK destination profile and - is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or + the current transparency blending color space @@ -391,8 +399,8 @@ (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' - DeviceRGB colour space is used without RGB output intent profile and - without current transparency RGB blending space + DeviceRGB colour space is used without RGB output intent profile and without current + transparency blending space being Device-independent RGB @@ -405,8 +413,8 @@ OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' - DeviceCMYK colour space is used without CMYK output intent profile and - without current transparency CMYK blending space + DeviceCMYK colour space is used without CMYK output intent profile and without current + transparency blending space being Device-independent CMYK @@ -510,7 +518,7 @@ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) - Invalid use of TransferFunction key in the Halftone dictionary + Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -579,8 +587,10 @@ that colour space and shall ignore all other colour space specifications. hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 - Colour specification of the JPEG2000 image has specification method. - + Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 + + colrMethod + @@ -599,8 +609,12 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has invalid bit-depth parameters - + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range + ('bpcc' box present = %1, bit depth = %2) + + bpccBoxPresent + bitDepth + @@ -970,10 +984,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant @@ -1007,7 +1023,7 @@ zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1017,7 +1033,7 @@ The ActualText entry shall not contain any PUA values. containsPUA == false - The ActualText entry contains any PUA values. + The ActualText entry contains a Private Unicoide Area value @@ -1070,8 +1086,16 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - + Annotation flags are set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + + F + (F & 4) >> 2 + (F & 1) + (F & 2) >> 1 + (F & 32) >> 5 + (F & 256) >> 8 + @@ -1329,8 +1353,12 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or EF key - + The file specification dictionary for an embedded file does not contain either F or UF key + (F = %1, UF = %2) + + F + UF + @@ -1385,11 +1413,11 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == null + OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary - OCGsNotContainInOrder + OCGsNotContainedInOrder diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 7799657f..93bad367 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -12,7 +12,8 @@ where 'n' is a single digit number between 0 (30h) and 9 (39h) headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-4 specification + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, + where 'n' is a single digit number between 0 and 9 header headerOffset @@ -26,8 +27,14 @@ byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + @@ -94,7 +101,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table @@ -206,7 +213,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -254,7 +261,8 @@ character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. Version == null || /^2\.[0-9]$/.test(Version) - The Version key with value %1 does not comply with the requirements of PDF/A-4 specification. + The Version key with value %1 does not match the pattern 2.n, + where 'n' is a single digit number between 0 and 9. Version @@ -390,8 +398,8 @@ ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) - An ICCBased colour space is used where the profile is a CMYK destination profile and - is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or + the current transparency blending color space @@ -405,8 +413,8 @@ (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' - DeviceRGB colour space is used without RGB output intent profile and - without current transparency RGB blending space + DeviceRGB colour space is used without RGB output intent profile and without current + transparency blending space being Device-independent RGB @@ -419,8 +427,8 @@ OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' - DeviceCMYK colour space is used without CMYK output intent profile and - without current transparency CMYK blending space + DeviceCMYK colour space is used without CMYK output intent profile and without current + transparency blending space being Device-independent CMYK @@ -524,7 +532,7 @@ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) - Invalid use of TransferFunction key in the Halftone dictionary + Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -593,8 +601,10 @@ that colour space and shall ignore all other colour space specifications. hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 - Colour specification of the JPEG2000 image has specification method. - + Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 + + colrMethod + @@ -613,8 +623,12 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has invalid bit-depth parameters - + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range + ('bpcc' box present = %1, bit depth = %2) + + bpccBoxPresent + bitDepth + @@ -984,10 +998,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant @@ -1021,7 +1037,7 @@ zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1031,7 +1047,7 @@ The ActualText entry shall not contain any PUA values. containsPUA == false - The ActualText entry contains any PUA values. + The ActualText entry contains a Private Unicoide Area value @@ -1085,8 +1101,16 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - + Annotation flags are set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + + F + (F & 4) >> 2 + (F & 1) + (F & 2) >> 1 + (F & 32) >> 5 + (F & 256) >> 8 + @@ -1348,8 +1372,12 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or EF key - + The file specification dictionary for an embedded file does not contain either F or UF key + (F = %1, UF = %2) + + F + UF + @@ -1394,11 +1422,11 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == null + OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary - OCGsNotContainInOrder + OCGsNotContainedInOrder diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 6b49b0a2..673bcff5 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -12,7 +12,8 @@ where 'n' is a single digit number between 0 (30h) and 9 (39h) headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) - File header %1 starts at byte offset %2 instead of 0 or does not comply with the requirements of PDF/A-4 specification + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, + where 'n' is a single digit number between 0 and 9 header headerOffset @@ -26,8 +27,14 @@ byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not comply PDF/A requirements - + Binary comment in the file header is missing or does not start with 4 bytes with byte values + above 127 (first four bytes = %1, %2, %3, %4) + + headerByte1 + headerByte2 + headerByte3 + headerByte4 + @@ -94,7 +101,7 @@ The xref keyword and the cross-reference subsection header shall be separated by a single EOL marker xrefEOLMarkersComplyPDFA - Spacings after the 'xref' keyword in the cross reference table do not comply PDF/A specification + Extra spacings or missing EOL characters after the 'xref' keyword in the cross reference table @@ -192,7 +199,7 @@ keywords shall each be followed by an EOL marker. spacingCompliesPDFA - Spacings of object number and generation number or keywords 'obj' and 'endobj' do not comply PDF/A specification + Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -240,7 +247,8 @@ character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. Version == null || /^2\.[0-9]$/.test(Version) - The Version key with value %1 does not comply with the requirements of PDF/A-4 specification. + The Version key with value %1 does not match the pattern 2.n, + where 'n' is a single digit number between 0 and 9. Version @@ -376,8 +384,8 @@ ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) - An ICCBased colour space is used where the profile is a CMYK destination profile and - is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or + the current transparency blending color space @@ -391,8 +399,8 @@ (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' - DeviceRGB colour space is used without RGB output intent profile and - without current transparency RGB blending space + DeviceRGB colour space is used without RGB output intent profile and without current + transparency blending space being Device-independent RGB @@ -405,8 +413,8 @@ OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' - DeviceCMYK colour space is used without CMYK output intent profile and - without current transparency CMYK blending space + DeviceCMYK colour space is used without CMYK output intent profile and without current + transparency blending space being Device-independent CMYK @@ -510,7 +518,7 @@ colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) - Invalid use of TransferFunction key in the Halftone dictionary + Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -579,8 +587,10 @@ that colour space and shall ignore all other colour space specifications. hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 - Colour specification of the JPEG2000 image has specification method. - + Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 + + colrMethod + @@ -599,8 +609,12 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has invalid bit-depth parameters - + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range + ('bpcc' box present = %1, bit depth = %2) + + bpccBoxPresent + bitDepth + @@ -970,10 +984,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant @@ -1007,7 +1023,7 @@ zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1017,7 +1033,7 @@ The ActualText entry shall not contain any PUA values. containsPUA == false - The ActualText entry contains any PUA values. + The ActualText entry contains a Private Unicoide Area value @@ -1071,8 +1087,16 @@ If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - One of the annotation flags Hidden, Invisible, ToggleNoView, or NoView is set to 1, or the Print flag is set to 0 - + Annotation flags are set the annotation to be hidden/invisible or non-printable + (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + + F + (F & 4) >> 2 + (F & 1) + (F & 2) >> 1 + (F & 32) >> 5 + (F & 256) >> 8 + @@ -1332,8 +1356,12 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or EF key - + The file specification dictionary for an embedded file does not contain either F or UF key + (F = %1, UF = %2) + + F + UF + @@ -1392,11 +1420,11 @@ If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file. - OCGsNotContainInOrder == null + OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary - OCGsNotContainInOrder + OCGsNotContainedInOrder diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml index f8baface..055da763 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml @@ -13,7 +13,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml index 8ab90572..34f39485 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml @@ -11,12 +11,10 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) - - nrCmaps - + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml index 027bea6d..d7537fa9 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml @@ -22,10 +22,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml index b4014309..086692e7 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml @@ -11,7 +11,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE diff --git a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml index 675bc06f..aa0c93f8 100644 --- a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml +++ b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml @@ -13,7 +13,7 @@ marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 (Alt != null && Alt != '') || ActualText != null - Figure tag alternative or replacement text missing + Figure tag alternative and replacement text missing diff --git a/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml index ba30ec71..0aab44d3 100644 --- a/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml +++ b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml @@ -13,7 +13,7 @@ 14.8.4.5 and shall have Alt or ActualText attributes (Alt != null && Alt != '') || ActualText != null - Formula tag is missing Alt or ActualText attributes + Formula tag is missing Alt and ActualText attributes diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index b3b9ee05..3f7e0030 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -596,7 +596,7 @@ marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 (Alt != null && Alt != '') || ActualText != null - Figure tag alternative or replacement text missing + Figure tag alternative and replacement text missing @@ -669,7 +669,7 @@ 14.8.4.5 and shall have Alt or ActualText attributes (Alt != null && Alt != '') || ActualText != null - Formula tag is missing Alt or ActualText attributes + Formula tag is missing Alt and ActualText attributes @@ -1104,7 +1104,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse @@ -1128,12 +1128,10 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) - - nrCmaps - + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + @@ -1148,10 +1146,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant @@ -1199,7 +1199,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index cd751cff..f303e8dd 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1143,7 +1143,7 @@ marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 (Alt != null && Alt != '') || ActualText != null - Figure tag alternative or replacement text missing + Figure tag alternative and replacement text missing @@ -1216,7 +1216,7 @@ 14.8.4.5 and shall have Alt or ActualText attributes (Alt != null && Alt != '') || ActualText != null - Formula tag is missing Alt or ActualText attributes + Formula tag is missing Alt and ActualText attributes @@ -1639,7 +1639,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CID Font subset does not define CIDSet entry in its Descriptor dictionary + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse @@ -1663,12 +1663,10 @@ For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. - isSymbolic == true || nrCmaps > 1 || (nrCmaps > 0 && cmap30Present == false) + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - The embedded font program for a non-symbolic TrueType font contains %1 cmap subtable(s) - - nrCmaps - + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + @@ -1680,10 +1678,12 @@ isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font has encoding %1 different from MacRomanEncoding or WinAnsiEncoding, or - the glyphs in the Differences array can not be mapped to the embedded font glyphs via the Adobe Glyph List + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding + containsDifferences + differencesAreUnicodeCompliant @@ -1731,7 +1731,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE From 48606921de8967907db5e7ade11dae1ec926967c Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 19 Jul 2022 15:16:36 +0300 Subject: [PATCH 422/557] Fix error messages --- .../6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml | 4 +++- .../verapdf-profile-6-2-11-7-t02.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- .../verapdf-profile-7-21-4-2-t02.xml | 2 +- PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml | 2 +- .../verapdf-profile-7-7-t01.xml | 2 +- PDF_UA/PDFUA-1.xml | 6 +++--- PDF_UA/WCAG-21-Complete.xml | 6 +++--- 13 files changed, 19 insertions(+), 17 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml index fd2881e0..221f08b4 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml @@ -11,8 +11,10 @@ The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has invalid bit-depth parameters + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range + ('bpcc' box present = %1, bit depth = %2) + bpccBoxPresent bitDepth diff --git a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml index 5e654495..9ba13c6b 100644 --- a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml +++ b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml @@ -11,7 +11,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index db054c70..8b45ae1f 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1047,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 9056a6bf..6f24db7c 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1047,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 46d99e52..d29296dc 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1047,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index b477a1fe..09ae8087 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1047,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index a833807e..e4256416 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1047,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 9adc5503..932a0a0a 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1047,7 +1047,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml index 055da763..b968ec30 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml @@ -13,7 +13,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml index aa0c93f8..17f71264 100644 --- a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml +++ b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml @@ -13,7 +13,7 @@ marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 (Alt != null && Alt != '') || ActualText != null - Figure tag alternative and replacement text missing + Figure structure element neither has an alternate description nor a replacement text diff --git a/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml index 0aab44d3..fba14f38 100644 --- a/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml +++ b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml @@ -13,7 +13,7 @@ 14.8.4.5 and shall have Alt or ActualText attributes (Alt != null && Alt != '') || ActualText != null - Formula tag is missing Alt and ActualText attributes + Formula structure element neither has an alternate description nor a replacement text diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 3f7e0030..f2958250 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -596,7 +596,7 @@ marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 (Alt != null && Alt != '') || ActualText != null - Figure tag alternative and replacement text missing + Figure structure element neither has an alternate description nor a replacement text @@ -669,7 +669,7 @@ 14.8.4.5 and shall have Alt or ActualText attributes (Alt != null && Alt != '') || ActualText != null - Formula tag is missing Alt and ActualText attributes + Formula structure element neither has an alternate description nor a replacement text @@ -1104,7 +1104,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index f303e8dd..bd023101 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1143,7 +1143,7 @@ marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 (Alt != null && Alt != '') || ActualText != null - Figure tag alternative and replacement text missing + Figure structure element neither has an alternate description nor a replacement text @@ -1216,7 +1216,7 @@ 14.8.4.5 and shall have Alt or ActualText attributes (Alt != null && Alt != '') || ActualText != null - Formula tag is missing Alt and ActualText attributes + Formula structure element neither has an alternate description nor a replacement text @@ -1639,7 +1639,7 @@ regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subse + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset From bb2bd21ad392e97c2e161b99e1a776cf5ec51299 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 2 Aug 2022 16:33:30 +0300 Subject: [PATCH 423/557] WCAG validation. Add rule about TOCI --- PDF_UA/WCAG-21-Complete.xml | 12 ++++++++---- PDF_UA/WCAG-21-Dev.xml | 13 +++++++++++++ PDF_UA/WCAG-21.xml | 12 ++++++++---- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index bd023101..9941a343 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -11,8 +11,10 @@ Text should not contain repeated non space characters isNonSpace == false || numberOfRepeatedCharacters < 5 - Text contains repeated non space characters - + Text contains %1 repeated non space characters + + numberOfRepeatedCharacters + @@ -21,8 +23,10 @@ Text should not contain repeated space characters isNonSpace == true || numberOfRepeatedCharacters < 3 - Text contains repeated space characters - + Text contains %1 repeated space characters + + numberOfRepeatedCharacters + diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 710e4837..f8394529 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -298,6 +298,19 @@ + + + The structure type and attributes of a TOCI shall be semantically appropriate. + (correctType == 'TOCI' && correctSemanticScore >= 0.75) + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + +
diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 3a8020b4..8b8476c6 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -11,8 +11,10 @@ Text should not contain repeated non space characters isNonSpace == false || numberOfRepeatedCharacters < 5 - Text contains repeated non space characters - + Text contains %1 repeated non space characters + + numberOfRepeatedCharacters + @@ -21,8 +23,10 @@ Text should not contain repeated space characters isNonSpace == true || numberOfRepeatedCharacters < 3 - Text contains repeated space characters - + Text contains %1 repeated space characters + + numberOfRepeatedCharacters + From 62ac075bbb21da1b1e7b8cf22fa306869bcb269b Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 4 Aug 2022 12:06:44 +0300 Subject: [PATCH 424/557] WCAG validation. Add rule about TOCI --- PDF_UA/WCAG-21-Dev.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index f8394529..d594749f 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -311,6 +311,19 @@ + + + The structure type and attributes of a TOCI shall be semantically appropriate. + correctType != 'TOCI' || standardType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + +
From a5ebc5af90077aaab0a518c3f1674aca9235d9ef Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Fri, 5 Aug 2022 13:24:15 +0300 Subject: [PATCH 425/557] Added slack notification for profiles update --- .github/workflows/update-PDFA-profiles-workflow.yml | 11 +++++++++++ .github/workflows/update-PDFUA-profile-workflow.yml | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/.github/workflows/update-PDFA-profiles-workflow.yml b/.github/workflows/update-PDFA-profiles-workflow.yml index ed07db7c..b2395e95 100644 --- a/.github/workflows/update-PDFA-profiles-workflow.yml +++ b/.github/workflows/update-PDFA-profiles-workflow.yml @@ -30,6 +30,7 @@ jobs: uses: actions/setup-java@v1 with: java-version: 1.11 + - name: Commit to veraPDF-library uses: drud/action-cross-commit@master with: @@ -41,3 +42,13 @@ jobs: git-commit-message: ${{ github.event.head_commit.message }} git-commit-sign-off: "false" excludes: 1a:1b:2a:2b:2u:3a:3b:3u:4:4e:4f:PDFUA-1.xml:validationProfile.xsd + + - name: Notify slack if library wasn't updated + if: failure() + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }} + uses: voxmedia/github-action-slack-notify-build@v1 + with: + channel_id: C03E3JJGLQL + status: FAILED + color: danger diff --git a/.github/workflows/update-PDFUA-profile-workflow.yml b/.github/workflows/update-PDFUA-profile-workflow.yml index a0889585..daf64bc2 100644 --- a/.github/workflows/update-PDFUA-profile-workflow.yml +++ b/.github/workflows/update-PDFUA-profile-workflow.yml @@ -19,6 +19,7 @@ jobs: uses: actions/setup-java@v1 with: java-version: 1.11 + - name: Commit to veraPDF-library uses: drud/action-cross-commit@master with: @@ -29,3 +30,13 @@ jobs: git-user: "Git User" git-commit-message: ${{ github.event.head_commit.message }} git-commit-sign-off: "false" + + - name: Notify slack if library wasn't updated + if: failure() + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }} + uses: voxmedia/github-action-slack-notify-build@v1 + with: + channel_id: C03E3JJGLQL + status: FAILED + color: danger From e7171e137760e6ecade575eef42fd44ca896c41f Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 9 Aug 2022 19:40:04 +0300 Subject: [PATCH 426/557] WCAG validation. Add different rules for TOCI --- PDF_UA/WCAG-21-Dev.xml | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index d594749f..49d6a689 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -324,6 +324,56 @@ + + + TOCI should have a text + errorCodes.split(',').filter(elem => elem == 1000).length == 0 + + TOCI doesn't have a text + + + + + + + TOCI should have a destination + errorCodes.split(',').filter(elem => elem == 1001).length == 0 + + TOCI doesn't have a destination + + + + + + + TOCI should have a page label that coincides with a destination page number + errorCodes.split(',').filter(elem => elem == 1002).length == 0 + + TOCI has a wrong page label + + + + + + + TOCI should have a right alignment that matches a right alignment of other TOCIs + errorCodes.split(',').filter(elem => elem == 1003).length == 0 + + TOCI has a bad right alignment + + + + + + + TOCI text should be placed on a destination page + errorCodes.split(',').filter(elem => elem == 1005).length == 0 + + TOCI text not found on a destination page + + + + From 11ae0cad5a6e30a69d6adec15a9e46c12fd06405 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 30 Aug 2022 13:10:32 +0300 Subject: [PATCH 427/557] WCAG validation. Add rules about TOCI --- PDF_UA/WCAG-21-Complete.xml | 64 +++++++++++++++++++++++++++++++++++++ PDF_UA/WCAG-21.xml | 64 +++++++++++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 9941a343..825d801c 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -558,6 +558,70 @@ + + + The structure type and attributes of a TOCI shall be semantically appropriate. + correctType != 'TOCI' || standardType == 'TOCI' + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + TOCI shall contain one or more text lines + errorCodes.split(',').filter(elem => elem == 1000).length == 0 + + TOCI doesn't have a text + + + + + + + TOCI should contain a link to the destination page + errorCodes.split(',').filter(elem => elem == 1001).length == 0 + + TOCI doesn't have a destination + + + + + + + TOCI page label shall match the destination page + errorCodes.split(',').filter(elem => elem == 1002).length == 0 + + TOCI has a wrong page label + + + + + + + TOCI shall have a right alignment that matches a right alignment of other TOCIs + errorCodes.split(',').filter(elem => elem == 1003).length == 0 + + TOCI has a bad right alignment + + + + + + + TOCI text shall match the corresponding header on the destination page + errorCodes.split(',').filter(elem => elem == 1005).length == 0 + + TOCI text not found on a destination page + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 8b8476c6..30d74a7d 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -558,6 +558,70 @@ + + + The structure type and attributes of a TOCI shall be semantically appropriate. + correctType != 'TOCI' || standardType == 'TOCI' + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + TOCI shall contain one or more text lines + errorCodes.split(',').filter(elem => elem == 1000).length == 0 + + TOCI doesn't have a text + + + + + + + TOCI should contain a link to the destination page + errorCodes.split(',').filter(elem => elem == 1001).length == 0 + + TOCI doesn't have a destination + + + + + + + TOCI page label shall match the destination page + errorCodes.split(',').filter(elem => elem == 1002).length == 0 + + TOCI has a wrong page label + + + + + + + TOCI shall have a right alignment that matches a right alignment of other TOCIs + errorCodes.split(',').filter(elem => elem == 1003).length == 0 + + TOCI has a bad right alignment + + + + + + + TOCI text shall match the corresponding header on the destination page + errorCodes.split(',').filter(elem => elem == 1005).length == 0 + + TOCI text not found on a destination page + + + + From 895383674cb42773ba7618fbcf73fff1f9c452b5 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 2 Sep 2022 17:21:22 +0300 Subject: [PATCH 428/557] PDF/A-1 validation. Fix rule 6.5.3-3 --- .../verapdf-profile-6-5-3-t03.xml | 6 +++--- PDF_A/PDFA-1A.xml | 6 +++--- PDF_A/PDFA-1B.xml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml index a0c2171e..760cc4b9 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml @@ -13,10 +13,10 @@ DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - Annotation's color (C = %1) or interior color (IC = %2) is used without specifying RGB-based destination output profile + Annotation's color (C size = %1) or interior color (IC size = %2) is used without specifying RGB-based destination output profile - C - IC + C_size + IC_size diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 94f6fa11..a796350d 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1005,10 +1005,10 @@ DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - Annotation's color (C = %1) or interior color (IC = %2) is used without specifying RGB-based destination output profile + Annotation's color (C size = %1) or interior color (IC size = %2) is used without specifying RGB-based destination output profile - C - IC + C_size + IC_size diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index e24f7321..d376adc4 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -991,10 +991,10 @@ DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " - Annotation's color (C = %1) or interior color (IC = %2) is used without specifying RGB-based destination output profile + Annotation's color (C size = %1) or interior color (IC size = %2) is used without specifying RGB-based destination output profile - C - IC + C_size + IC_size From 87e34b3f18f89d488336d656e16cb1b6f41f6623 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 5 Sep 2022 20:02:54 +0300 Subject: [PATCH 429/557] WCAG validation. Add rules about TOC and List --- PDF_UA/WCAG-21-Complete.xml | 28 ++++++++++++++++++++++++++++ PDF_UA/WCAG-21.xml | 28 ++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 825d801c..f4a93581 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -622,6 +622,34 @@ + + + This list and neighbor list(s) should be tagged as one list + errorCodes.split(',').filter(elem => elem == 1200).length == 0 + + This list and neighbor list(s) should be tagged as one list + + + + structureID + + + + + + + This TOC and neighbor TOC(s) should be tagged as one TOC + errorCodes.split(',').filter(elem => elem == 1006).length == 0 + + This TOC and neighbor TOC(s) should be tagged as one TOC + + + + structureID + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 30d74a7d..357a1ec7 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -622,6 +622,34 @@ + + + This list and neighbor list(s) should be tagged as one list + errorCodes.split(',').filter(elem => elem == 1200).length == 0 + + This list and neighbor list(s) should be tagged as one list + + + + structureID + + + + + + + This TOC and neighbor TOC(s) should be tagged as one TOC + errorCodes.split(',').filter(elem => elem == 1006).length == 0 + + This TOC and neighbor TOC(s) should be tagged as one TOC + + + + structureID + + + + From ff7af9444d626f78b99419b1d819fe51a68f15a7 Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Thu, 8 Sep 2022 13:25:27 +0300 Subject: [PATCH 430/557] WCAG validation. Added rule about background color --- PDF_UA/WCAG-21-Dev.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 49d6a689..f0556daf 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -6,6 +6,16 @@
+ + + If text has a different background color, it shall be tagged as Span + hasSpecialBackground == false + + Text has a different background color and not tagged as Span + + + + The structure type and attributes of a paragraph shall be semantically appropriate. From b50a6c18247a2bf830166634450f1fb98873b4e0 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 9 Sep 2022 11:57:12 +0300 Subject: [PATCH 431/557] WCAG validation(DEV). Add table checking rules --- PDF_UA/WCAG-21-Dev.xml | 108 ++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 61 deletions(-) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 49d6a689..39ad52c7 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -172,10 +172,11 @@ The structure type and attributes of a list shall be semantically appropriate. (correctType == 'L' && correctSemanticScore >= 0.75) - score = %1, correct type = %2 + score = %1, correct type = %2, id = %3 correctSemanticScore correctType + structureID @@ -185,10 +186,11 @@ The structure type and attributes of a list item shall be semantically appropriate. (correctType == 'LI' && correctSemanticScore >= 0.75) - score = %1, correct type = %2 + score = %1, correct type = %2, id = %3 correctSemanticScore correctType + structureID @@ -198,10 +200,11 @@ The structure type and attributes of a list label shall be semantically appropriate. (correctType == 'Lbl' && correctSemanticScore >= 0.75) - score = %1, correct type = %2 + score = %1, correct type = %2, id = %3 correctSemanticScore correctType + structureID @@ -211,10 +214,11 @@ The structure type and attributes of a list body shall be semantically appropriate. (correctType == 'LBody' && correctSemanticScore >= 0.75) - score = %1, correct type = %2 + score = %1, correct type = %2, id = %3 correctSemanticScore correctType + structureID @@ -227,10 +231,11 @@ correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') - score = %1, correct type = %2 + score = %1, correct type = %2, id = %3 correctSemanticScore correctType + structureID @@ -240,7 +245,7 @@ List item does not contain a label correctType != 'LI' - score = %1, correct type = %2, structure id = %3 + score = %1, correct type = %2, id = %3 correctSemanticScore correctType @@ -254,10 +259,11 @@ The structure type and attributes of table headers shall be semantically appropriate. (correctType == 'THead' && correctSemanticScore >= 0.75) - score = %1, correct type = %2 + score = %1, correct type = %2, id = %3 correctSemanticScore correctType + structureID @@ -267,10 +273,11 @@ The structure type and attributes of a table body shall be semantically appropriate. (correctType == 'TBody' && correctSemanticScore >= 0.75) - score = %1, correct type = %2 + score = %1, correct type = %2, id = %3 correctSemanticScore correctType + structureID @@ -280,10 +287,11 @@ The structure type and attributes of a table footer shall be semantically appropriate. (correctType == 'TFoot' && correctSemanticScore >= 0.75) - score = %1, correct type = %2 + score = %1, correct type = %2, id = %3 correctSemanticScore correctType + structureID @@ -298,82 +306,60 @@ - - - The structure type and attributes of a TOCI shall be semantically appropriate. - (correctType == 'TOCI' && correctSemanticScore >= 0.75) - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a TOCI shall be semantically appropriate. - correctType != 'TOCI' || standardType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - TOCI should have a text - errorCodes.split(',').filter(elem => elem == 1000).length == 0 - - TOCI doesn't have a text - - - - - + - TOCI should have a destination - errorCodes.split(',').filter(elem => elem == 1001).length == 0 + This cell is below than some cells in the next row + errorCodes.split(',').filter(elem => elem == 1100).length == 0 - TOCI doesn't have a destination + This cell is below than some cells in the next row - + - TOCI should have a page label that coincides with a destination page number - errorCodes.split(',').filter(elem => elem == 1002).length == 0 + This cell is above than some cells in the previous row + errorCodes.split(',').filter(elem => elem == 1101).length == 0 - TOCI has a wrong page label + This cell is above than some cells in the previous row - + - TOCI should have a right alignment that matches a right alignment of other TOCIs - errorCodes.split(',').filter(elem => elem == 1003).length == 0 + This cell is to the right of some cells in the next column + errorCodes.split(',').filter(elem => elem == 1102).length == 0 - TOCI has a bad right alignment + This cell is to the right of some cells in the next column - + - TOCI text should be placed on a destination page - errorCodes.split(',').filter(elem => elem == 1005).length == 0 + This cell is to the left of some cells in the previous column + errorCodes.split(',').filter(elem => elem == 1103).length == 0 - TOCI text not found on a destination page + This cell is to the left of some cells in the previous column + + + This structure element should be a table cell instead of a table header + correctType != 'TD' + + score = %1, correct type = %2, id = %3 + + correctSemanticScore + correctType + structureID + + + +
From 5f66b7902863277381a7d7db174635a8c28150cc Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Mon, 12 Sep 2022 11:57:24 +0300 Subject: [PATCH 432/557] Edited rule number for special background --- PDF_UA/WCAG-21-Dev.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index f0556daf..7f232fdd 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -7,7 +7,7 @@ - + If text has a different background color, it shall be tagged as Span hasSpecialBackground == false From e6fe2cebe4b610a0f1bba6eac82348eb3578d986 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 15 Sep 2022 23:27:11 +0300 Subject: [PATCH 433/557] WCAG validation. Add rule about list --- PDF_UA/WCAG-21-Complete.xml | 9 +++++++-- PDF_UA/WCAG-21-Dev.xml | 14 ++++++++++++++ PDF_UA/WCAG-21.xml | 9 +++++++-- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index f4a93581..c6bdf04a 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -173,7 +173,11 @@ colSpan == 1 && rowSpan == 1 Table has merged cells - + + + + structureID + @@ -307,7 +311,8 @@ Missing table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || + ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) || (standardType == 'TOC' || diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 39ad52c7..6512a5a5 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -360,6 +360,20 @@ + + + This content should be tagged as a list item + false + + This content should be tagged as a list item + + + + structureID + + + +
diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 357a1ec7..410ae9ad 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -173,7 +173,11 @@ colSpan == 1 && rowSpan == 1 Table has merged cells - + + + + structureID + @@ -307,7 +311,8 @@ Missing table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || + ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) || (standardType == 'TOC' || From 80ac3ace8f91b2fd5d4764642a46de9e2f4a6a0c Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 19 Sep 2022 13:43:10 +0300 Subject: [PATCH 434/557] WCAG validation(DEV). Add rules about table visual representation --- PDF_UA/WCAG-21-Dev.xml | 56 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 6512a5a5..7464c405 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -374,6 +374,62 @@ + + + The number of rows of this table does not match the number of rows of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1104).length == 0 + + The number of rows of this table does not match the number of rows of the visual representation of this table + + + + structureID + + + + + + + The number of columns of this table does not match the number of columns of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1105).length == 0 + + The number of columns of this table does not match the number of columns of the visual representation of this table + + + + structureID + + + + + + + The row span of this table cell does not match the row span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1106).length == 0 + + The row span of this table cell does not match the row span of the visual representation of this table cell + + + + structureID + + + + + + + The column span of this table cell does not match the column span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1107).length == 0 + + The column span of this table cell does not match the column span of the visual representation of this table cell + + + + structureID + + + + From c9e5dfee044286bb02c436fc857504eab0eb39da Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 21 Sep 2022 15:45:37 +0300 Subject: [PATCH 435/557] WCAG validation. Move rule from DEV profile --- PDF_UA/WCAG-21-Complete.xml | 118 +++++++++++++++++++++--------------- PDF_UA/WCAG-21-Dev.xml | 70 --------------------- PDF_UA/WCAG-21.xml | 118 +++++++++++++++++++++--------------- 3 files changed, 140 insertions(+), 166 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index c6bdf04a..5fb088bb 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -260,54 +260,6 @@ - - - The structure type and attributes of a table row shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a table header cell shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || - correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a table cell shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - Missing table element @@ -655,6 +607,76 @@ + + + The number of rows of this table does not match the number of rows of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1104).length == 0 + + The number of rows of this table does not match the number of rows of the visual representation of this table + + + + structureID + + + + + + + The number of columns of this table does not match the number of columns of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1105).length == 0 + + The number of columns of this table does not match the number of columns of the visual representation of this table + + + + structureID + + + + + + + The row span of this table cell does not match the row span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1106).length == 0 + + The row span of this table cell does not match the row span of the visual representation of this table cell + + + + structureID + + + + + + + The column span of this table cell does not match the column span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1107).length == 0 + + The column span of this table cell does not match the column span of the visual representation of this table cell + + + + structureID + + + + + + + This content should be tagged as a list item + false + + This content should be tagged as a list item + + + + structureID + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 7464c405..39ad52c7 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -360,76 +360,6 @@ - - - This content should be tagged as a list item - false - - This content should be tagged as a list item - - - - structureID - - - - - - - The number of rows of this table does not match the number of rows of the visual representation of this table - errorCodes.split(',').filter(elem => elem == 1104).length == 0 - - The number of rows of this table does not match the number of rows of the visual representation of this table - - - - structureID - - - - - - - The number of columns of this table does not match the number of columns of the visual representation of this table - errorCodes.split(',').filter(elem => elem == 1105).length == 0 - - The number of columns of this table does not match the number of columns of the visual representation of this table - - - - structureID - - - - - - - The row span of this table cell does not match the row span of the visual representation of this table cell - errorCodes.split(',').filter(elem => elem == 1106).length == 0 - - The row span of this table cell does not match the row span of the visual representation of this table cell - - - - structureID - - - - - - - The column span of this table cell does not match the column span of the visual representation of this table cell - errorCodes.split(',').filter(elem => elem == 1107).length == 0 - - The column span of this table cell does not match the column span of the visual representation of this table cell - - - - structureID - - - - diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 410ae9ad..b80724d9 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -260,54 +260,6 @@ - - - The structure type and attributes of a table row shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'TR' && correctSemanticScore >= 0.75) || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a table header cell shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'TH' && correctSemanticScore >= 0.75) || correctType == 'TD' || - correctType == 'TR' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a table cell shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'TD' && correctSemanticScore >= 0.75) || correctType == 'TR' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - Missing table element @@ -655,6 +607,76 @@ + + + The number of rows of this table does not match the number of rows of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1104).length == 0 + + The number of rows of this table does not match the number of rows of the visual representation of this table + + + + structureID + + + + + + + The number of columns of this table does not match the number of columns of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1105).length == 0 + + The number of columns of this table does not match the number of columns of the visual representation of this table + + + + structureID + + + + + + + The row span of this table cell does not match the row span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1106).length == 0 + + The row span of this table cell does not match the row span of the visual representation of this table cell + + + + structureID + + + + + + + The column span of this table cell does not match the column span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1107).length == 0 + + The column span of this table cell does not match the column span of the visual representation of this table cell + + + + structureID + + + + + + + This content should be tagged as a list item + false + + This content should be tagged as a list item + + + + structureID + + + + From 0ecfa9f63127378aa9eedc0d7b7147301b130e17 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 30 Sep 2022 14:30:27 +0300 Subject: [PATCH 436/557] WCAG validation. Move rule about table from DEV profile --- PDF_UA/WCAG-21-Complete.xml | 70 ++++++++++++++++++++++++++++--------- PDF_UA/WCAG-21.xml | 70 ++++++++++++++++++++++++++++--------- 2 files changed, 108 insertions(+), 32 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 5fb088bb..243d0ce1 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -218,22 +218,6 @@ - - - The structure type and attributes of a table shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'TR' || correctType == 'L' || correctType == 'LI' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - Incorrect use of a heading @@ -677,6 +661,60 @@ + + + This cell is below than some cells in the next row + errorCodes.split(',').filter(elem => elem == 1100).length == 0 + + This cell is below than some cells in the next row + + + + + + + This cell is above than some cells in the previous row + errorCodes.split(',').filter(elem => elem == 1101).length == 0 + + This cell is above than some cells in the previous row + + + + + + + This cell is to the right of some cells in the next column + errorCodes.split(',').filter(elem => elem == 1102).length == 0 + + This cell is to the right of some cells in the next column + + + + + + + This cell is to the left of some cells in the previous column + errorCodes.split(',').filter(elem => elem == 1103).length == 0 + + This cell is to the left of some cells in the previous column + + + + + + + This structure element should be a table cell instead of a table header + correctType != 'TD' + + score = %1, correct type = %2, id = %3 + + correctSemanticScore + correctType + structureID + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index b80724d9..8152be9b 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -218,22 +218,6 @@ - - - The structure type and attributes of a table shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'Table' && correctSemanticScore >= 0.75) || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'TR' || correctType == 'L' || correctType == 'LI' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - Incorrect use of a heading @@ -677,6 +661,60 @@ + + + This cell is below than some cells in the next row + errorCodes.split(',').filter(elem => elem == 1100).length == 0 + + This cell is below than some cells in the next row + + + + + + + This cell is above than some cells in the previous row + errorCodes.split(',').filter(elem => elem == 1101).length == 0 + + This cell is above than some cells in the previous row + + + + + + + This cell is to the right of some cells in the next column + errorCodes.split(',').filter(elem => elem == 1102).length == 0 + + This cell is to the right of some cells in the next column + + + + + + + This cell is to the left of some cells in the previous column + errorCodes.split(',').filter(elem => elem == 1103).length == 0 + + This cell is to the left of some cells in the previous column + + + + + + + This structure element should be a table cell instead of a table header + correctType != 'TD' + + score = %1, correct type = %2, id = %3 + + correctSemanticScore + correctType + structureID + + + + From 89cbb61dd9cd0035c08a065dcfabe74b06876d6c Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 3 Oct 2022 12:51:50 +0300 Subject: [PATCH 437/557] Fix rules about non standard structure type --- .../verapdf-profile-6-8-3-t02.xml | 5 ++-- .../verapdf-profile-6-8-3-t03.xml | 25 +++++++++++++++++++ .../verapdf-profile-6-7-3-t02.xml | 5 ++-- .../verapdf-profile-6-7-3-t03.xml | 25 +++++++++++++++++++ PDF_A/PDFA-1A.xml | 17 +++++++++++-- PDF_A/PDFA-2A.xml | 19 +++++++++++--- PDF_A/PDFA-3A.xml | 19 +++++++++++--- .../1/7.1 General/verapdf-profile-7-1-t05.xml | 5 ++-- PDF_UA/PDFUA-1.xml | 5 ++-- PDF_UA/WCAG-21-Complete.xml | 7 +++--- 10 files changed, 108 insertions(+), 24 deletions(-) create mode 100644 PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml create mode 100644 PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml index add86d3d..b5456417 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml @@ -11,10 +11,9 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. - false + circularMappingExist == true - Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this - structure type is detected + Non-standard structure type %1 is not mapped to a standard type valueS diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml new file mode 100644 index 00000000..911e25a7 --- /dev/null +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-1:2005 - 6.8.3 Artifacts - Circular mapping + A circular mapping shall not exist. +
+ + + + + A circular mapping shall not exist. + circularMappingExist != true + + A circular mapping exists for %1 structure type + + valueS + + + + + + + + +
diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml index 2001fe81..35026286 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml @@ -11,10 +11,9 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. - false + circularMappingExist == true - Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this - structure type is detected + Non-standard structure type %1 is not mapped to a standard type valueS diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml new file mode 100644 index 00000000..c45c9d7d --- /dev/null +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.7.3 Artefacts - Circular mapping + A circular mapping shall not exist. +
+ + + + + A circular mapping shall not exist. + circularMappingExist != true + + A circular mapping exists for %1 structure type + + valueS + + + + + + + + +
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index a796350d..7f06861b 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1343,10 +1343,23 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. + circularMappingExist == true + + Non-standard structure type %1 is not mapped to a standard type + + valueS + + + + + + + + + A circular mapping shall not exist false - Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this - structure type is detected + A circular mapping exists for %1 structure type valueS diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 8b45ae1f..b3797d3a 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1621,10 +1621,23 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. - false + circularMappingExist == true + + Non-standard structure type %1 is not mapped to a standard type + + valueS + + + + + + + + + A circular mapping shall not exist. + circularMappingExist != true - Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this - structure type is detected + A circular mapping exists for %1 structure type valueS diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 09ae8087..7cba5b4a 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1621,10 +1621,23 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. - false + circularMappingExist == true + + Non-standard structure type %1 is not mapped to a standard type + + valueS + + + + + + + + + A circular mapping shall not exist. + circularMappingExist != true - Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this - structure type is detected + A circular mapping exists for %1 structure type valueS diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml index 24a8e516..c0d3ccc5 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml @@ -15,10 +15,9 @@ as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type. - false + circularMappingExist == true - Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this - structure type is detected + Non-standard structure type %1 is not mapped to a standard type valueS diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index f2958250..451084c3 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -80,10 +80,9 @@ as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type. - false + circularMappingExist == true - Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this - structure type is detected + Non-standard structure type %1 is not mapped to a standard type valueS diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 243d0ce1..3a592262 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -783,16 +783,15 @@
- + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type. - false + circularMappingExist == true - Non-standard structure type %1 is not mapped to a standard type, or a circular mapping for this - structure type is detected + Non-standard structure type %1 is not mapped to a standard type valueS From 08c39028e3a7e757a22374e40cf466ab0d3116e0 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 3 Oct 2022 16:40:55 +0300 Subject: [PATCH 438/557] PDF/A validation. Fix rules number --- .../6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml | 2 +- .../6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml index 911e25a7..94faa815 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml @@ -7,7 +7,7 @@ - + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml index c45c9d7d..546dbf01 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml @@ -7,7 +7,7 @@ - + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 7f06861b..90cd3222 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1355,7 +1355,7 @@
- + A circular mapping shall not exist false diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index b3797d3a..222007ff 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1633,7 +1633,7 @@
- + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 7cba5b4a..80f38b8b 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1633,7 +1633,7 @@
- + A circular mapping shall not exist. circularMappingExist != true From ddfb71fea5006b0803eb37acdbde9dc7fac99668 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 4 Oct 2022 13:29:22 +0300 Subject: [PATCH 439/557] WCAG validation. Add structure id to PDF/UA rules --- PDF_UA/WCAG-21-Complete.xml | 94 ++++++++++++++++++++++++++++++++----- PDF_UA/WCAG-21.xml | 24 ++++++++-- 2 files changed, 103 insertions(+), 15 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 3a592262..d62291d6 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -667,7 +667,11 @@ errorCodes.split(',').filter(elem => elem == 1100).length == 0 This cell is below than some cells in the next row - + + + + structureID + @@ -677,7 +681,11 @@ errorCodes.split(',').filter(elem => elem == 1101).length == 0 This cell is above than some cells in the previous row - + + + + structureID + @@ -687,7 +695,11 @@ errorCodes.split(',').filter(elem => elem == 1102).length == 0 This cell is to the right of some cells in the next column - + + + + structureID + @@ -697,7 +709,11 @@ errorCodes.split(',').filter(elem => elem == 1103).length == 0 This cell is to the left of some cells in the previous column - + + + + structureID + @@ -886,7 +902,11 @@ Table element contains more than one Caption element or Table element contains a Caption element not as its first or last kid or Table element contains not a TR, THead, TBody, TFoot or Caption elements - + + + + structureID + @@ -900,6 +920,8 @@ TR element contained in %1 instead of Table, THead, TBody or TFoot element parentStandardType + + structureID @@ -914,6 +936,8 @@ THead element contained in %1 instead of Table element parentStandardType + + structureID @@ -928,6 +952,8 @@ TBody element contained in %1 instead of Table element parentStandardType + + structureID @@ -942,6 +968,8 @@ TFoot element contained in %1 instead of Table element parentStandardType + + structureID @@ -956,6 +984,8 @@ TH element contained in %1 instead of TR element parentStandardType + + structureID @@ -970,6 +1000,8 @@ TD element contained in %1 instead of TR element parentStandardType + + structureID @@ -984,6 +1016,8 @@ TR element contains %1 element(s) instead of TH or TD kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() + + structureID @@ -996,7 +1030,11 @@ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 Table element contains more than one THead kid - + + + + structureID + @@ -1008,7 +1046,11 @@ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 Table element contains more than one TFoot kid - + + + + structureID + @@ -1021,7 +1063,11 @@ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains TFoot kid, but not contains TBody kids - + + + + structureID + @@ -1034,7 +1080,11 @@ kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains THead kid, but not contains TBody kids - + + + + structureID + @@ -1061,6 +1111,8 @@ LI element contained in %1 instead of L element parentStandardType + + structureID @@ -1075,6 +1127,8 @@ LBody element contained in %1 instead of LI element parentStandardType + + structureID @@ -1088,7 +1142,11 @@ L element contains more than one Caption element or L element contains a Caption element not as its first kid or L element contains not a L, LI or Caption elements - + + + + structureID + @@ -1102,6 +1160,8 @@ LI element contains %1 element(s) instead of Lbl or LBody kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() + + structureID @@ -1167,6 +1227,8 @@ TOCI element contained in %1 instead of TOC element parentStandardType + + structureID @@ -1182,7 +1244,11 @@ TOC element contains more than one Caption element or TOC element contains a Caption element not as its first kid or TOC element contains not a TOC, TOCI or Caption elements - + + + + structureID + @@ -1263,6 +1329,8 @@ THead element contains %1 element(s) instead of TR kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + structureID @@ -1277,6 +1345,8 @@ TBody element contains %1 element(s) instead of TR kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + structureID @@ -1291,6 +1361,8 @@ TFoot element contains %1 element(s) instead of TR kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + structureID diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 8152be9b..a0680f52 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -667,7 +667,11 @@ errorCodes.split(',').filter(elem => elem == 1100).length == 0 This cell is below than some cells in the next row - + + + + structureID + @@ -677,7 +681,11 @@ errorCodes.split(',').filter(elem => elem == 1101).length == 0 This cell is above than some cells in the previous row - + + + + structureID + @@ -687,7 +695,11 @@ errorCodes.split(',').filter(elem => elem == 1102).length == 0 This cell is to the right of some cells in the next column - + + + + structureID + @@ -697,7 +709,11 @@ errorCodes.split(',').filter(elem => elem == 1103).length == 0 This cell is to the left of some cells in the previous column - + + + + structureID + From bc1ce1ee719d188bcedc468492e84fdd803d7c98 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 7 Oct 2022 13:24:38 +0300 Subject: [PATCH 440/557] PDF/A validation. Fix rules 6.7.3-3, 6.8.3-3 --- .../6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml | 2 +- .../6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml index 94faa815..588d831f 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml @@ -6,7 +6,7 @@
- + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml index 546dbf01..255719de 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml @@ -6,7 +6,7 @@
- + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 90cd3222..2346892d 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1354,7 +1354,7 @@ - + A circular mapping shall not exist false diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 222007ff..6bae27ec 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1632,7 +1632,7 @@ - + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 80f38b8b..0263c72e 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1632,7 +1632,7 @@ - + A circular mapping shall not exist. circularMappingExist != true From 52e1f25d2a2438bddff73eae2ce4861686a867ee Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 10 Oct 2022 11:39:30 +0300 Subject: [PATCH 441/557] PDF/A-1 validation. Fix rule 6.8.3-3 --- PDF_A/PDFA-1A.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 2346892d..d4e133c6 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1357,7 +1357,7 @@ A circular mapping shall not exist - false + circularMappingExist != true A circular mapping exists for %1 structure type From 6f098b5be5383574050ac6bf76b4a043f8f66c07 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 10 Oct 2022 11:11:12 +0300 Subject: [PATCH 442/557] PDF/A-4 validation. Update rule 6.7.3-3 --- .../verapdf-profile-6-7-3-t03.xml | 6 ++++-- .../verapdf-profile-6-7-3-t03.xml | 6 ++++-- .../verapdf-profile-6-7-3-t03.xml | 6 ++++-- PDF_A/PDFA-4.xml | 6 ++++-- PDF_A/PDFA-4E.xml | 6 ++++-- PDF_A/PDFA-4F.xml | 6 ++++-- 6 files changed, 24 insertions(+), 12 deletions(-) diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml index c90e9683..690c9382 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -11,8 +11,10 @@ A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance. conformance == null - A file that does not conform to either PDF/A-4e or PDF/A-4f provides pdfaid:conformance. - + The "conformance" property of the PDF/A Identification Schema is %1 instead of null for PDF/A-4 conforming file. + + conformance + diff --git a/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml index 44fa3b5b..0b24ff25 100644 --- a/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -11,8 +11,10 @@ A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E. conformance == "E" - A PDF/A-4e conforming file does not specify the value of pdfaid:conformance as E. - + The "conformance" property of the PDF/A Identification Schema is %1 instead of "E" for PDF/A-4E conforming file. + + conformance + diff --git a/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml index b3d2f07c..8c95d7a4 100644 --- a/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -11,8 +11,10 @@ A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F. conformance == "F" - A PDF/A-4f conforming file does not specify the value of pdfaid:conformance as F. - + The "conformance" property of the PDF/A Identification Schema is %1 instead of "F" for PDF/A-4F conforming file. + + conformance + diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 9e7fb38c..0272188a 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -1305,8 +1305,10 @@ A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance. conformance == null - A file that does not conform to either PDF/A-4e or PDF/A-4f provides pdfaid:conformance. - + The "conformance" property of the PDF/A Identification Schema is %1 instead of null for PDF/A-4 conforming file. + + conformance + diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 93bad367..926a4b98 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1322,8 +1322,10 @@ A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E. conformance == "E" - A PDF/A-4e conforming file does not specify the value of pdfaid:conformance as E. - + The "conformance" property of the PDF/A Identification Schema is %1 instead of "E" for PDF/A-4E conforming file. + + conformance + diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 673bcff5..f523a6a5 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -1306,8 +1306,10 @@ A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F. conformance == "F" - A PDF/A-4f conforming file does not specify the value of pdfaid:conformance as F. - + The "conformance" property of the PDF/A Identification Schema is %1 instead of "F" for PDF/A-4F conforming file. + + conformance + From 96a83794bde1ab19c2705d79d6fea77ea5b95864 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 18 Oct 2022 17:55:07 +0300 Subject: [PATCH 443/557] WCAG validation. Add rules about TOCIs Add error arguments for existing rules --- PDF_UA/WCAG-21-Complete.xml | 76 ++++++++++++++++++++++++++++++------- 1 file changed, 62 insertions(+), 14 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index d62291d6..ff9b4cd2 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -538,8 +538,10 @@ TOCI page label shall match the destination page errorCodes.split(',').filter(elem => elem == 1002).length == 0 - TOCI has a wrong page label - + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] + @@ -596,10 +598,10 @@ The number of rows of this table does not match the number of rows of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1104).length == 0 - The number of rows of this table does not match the number of rows of the visual representation of this table + The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table - - + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1] structureID @@ -610,10 +612,10 @@ The number of columns of this table does not match the number of columns of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1105).length == 0 - The number of columns of this table does not match the number of columns of the visual representation of this table + The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table - - + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1] structureID @@ -624,10 +626,10 @@ The row span of this table cell does not match the row span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1106).length == 0 - The row span of this table cell does not match the row span of the visual representation of this table cell + The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell - - + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1] structureID @@ -638,10 +640,10 @@ The column span of this table cell does not match the column span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1107).length == 0 - The column span of this table cell does not match the column span of the visual representation of this table cell + The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell - - + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1] structureID @@ -731,6 +733,52 @@ + + + TOCI text should be presented in the document + errorCodes.split(',').filter(elem => elem == 1007).length == 0 + + TOCI text not found on the document + + + + + + + TOCI text should be presented on a destination page. + errorCodes.split(',').filter(elem => elem == 1008).length == 0 + + TOCI text not found on a destination page. Possible destination page number(s): %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1008)] + + + + + + + TOCI should have a destination. + errorCodes.split(',').filter(elem => elem == 1009).length == 0 + + TOCI doesn't have a destination. Possible destination page number(s): %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] + + + + + + + TOCI should have a right page label. + errorCodes.split(',').filter(elem => elem == 1010).length == 0 + + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. From 0600c7312f22bb1ff410e98208ff53c0e5cc7ace Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 17 Oct 2022 21:50:34 +0300 Subject: [PATCH 444/557] PDF/A-1 validation. Rename rules --- .../verapdf-profile-6-8-3-3-t01.xml} | 4 +- .../verapdf-profile-6-8-3-4-t01.xml} | 4 +- .../verapdf-profile-6-8-3-4-t02.xml} | 4 +- .../verapdf-profile-6-2-3-2-t01.xml} | 2 +- .../verapdf-profile-6-2-3-2-t02.xml} | 2 +- .../verapdf-profile-6-2-3-3-t01.xml} | 2 +- .../verapdf-profile-6-2-3-3-t02.xml} | 2 +- .../verapdf-profile-6-2-3-3-t03.xml} | 2 +- .../verapdf-profile-6-3-3-1-t01.xml} | 2 +- .../verapdf-profile-6-3-3-2-t01.xml} | 2 +- .../verapdf-profile-6-3-3-3-t01.xml} | 2 +- .../verapdf-profile-6-3-3-3-t02.xml} | 2 +- PDF_A/PDFA-1A.xml | 56 +++++++++---------- PDF_A/PDFA-1B.xml | 50 ++++++++--------- 14 files changed, 68 insertions(+), 68 deletions(-) rename PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/{verapdf-profile-6-8-3-t01.xml => 6.8.3.3 Structure hierarchy/verapdf-profile-6-8-3-3-t01.xml} (86%) rename PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/{verapdf-profile-6-8-3-t02.xml => 6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml} (87%) rename PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/{verapdf-profile-6-8-3-t03.xml => 6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml} (83%) rename PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/{verapdf-profile-6-2-3-t01.xml => 6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t01.xml} (95%) rename PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/{verapdf-profile-6-2-3-t05.xml => 6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t02.xml} (96%) rename PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/{verapdf-profile-6-2-3-t02.xml => 6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t01.xml} (94%) rename PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/{verapdf-profile-6-2-3-t03.xml => 6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t02.xml} (94%) rename PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/{verapdf-profile-6-2-3-t04.xml => 6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t03.xml} (94%) rename PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/{verapdf-profile-6-3-3-t01.xml => 6.3.3.1 General/verapdf-profile-6-3-3-1-t01.xml} (96%) rename PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/{verapdf-profile-6-3-3-t02.xml => 6.3.3.2 CIDFonts/verapdf-profile-6-3-3-2-t01.xml} (94%) rename PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/{verapdf-profile-6-3-3-t03.xml => 6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t01.xml} (94%) rename PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/{verapdf-profile-6-3-3-t04.xml => 6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t02.xml} (93%) diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.3 Structure hierarchy/verapdf-profile-6-8-3-3-t01.xml similarity index 86% rename from PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml rename to PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.3 Structure hierarchy/verapdf-profile-6-8-3-3-t01.xml index e251ae59..c3a99f3e 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t01.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.3 Structure hierarchy/verapdf-profile-6-8-3-3-t01.xml @@ -1,14 +1,14 @@
- ISO 19005-1:2005 - 6.8.3 Artifacts - StructTreeRoot + ISO 19005-1:2005 - 6.8.3 Artifacts - 6.8.3.3 Structure hierarchy - StructTreeRoot 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 PDF Reference 9.6
- + 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 PDF Reference 9.6 StructTreeRoot_size == 1 diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml similarity index 87% rename from PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml rename to PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml index b5456417..fbd102e4 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t02.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml @@ -1,14 +1,14 @@
- ISO 19005-1:2005 - 6.8.3 Artifacts - Standard roles + ISO 19005-1:2005 - 6.8.3 Artifacts - 6.8.3.4 Structure types - Standard roles All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root.
- + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. circularMappingExist == true diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml similarity index 83% rename from PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml rename to PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml index 588d831f..97350c7e 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/verapdf-profile-6-8-3-t03.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml @@ -1,13 +1,13 @@
- ISO 19005-1:2005 - 6.8.3 Artifacts - Circular mapping + ISO 19005-1:2005 - 6.8.3 Artifacts - 6.8.3.4 Structure types - Circular mapping A circular mapping shall not exist.
- + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t01.xml similarity index 95% rename from PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml rename to PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t01.xml index 8d42c033..e0b979bb 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t01.xml @@ -7,7 +7,7 @@ - + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t02.xml similarity index 96% rename from PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml rename to PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t02.xml index 97514e8f..e5830d05 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t05.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t02.xml @@ -9,7 +9,7 @@ - + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t01.xml similarity index 94% rename from PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml rename to PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t01.xml index 42a21930..facbf5c4 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t01.xml @@ -7,7 +7,7 @@ - + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space gOutputCS != null && gOutputCS == "RGB " diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t02.xml similarity index 94% rename from PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml rename to PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t02.xml index fe0aa4a6..1a9a2af0 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t02.xml @@ -7,7 +7,7 @@ - + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space gOutputCS != null && gOutputCS == "CMYK" diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t04.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t03.xml similarity index 94% rename from PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t04.xml rename to PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t03.xml index be1fc904..50dcae1a 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/verapdf-profile-6-2-3-t04.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.3 Uncalibrated colour spaces/verapdf-profile-6-2-3-3-t03.xml @@ -7,7 +7,7 @@ - + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 gOutputCS != null diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.1 General/verapdf-profile-6-3-3-1-t01.xml similarity index 96% rename from PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml rename to PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.1 General/verapdf-profile-6-3-3-1-t01.xml index 1cf33b99..6856dbca 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.1 General/verapdf-profile-6-3-3-1-t01.xml @@ -8,7 +8,7 @@ - + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.2 CIDFonts/verapdf-profile-6-3-3-2-t01.xml similarity index 94% rename from PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml rename to PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.2 CIDFonts/verapdf-profile-6-3-3-2-t01.xml index a059b34f..7d5699e8 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.2 CIDFonts/verapdf-profile-6-3-3-2-t01.xml @@ -8,7 +8,7 @@ - + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t01.xml similarity index 94% rename from PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t03.xml rename to PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t01.xml index fcc85a05..4544047c 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t01.xml @@ -7,7 +7,7 @@ - + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t04.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t02.xml similarity index 93% rename from PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t04.xml rename to PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t02.xml index a9aedfe9..c7064ae1 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/verapdf-profile-6-3-3-t04.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.3 CMaps/verapdf-profile-6-3-3-3-t02.xml @@ -7,7 +7,7 @@ - + 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 WMode == dictWMode diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index d4e133c6..bb3fc8c5 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -402,7 +402,7 @@ - + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 @@ -418,8 +418,25 @@ + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) + + The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2) + + N + colorSpace + + + + + + - + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space gOutputCS != null && gOutputCS == "RGB " @@ -429,7 +446,7 @@ - + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space gOutputCS != null && gOutputCS == "CMYK" @@ -439,7 +456,7 @@ - + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 gOutputCS != null @@ -448,23 +465,6 @@ - - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) - - The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2) - - N - colorSpace - - - - - - An Image dictionary shall not contain the Alternates key @@ -691,7 +691,7 @@ - + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. @@ -713,7 +713,7 @@ - + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 @@ -727,7 +727,7 @@ - + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 @@ -739,7 +739,7 @@ - + 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 WMode == dictWMode @@ -1328,7 +1328,7 @@ - + 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 PDF Reference 9.6 StructTreeRoot_size == 1 @@ -1340,7 +1340,7 @@ - + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. circularMappingExist == true @@ -1355,7 +1355,7 @@ - + A circular mapping shall not exist circularMappingExist != true diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index d376adc4..5128af9a 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -402,7 +402,7 @@ - + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 @@ -418,8 +418,25 @@ + + + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. + The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. + As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) + + The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2) + + N + colorSpace + + + + + + - + DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space gOutputCS != null && gOutputCS == "RGB " @@ -429,7 +446,7 @@ - + DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space gOutputCS != null && gOutputCS == "CMYK" @@ -439,7 +456,7 @@ - + If an uncalibrated colour space is used in a file then that file shall contain a PDF/A-1 OutputIntent, as defined in 6.2.2 gOutputCS != null @@ -448,23 +465,6 @@ - - - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) - - The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2) - - N - colorSpace - - - - - - An Image dictionary shall not contain the Alternates key @@ -691,7 +691,7 @@ - + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. @@ -713,7 +713,7 @@ - + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 @@ -727,7 +727,7 @@ - + All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 @@ -739,7 +739,7 @@ - + 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 WMode == dictWMode From df08fcafddeb1eddf994c6c9b55dcf539e1f56fb Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 20 Oct 2022 17:25:55 +0300 Subject: [PATCH 445/557] PDF/A-1,2,3 validation. Fix rules about circular mapping --- .../6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml | 2 +- .../6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml index 97350c7e..1f9b096d 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml @@ -6,7 +6,7 @@
- + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml index 255719de..546dbf01 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml @@ -6,7 +6,7 @@
- + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index bb3fc8c5..b0bfb20d 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1354,7 +1354,7 @@ - + A circular mapping shall not exist circularMappingExist != true diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 6bae27ec..222007ff 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1632,7 +1632,7 @@ - + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 0263c72e..80f38b8b 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1632,7 +1632,7 @@ - + A circular mapping shall not exist. circularMappingExist != true From 326fe7bce22b31b9ea89d18a708c15bbab1366c2 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 20 Oct 2022 22:53:49 +0300 Subject: [PATCH 446/557] PDF/A-2,3 validation. Rename rules --- .../verapdf-profile-6-2-11-7-3-t01.xml} | 2 +- .../verapdf-profile-6-7-2-2-t01.xml} | 2 +- .../verapdf-profile-6-7-3-3-t01.xml} | 2 +- .../verapdf-profile-6-7-3-4-t01.xml} | 2 +- .../verapdf-profile-6-7-3-4-t02.xml} | 2 +- .../verapdf-profile-6-1-7-1-t01.xml} | 2 +- .../verapdf-profile-6-1-7-1-t02.xml} | 2 +- .../verapdf-profile-6-1-7-1-t03.xml} | 2 +- .../verapdf-profile-6-1-7-2-t01.xml} | 2 +- .../verapdf-profile-6-2-11-3-1-t01.xml} | 2 +- .../verapdf-profile-6-2-11-3-2-t01.xml} | 2 +- .../verapdf-profile-6-2-11-3-3-t01.xml} | 2 +- .../verapdf-profile-6-2-11-3-3-t02.xml} | 2 +- .../verapdf-profile-6-2-11-3-3-t03.xml} | 2 +- .../verapdf-profile-6-2-11-4-1-t01.xml} | 2 +- .../verapdf-profile-6-2-11-4-1-t02.xml} | 2 +- .../verapdf-profile-6-2-11-4-2-t01.xml} | 2 +- .../verapdf-profile-6-2-11-4-2-t02.xml} | 2 +- .../verapdf-profile-6-6-2-3-1-t01.xml} | 2 +- .../verapdf-profile-6-6-2-3-2-t01.xml} | 2 +- .../verapdf-profile-6-6-2-3-3-t01.xml} | 2 +- .../verapdf-profile-6-6-2-3-3-t02.xml} | 2 +- .../verapdf-profile-6-6-2-3-3-t03.xml} | 2 +- .../verapdf-profile-6-6-2-3-3-t04.xml} | 2 +- .../verapdf-profile-6-6-2-3-3-t05.xml} | 2 +- .../verapdf-profile-6-2-11-7-2-t01.xml} | 2 +- .../verapdf-profile-6-2-11-7-2-t02.xml} | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 74 +++++++++--------- PDF_A/PDFA-2B.xml | 60 +++++++-------- PDF_A/PDFA-2U.xml | 64 ++++++++-------- PDF_A/PDFA-3A.xml | 76 +++++++++---------- PDF_A/PDFA-3B.xml | 60 +++++++-------- PDF_A/PDFA-3U.xml | 66 ++++++++-------- 35 files changed, 229 insertions(+), 229 deletions(-) rename PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/{verapdf-profile-6-2-11-7-t03.xml => 6.2.11.7.3 Level A conformance/verapdf-profile-6-2-11-7-3-t01.xml} (94%) rename PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/{verapdf-profile-6-7-2-t01.xml => 6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml} (94%) rename PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/{verapdf-profile-6-7-3-t01.xml => 6.7.3.3 Structure hierarchy/verapdf-profile-6-7-3-3-t01.xml} (94%) rename PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/{verapdf-profile-6-7-3-t02.xml => 6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml} (94%) rename PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/{verapdf-profile-6-7-3-t03.xml => 6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t02.xml} (92%) rename PDF_A/2b/6.1 File structure/6.1.7 Stream objects/{verapdf-profile-6-1-7-t01.xml => 6.1.7.1 General/verapdf-profile-6-1-7-1-t01.xml} (94%) rename PDF_A/2b/6.1 File structure/6.1.7 Stream objects/{verapdf-profile-6-1-7-t02.xml => 6.1.7.1 General/verapdf-profile-6-1-7-1-t02.xml} (94%) rename PDF_A/2b/6.1 File structure/6.1.7 Stream objects/{verapdf-profile-6-1-7-t03.xml => 6.1.7.1 General/verapdf-profile-6-1-7-1-t03.xml} (93%) rename PDF_A/2b/6.1 File structure/6.1.7 Stream objects/{verapdf-profile-6-1-7-t04.xml => 6.1.7.2 Filters/verapdf-profile-6-1-7-2-t01.xml} (96%) rename PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/{verapdf-profile-6-2-11-3-t01.xml => 6.2.11.3.1 General/verapdf-profile-6-2-11-3-1-t01.xml} (97%) rename PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/{verapdf-profile-6-2-11-3-t02.xml => 6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml} (94%) rename PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/{verapdf-profile-6-2-11-3-t03.xml => 6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml} (97%) rename PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/{verapdf-profile-6-2-11-3-t04.xml => 6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t02.xml} (93%) rename PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/{verapdf-profile-6-2-11-3-t05.xml => 6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml} (97%) rename PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/{verapdf-profile-6-2-11-4-t01.xml => 6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml} (93%) rename PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/{verapdf-profile-6-2-11-4-t02.xml => 6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t02.xml} (95%) rename PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/{verapdf-profile-6-2-11-4-t03.xml => 6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t01.xml} (94%) rename PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/{verapdf-profile-6-2-11-4-t04.xml => 6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml} (94%) rename PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/{verapdf-profile-6-6-2-3-t07.xml => 6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml} (94%) rename PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/{verapdf-profile-6-6-2-3-t01.xml => 6.6.2.3.2 Extension schemas/verapdf-profile-6-6-2-3-2-t01.xml} (94%) rename PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/{verapdf-profile-6-6-2-3-t02.xml => 6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t01.xml} (94%) rename PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/{verapdf-profile-6-6-2-3-t03.xml => 6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml} (96%) rename PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/{verapdf-profile-6-6-2-3-t04.xml => 6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml} (96%) rename PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/{verapdf-profile-6-6-2-3-t05.xml => 6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml} (96%) rename PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/{verapdf-profile-6-6-2-3-t06.xml => 6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml} (95%) rename PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/{verapdf-profile-6-2-11-7-t01.xml => 6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t01.xml} (93%) rename PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/{verapdf-profile-6-2-11-7-t02.xml => 6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml} (93%) diff --git a/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.3 Level A conformance/verapdf-profile-6-2-11-7-3-t01.xml similarity index 94% rename from PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml rename to PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.3 Level A conformance/verapdf-profile-6-2-11-7-3-t01.xml index b58cb367..07e1e95a 100644 --- a/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t03.xml +++ b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.3 Level A conformance/verapdf-profile-6-2-11-7-3-t01.xml @@ -10,7 +10,7 @@ - + For any character, regardless of its rendering mode, that is mapped to a code or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml similarity index 94% rename from PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml rename to PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml index 0ce5a647..10c233b2 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/verapdf-profile-6-7-2-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml @@ -7,7 +7,7 @@ - + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. Marked == true diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.3 Structure hierarchy/verapdf-profile-6-7-3-3-t01.xml similarity index 94% rename from PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml rename to PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.3 Structure hierarchy/verapdf-profile-6-7-3-3-t01.xml index 362affb1..595be74c 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.3 Structure hierarchy/verapdf-profile-6-7-3-3-t01.xml @@ -8,7 +8,7 @@ - + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. StructTreeRoot_size == 1 diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml similarity index 94% rename from PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml rename to PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml index 35026286..5103c0b8 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml @@ -8,7 +8,7 @@ - + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. circularMappingExist == true diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t02.xml similarity index 92% rename from PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml rename to PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t02.xml index 546dbf01..3bb8e013 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t02.xml @@ -7,7 +7,7 @@ - + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t01.xml similarity index 94% rename from PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml rename to PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t01.xml index 35aaa0b8..849e8567 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t01.xml @@ -8,7 +8,7 @@ - + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. Length == realLength diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t02.xml similarity index 94% rename from PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml rename to PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t02.xml index cb684229..c24889ed 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t02.xml @@ -8,7 +8,7 @@ - + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t03.xml similarity index 93% rename from PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml rename to PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t03.xml index ee476064..d744df40 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t03.xml @@ -7,7 +7,7 @@ - + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.2 Filters/verapdf-profile-6-1-7-2-t01.xml similarity index 96% rename from PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml rename to PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.2 Filters/verapdf-profile-6-1-7-2-t01.xml index c123546f..cd9b7f6d 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/verapdf-profile-6-1-7-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.2 Filters/verapdf-profile-6-1-7-2-t01.xml @@ -10,7 +10,7 @@ - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.1 General/verapdf-profile-6-2-11-3-1-t01.xml similarity index 97% rename from PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml rename to PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.1 General/verapdf-profile-6-2-11-3-1-t01.xml index 9a4970a6..95dadf08 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.1 General/verapdf-profile-6-2-11-3-1-t01.xml @@ -12,7 +12,7 @@ - + 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 is Identity-H or Identity-V, any values of Registry, Ordering, diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml similarity index 94% rename from PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml rename to PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml index 4c1eb876..c5b7bc44 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml @@ -8,7 +8,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml similarity index 97% rename from PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml rename to PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml index 943e3689..b53ebfdb 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml @@ -8,7 +8,7 @@ - + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t02.xml similarity index 93% rename from PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml rename to PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t02.xml index dec8fe2e..6e516e49 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t02.xml @@ -8,7 +8,7 @@ - + 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. WMode == dictWMode diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml similarity index 97% rename from PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml rename to PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml index 93385bf9..f2c7826d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/verapdf-profile-6-2-11-3-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml @@ -7,7 +7,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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" || diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml similarity index 93% rename from PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml rename to PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml index 0cdf5ec3..0cec89dd 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml @@ -7,7 +7,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t02.xml similarity index 95% rename from PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml rename to PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t02.xml index 8a6b5d96..2082c996 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t02.xml @@ -11,7 +11,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t01.xml similarity index 94% rename from PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml rename to PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t01.xml index 2c85ede7..ce8b605d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t01.xml @@ -8,7 +8,7 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml similarity index 94% rename from PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml rename to PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml index 3471d92b..cb58b81d 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/verapdf-profile-6-2-11-4-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml @@ -8,7 +8,7 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t07.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml similarity index 94% rename from PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t07.xml rename to PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml index 5a71d5f6..ca81517e 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t07.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml @@ -8,7 +8,7 @@ - + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.2 Extension schemas/verapdf-profile-6-6-2-3-2-t01.xml similarity index 94% rename from PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t01.xml rename to PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.2 Extension schemas/verapdf-profile-6-6-2-3-2-t01.xml index 4eddadaa..3c0e14e8 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t01.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.2 Extension schemas/verapdf-profile-6-6-2-3-2-t01.xml @@ -8,7 +8,7 @@ - + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t01.xml similarity index 94% rename from PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t02.xml rename to PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t01.xml index d183832e..c74be3f7 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t02.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t01.xml @@ -8,7 +8,7 @@ - + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml similarity index 96% rename from PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml rename to PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml index 73ad9079..b66b75bf 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml @@ -9,7 +9,7 @@ - + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml similarity index 96% rename from PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t04.xml rename to PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml index dbbce1f4..72b39f53 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t04.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml @@ -10,7 +10,7 @@ - + The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml similarity index 96% rename from PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml rename to PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml index 146eb79e..b2d0cef5 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t05.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml @@ -10,7 +10,7 @@ - + The ValueType type is an XMP structure containing the definition of all property value types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t06.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml similarity index 95% rename from PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t06.xml rename to PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml index d2ddda94..438d4500 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/verapdf-profile-6-6-2-3-t06.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml @@ -9,7 +9,7 @@ - + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). diff --git a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t01.xml similarity index 93% rename from PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml rename to PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t01.xml index 5edfaf2f..4fcb5cf4 100644 --- a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t01.xml +++ b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t01.xml @@ -8,7 +8,7 @@ - + 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 ISO 19005-2, 6.2.11.7.2. toUnicode != null diff --git a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml similarity index 93% rename from PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml rename to PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml index 9ba13c6b..13d8db85 100644 --- a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/verapdf-profile-6-2-11-7-t02.xml +++ b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml @@ -7,7 +7,7 @@ - + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index b0bfb20d..79cf589c 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -691,7 +691,7 @@ - + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 5128af9a..b97cc127 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -691,7 +691,7 @@ - + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 222007ff..c2cf7c39 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -107,7 +107,7 @@ - + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. Length == realLength @@ -121,7 +121,7 @@ - + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -132,7 +132,7 @@ - + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null @@ -144,7 +144,7 @@ - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be @@ -891,7 +891,7 @@ - + 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 is Identity-H or Identity-V, any values of Registry, Ordering, @@ -917,7 +917,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 @@ -930,7 +930,7 @@ - + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || @@ -960,7 +960,7 @@ - + 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. WMode == dictWMode @@ -974,7 +974,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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" || @@ -1003,7 +1003,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -1015,7 +1015,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes @@ -1031,7 +1031,7 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true @@ -1042,7 +1042,7 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true @@ -1125,7 +1125,7 @@ - + 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 ISO 19005-2, 6.2.11.7.2. toUnicode != null @@ -1138,7 +1138,7 @@ - + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) @@ -1148,7 +1148,7 @@ - + For any character, regardless of its rendering mode, that is mapped to a code or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a @@ -1441,8 +1441,19 @@ + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + + + + - + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1455,7 +1466,7 @@ - + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1466,7 +1477,7 @@ - + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). @@ -1482,7 +1493,7 @@ - + The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), @@ -1498,7 +1509,7 @@ - + The ValueType type is an XMP structure containing the definition of all property value types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), @@ -1515,7 +1526,7 @@ - + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). @@ -1528,17 +1539,6 @@ - - - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - - - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. @@ -1589,7 +1589,7 @@ - + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. Marked == true @@ -1605,7 +1605,7 @@ - + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. StructTreeRoot_size == 1 @@ -1618,7 +1618,7 @@ - + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. circularMappingExist == true @@ -1633,7 +1633,7 @@ - + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 6f24db7c..6bd661fc 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -107,7 +107,7 @@ - + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. Length == realLength @@ -121,7 +121,7 @@ - + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -132,7 +132,7 @@ - + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null @@ -144,7 +144,7 @@ - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be @@ -891,7 +891,7 @@ - + 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 is Identity-H or Identity-V, any values of Registry, Ordering, @@ -917,7 +917,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 @@ -930,7 +930,7 @@ - + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || @@ -960,7 +960,7 @@ - + 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. WMode == dictWMode @@ -974,7 +974,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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" || @@ -1003,7 +1003,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -1015,7 +1015,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes @@ -1031,7 +1031,7 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true @@ -1042,7 +1042,7 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true @@ -1403,8 +1403,19 @@ + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + + + + - + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1417,7 +1428,7 @@ - + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1428,7 +1439,7 @@ - + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). @@ -1444,7 +1455,7 @@ - + The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), @@ -1460,7 +1471,7 @@ - + The ValueType type is an XMP structure containing the definition of all property value types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), @@ -1477,7 +1488,7 @@ - + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). @@ -1490,17 +1501,6 @@ - - - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - - - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index d29296dc..89995086 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -107,7 +107,7 @@ - + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. Length == realLength @@ -121,7 +121,7 @@ - + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -132,7 +132,7 @@ - + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null @@ -144,7 +144,7 @@ - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be @@ -891,7 +891,7 @@ - + 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 is Identity-H or Identity-V, any values of Registry, Ordering, @@ -917,7 +917,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 @@ -930,7 +930,7 @@ - + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || @@ -960,7 +960,7 @@ - + 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. WMode == dictWMode @@ -974,7 +974,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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" || @@ -1003,7 +1003,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -1015,7 +1015,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes @@ -1031,7 +1031,7 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true @@ -1042,7 +1042,7 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true @@ -1125,7 +1125,7 @@ - + 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 ISO 19005-2, 6.2.11.7.2. toUnicode != null @@ -1138,7 +1138,7 @@ - + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) @@ -1426,8 +1426,19 @@ + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + + + + - + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1440,7 +1451,7 @@ - + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1451,7 +1462,7 @@ - + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). @@ -1467,7 +1478,7 @@ - + The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), @@ -1483,7 +1494,7 @@ - + The ValueType type is an XMP structure containing the definition of all property value types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), @@ -1500,7 +1511,7 @@ - + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). @@ -1513,17 +1524,6 @@ - - - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - - - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 80f38b8b..9fc52ffb 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -107,7 +107,7 @@ - + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. Length == realLength @@ -121,7 +121,7 @@ - + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -132,7 +132,7 @@ - + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null @@ -144,7 +144,7 @@ - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be @@ -891,7 +891,7 @@ - + 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 is Identity-H or Identity-V, any values of Registry, Ordering, @@ -917,7 +917,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 @@ -930,7 +930,7 @@ - + All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || @@ -960,7 +960,7 @@ - + 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. WMode == dictWMode @@ -974,7 +974,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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" || @@ -1003,7 +1003,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -1015,7 +1015,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes @@ -1031,7 +1031,7 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true @@ -1042,7 +1042,7 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true @@ -1125,7 +1125,7 @@ - + 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 ISO 19005-2, 6.2.11.7.2. toUnicode != null @@ -1138,7 +1138,7 @@ - + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) @@ -1148,7 +1148,7 @@ - + For any character, regardless of its rendering mode, that is mapped to a code or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a @@ -1440,9 +1440,20 @@ - + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + + + + - + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1455,7 +1466,7 @@ - + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1466,7 +1477,7 @@ - + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). @@ -1482,7 +1493,7 @@ - + The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), @@ -1498,7 +1509,7 @@ - + The ValueType type is an XMP structure containing the definition of all property value types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), @@ -1515,7 +1526,7 @@ - + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). @@ -1528,17 +1539,6 @@ - - - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - - - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. @@ -1589,7 +1589,7 @@ - + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. Marked == true @@ -1605,7 +1605,7 @@ - + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. StructTreeRoot_size == 1 @@ -1618,7 +1618,7 @@ - + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. circularMappingExist == true @@ -1633,7 +1633,7 @@ - + A circular mapping shall not exist. circularMappingExist != true diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index e4256416..5c3b7b35 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -107,7 +107,7 @@ - + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. Length == realLength @@ -121,7 +121,7 @@ - + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -132,7 +132,7 @@ - + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null @@ -144,7 +144,7 @@ - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be @@ -891,7 +891,7 @@ - + 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 is Identity-H or Identity-V, any values of Registry, Ordering, @@ -917,7 +917,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 @@ -930,7 +930,7 @@ - + All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || @@ -960,7 +960,7 @@ - + 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. WMode == dictWMode @@ -974,7 +974,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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" || @@ -1003,7 +1003,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -1015,7 +1015,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes @@ -1031,7 +1031,7 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true @@ -1042,7 +1042,7 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true @@ -1402,9 +1402,20 @@ + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + + + - + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1417,7 +1428,7 @@ - + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1428,7 +1439,7 @@ - + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). @@ -1444,7 +1455,7 @@ - + The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), @@ -1460,7 +1471,7 @@ - + The ValueType type is an XMP structure containing the definition of all property value types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), @@ -1477,7 +1488,7 @@ - + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). @@ -1490,17 +1501,6 @@ - - - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - - - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 932a0a0a..0071d00a 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -107,7 +107,7 @@ - + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword. Length == realLength @@ -121,7 +121,7 @@ - + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker. streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true @@ -132,7 +132,7 @@ - + A stream dictionary shall not contain the F, FFilter, or FDecodeParms keys F == null && FFilter == null && FDecodeParms == null @@ -144,7 +144,7 @@ - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be @@ -891,7 +891,7 @@ - + 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 is Identity-H or Identity-V, any values of Registry, Ordering, @@ -917,7 +917,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 @@ -930,7 +930,7 @@ - + All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || @@ -960,7 +960,7 @@ - + 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. WMode == dictWMode @@ -974,7 +974,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. 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" || @@ -1003,7 +1003,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -1015,7 +1015,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes @@ -1031,7 +1031,7 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true @@ -1042,7 +1042,7 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true @@ -1125,7 +1125,7 @@ - + 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 ISO 19005-2, 6.2.11.7.2. toUnicode != null @@ -1138,7 +1138,7 @@ - + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) @@ -1425,9 +1425,20 @@ - + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + + An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. + + + + - + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. containsUndefinedFields == false @@ -1440,7 +1451,7 @@ - + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" @@ -1451,7 +1462,7 @@ - + The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). @@ -1467,7 +1478,7 @@ - + The Property type defined is an XMP structure containing the definition of a schema property. The field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), @@ -1483,7 +1494,7 @@ - + The ValueType type is an XMP structure containing the definition of all property value types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), @@ -1500,7 +1511,7 @@ - + The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). @@ -1513,17 +1524,6 @@ - - - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true - - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - - - - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. From bbb7f7e9e34761259cbcfbb33672a8e17aa5ab01 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 24 Oct 2022 21:38:07 +0300 Subject: [PATCH 447/557] WCAG validation. Update profiles --- PDF_UA/WCAG-21-Complete.xml | 50 +++++++-------- PDF_UA/WCAG-21-Dev.xml | 54 ---------------- PDF_UA/WCAG-21.xml | 120 +++++++++++++++++++++++++----------- 3 files changed, 109 insertions(+), 115 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index ff9b4cd2..b2d84b9e 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -519,17 +519,11 @@ errorCodes.split(',').filter(elem => elem == 1000).length == 0 TOCI doesn't have a text - - - - - - - TOCI should contain a link to the destination page - errorCodes.split(',').filter(elem => elem == 1001).length == 0 - - TOCI doesn't have a destination - + + + + structureID + @@ -541,6 +535,8 @@ TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] + + structureID @@ -551,17 +547,11 @@ errorCodes.split(',').filter(elem => elem == 1003).length == 0 TOCI has a bad right alignment - - - - - - - TOCI text shall match the corresponding header on the destination page - errorCodes.split(',').filter(elem => elem == 1005).length == 0 - - TOCI text not found on a destination page - + + + + structureID + @@ -738,8 +728,12 @@ TOCI text should be presented in the document errorCodes.split(',').filter(elem => elem == 1007).length == 0 - TOCI text not found on the document - + TOCI text is not found in the document + + + + structureID + @@ -748,9 +742,11 @@ TOCI text should be presented on a destination page. errorCodes.split(',').filter(elem => elem == 1008).length == 0 - TOCI text not found on a destination page. Possible destination page number(s): %1 + TOCI text is not found on a destination page. Possible destination page number(s): %1 errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1008)] + + structureID @@ -763,6 +759,8 @@ TOCI doesn't have a destination. Possible destination page number(s): %1 errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] + + structureID @@ -775,6 +773,8 @@ TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] + + structureID diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 40a77601..78570a0b 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -316,60 +316,6 @@ - - - This cell is below than some cells in the next row - errorCodes.split(',').filter(elem => elem == 1100).length == 0 - - This cell is below than some cells in the next row - - - - - - - This cell is above than some cells in the previous row - errorCodes.split(',').filter(elem => elem == 1101).length == 0 - - This cell is above than some cells in the previous row - - - - - - - This cell is to the right of some cells in the next column - errorCodes.split(',').filter(elem => elem == 1102).length == 0 - - This cell is to the right of some cells in the next column - - - - - - - This cell is to the left of some cells in the previous column - errorCodes.split(',').filter(elem => elem == 1103).length == 0 - - This cell is to the left of some cells in the previous column - - - - - - - This structure element should be a table cell instead of a table header - correctType != 'TD' - - score = %1, correct type = %2, id = %3 - - correctSemanticScore - correctType - structureID - - - -
diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index a0680f52..ebc71123 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -519,17 +519,11 @@ errorCodes.split(',').filter(elem => elem == 1000).length == 0 TOCI doesn't have a text - - - - - - - TOCI should contain a link to the destination page - errorCodes.split(',').filter(elem => elem == 1001).length == 0 - - TOCI doesn't have a destination - + + + + structureID + @@ -538,8 +532,12 @@ TOCI page label shall match the destination page errorCodes.split(',').filter(elem => elem == 1002).length == 0 - TOCI has a wrong page label - + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] + + structureID + @@ -549,17 +547,11 @@ errorCodes.split(',').filter(elem => elem == 1003).length == 0 TOCI has a bad right alignment - - - - - - - TOCI text shall match the corresponding header on the destination page - errorCodes.split(',').filter(elem => elem == 1005).length == 0 - - TOCI text not found on a destination page - + + + + structureID + @@ -596,10 +588,10 @@ The number of rows of this table does not match the number of rows of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1104).length == 0 - The number of rows of this table does not match the number of rows of the visual representation of this table + The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table - - + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1] structureID @@ -610,10 +602,10 @@ The number of columns of this table does not match the number of columns of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1105).length == 0 - The number of columns of this table does not match the number of columns of the visual representation of this table + The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table - - + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1] structureID @@ -624,10 +616,10 @@ The row span of this table cell does not match the row span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1106).length == 0 - The row span of this table cell does not match the row span of the visual representation of this table cell + The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell - - + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1] structureID @@ -638,10 +630,10 @@ The column span of this table cell does not match the column span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1107).length == 0 - The column span of this table cell does not match the column span of the visual representation of this table cell + The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell - - + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1] structureID @@ -731,6 +723,62 @@ + + + TOCI text should be presented in the document + errorCodes.split(',').filter(elem => elem == 1007).length == 0 + + TOCI text is not found in the document + + + + structureID + + + + + + + TOCI text should be presented on a destination page. + errorCodes.split(',').filter(elem => elem == 1008).length == 0 + + TOCI text is not found on a destination page. Possible destination page number(s): %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1008)] + + structureID + + + + + + + TOCI should have a destination. + errorCodes.split(',').filter(elem => elem == 1009).length == 0 + + TOCI doesn't have a destination. Possible destination page number(s): %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] + + structureID + + + + + + + TOCI should have a right page label. + errorCodes.split(',').filter(elem => elem == 1010).length == 0 + + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] + + structureID + + + + From 6b8b68cd7b8c8d8d9791caee403d87b2a6df3c68 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 28 Oct 2022 16:00:36 +0300 Subject: [PATCH 448/557] WCAG validation. Add rules about List, TOC --- PDF_UA/WCAG-21-Complete.xml | 37 +++++++++++++++++++++++++++++++++---- PDF_UA/WCAG-21.xml | 37 +++++++++++++++++++++++++++++++++---- 2 files changed, 66 insertions(+), 8 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index b2d84b9e..edffc165 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -742,11 +742,14 @@ TOCI text should be presented on a destination page. errorCodes.split(',').filter(elem => elem == 1008).length == 0 - TOCI text is not found on a destination page. Possible destination page number(s): %1 + TOCI text is not found on a destination page %wrongDestinationPage%. + Possible destination page number(s): %possiblePageNumbers% - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1008)] - - structureID + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[1] + structureID @@ -779,6 +782,32 @@ + + + TOCI should have a correct numbering. + errorCodes.split(',').filter(elem => elem == 1011).length == 0 + + TOCI has a wrong numbering. Should be %correctNumbering% instead of %wrongNumbering% + + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[1] + structureID + + + + + + + List should contain list items. + errorCodes.split(',').filter(elem => elem == 1201).length == 0 + + List contains only one child - list + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index ebc71123..1b406a08 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -742,11 +742,14 @@ TOCI text should be presented on a destination page. errorCodes.split(',').filter(elem => elem == 1008).length == 0 - TOCI text is not found on a destination page. Possible destination page number(s): %1 + TOCI text is not found on a destination page %wrongDestinationPage%. + Possible destination page number(s): %possiblePageNumbers% - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1008)] - - structureID + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[1] + structureID @@ -779,6 +782,32 @@ + + + TOCI should have a correct numbering. + errorCodes.split(',').filter(elem => elem == 1011).length == 0 + + TOCI has a wrong numbering. Should be %correctNumbering% instead of %wrongNumbering% + + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[1] + structureID + + + + + + + List should contain list items. + errorCodes.split(',').filter(elem => elem == 1201).length == 0 + + List contains only one child - list + + + + From b8ecd61c8af148475d69df807b33b3b28f4b4906 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Sat, 29 Oct 2022 11:49:37 +0300 Subject: [PATCH 449/557] PDF/A-1 validation. Update rule 6.7.11-4 Rename rule 6.8.2-1 to 6.8.2.2-1 --- .../verapdf-profile-6-8-2-2-t01.xml} | 4 ++-- .../verapdf-profile-6-7-11-t04.xml | 4 ++-- .../6.7.2 Properties/verapdf-profile-6-7-2-t01.xml | 2 +- .../6.7.2 Properties/verapdf-profile-6-7-2-t02.xml | 2 +- .../6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml | 2 +- .../6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml | 2 +- .../6.7.9 Validation/verapdf-profile-6-7-9-t01.xml | 2 +- .../6.7.9 Validation/verapdf-profile-6-7-9-t02.xml | 2 +- PDF_A/PDFA-1A.xml | 4 ++-- PDF_A/PDFA-1B.xml | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) rename PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/{verapdf-profile-6-8-2-t01.xml => 6.8.2.2 Mark information dictionary/verapdf-profile-6-8-2-2-t01.xml} (91%) diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/6.8.2.2 Mark information dictionary/verapdf-profile-6-8-2-2-t01.xml similarity index 91% rename from PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml rename to PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/6.8.2.2 Mark information dictionary/verapdf-profile-6-8-2-2-t01.xml index 678ed70c..1c56c29d 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/verapdf-profile-6-8-2-t01.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/6.8.2.2 Mark information dictionary/verapdf-profile-6-8-2-2-t01.xml @@ -1,13 +1,13 @@
- ISO 19005-1:2005 - 6.8.2 Tagged PDF - 6.8.2.2 Mark information dictionary + ISO 19005-1:2005 - 6.8.2 Tagged PDF - 6.8.2.2 Mark information dictionary - Marked entry The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true.
- + The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true. Marked == true diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml index a4a093b1..dc9a19e9 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml @@ -2,7 +2,7 @@
ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema properties. - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. + The PDF/A Identification schema defined in Table 6 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text).
@@ -10,7 +10,7 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The PDF/A Identification schema defined in Table 6 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && diff --git a/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml index 3127fc52..09acb030 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key + ISO 19005-1:2005 - 6.7.2 Properties - Contains Metadata Key The document catalog dictionary of a conforming file shall contain the Metadata key.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml index 78af4bf7..e4876af0 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.2 Document Catalog Dictionary - Contains Metadata Key + ISO 19005-1:2005 - 6.7.2 Properties - Contains Metadata Key Metadata object stream dictionaries shall not contain the Filter key.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml index 258a22fd..7b4fd5fe 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.5 XMP Package - bytes attribute + ISO 19005-1:2005 - 6.7.5 XMP header - bytes attribute The bytes attribute shall not be used in the header of an XMP packet.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml index 5c44548c..dd162847 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.5 XMP Package - encoding attribute + ISO 19005-1:2005 - 6.7.5 XMP header - encoding attribute The encoding attribute shall not be used in the header of an XMP packet.
diff --git a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml index 315ae724..e76d21e2 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.9 XMP Package - Conforms to XMP Specification. + ISO 19005-1:2005 - 6.7.9 Validation - Conforms to XMP Specification. The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions
diff --git a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml index fa24605e..f8ed211c 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml @@ -1,7 +1,7 @@
- ISO 19005-1:2005 - 6.7.9 XMP Package - All properties are defined + ISO 19005-1:2005 - 6.7.9 Validation - All properties are defined Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 79cf589c..6091f826 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1300,7 +1300,7 @@
- The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The PDF/A Identification schema defined in Table 6 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && @@ -1312,7 +1312,7 @@ - + The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true. Marked == true diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index b97cc127..cf2c04f1 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1286,7 +1286,7 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The PDF/A Identification schema defined in Table 6 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && From af9962ad11e9c34d29de8e3da037deea5b51f28d Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 9 Nov 2022 14:32:04 +0300 Subject: [PATCH 450/557] WCAG and PDF/UA validation. Fix rules about Table,TOC and L --- .../7.2 Text/verapdf-profile-7-2-t03-t15.xml | 12 +++++----- .../7.2 Text/verapdf-profile-7-2-t17-t20.xml | 4 ++-- .../7.2 Text/verapdf-profile-7-2-t26-t27.xml | 2 +- PDF_UA/PDFUA-1.xml | 18 +++++++-------- PDF_UA/WCAG-21-Complete.xml | 22 +++++++++---------- PDF_UA/WCAG-21.xml | 4 ++-- 6 files changed, 31 insertions(+), 31 deletions(-) diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml index 4f83d575..7e8a4bb2 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml @@ -24,7 +24,7 @@ - TR element should contained in Table, THead, TBody or TFoot element + TR element should be contained in Table, THead, TBody or TFoot element /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) TR element contained in %1 instead of Table, THead, TBody or TFoot element @@ -38,7 +38,7 @@ - THead element should contained in Table element + THead element should be contained in Table element parentStandardType == 'Table' THead element contained in %1 instead of Table element @@ -52,7 +52,7 @@ - TBody element should contained in Table element + TBody element should be contained in Table element parentStandardType == 'Table' TBody element contained in %1 instead of Table element @@ -66,7 +66,7 @@ - TFoot element should contained in Table element + TFoot element should be contained in Table element parentStandardType == 'Table' TFoot element contained in %1 instead of Table element @@ -80,7 +80,7 @@ - TH element should contained in TR element + TH element should be contained in TR element parentStandardType == 'TR' TH element contained in %1 instead of TR element @@ -94,7 +94,7 @@ - TD element should contained in TR element + TD element should be contained in TR element parentStandardType == 'TR' TD element contained in %1 instead of TR element diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml index dc0a495b..07c14c3f 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml @@ -8,7 +8,7 @@ - LI element should contained in L element + LI element should be contained in L element parentStandardType == 'L' LI element contained in %1 instead of L element @@ -22,7 +22,7 @@ - LBody element should contained in LI element + LBody element should be contained in LI element parentStandardType == 'LI' LBody element contained in %1 instead of LI element diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml index 4cdbbd00..41ad6239 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml @@ -8,7 +8,7 @@ - TOCI element should contained in TOC element + TOCI element should be contained in TOC element parentStandardType == 'TOC' TOCI element contained in %1 instead of TOC element diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 451084c3..67e6c667 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -185,7 +185,7 @@ - TR element should contained in Table, THead, TBody or TFoot element + TR element should be contained in Table, THead, TBody or TFoot element /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) TR element contained in %1 instead of Table, THead, TBody or TFoot element @@ -199,7 +199,7 @@ - THead element should contained in Table element + THead element should be contained in Table element parentStandardType == 'Table' THead element contained in %1 instead of Table element @@ -213,7 +213,7 @@ - TBody element should contained in Table element + TBody element should be contained in Table element parentStandardType == 'Table' TBody element contained in %1 instead of Table element @@ -227,7 +227,7 @@ - TFoot element should contained in Table element + TFoot element should be contained in Table element parentStandardType == 'Table' TFoot element contained in %1 instead of Table element @@ -241,7 +241,7 @@ - TH element should contained in TR element + TH element should be contained in TR element parentStandardType == 'TR' TH element contained in %1 instead of TR element @@ -255,7 +255,7 @@ - TD element should contained in TR element + TD element should be contained in TR element parentStandardType == 'TR' TD element contained in %1 instead of TR element @@ -346,7 +346,7 @@ - LI element should contained in L element + LI element should be contained in L element parentStandardType == 'L' LI element contained in %1 instead of L element @@ -360,7 +360,7 @@ - LBody element should contained in LI element + LBody element should be contained in LI element parentStandardType == 'LI' LBody element contained in %1 instead of LI element @@ -453,7 +453,7 @@ - TOCI element should contained in TOC element + TOCI element should be contained in TOC element parentStandardType == 'TOC' TOCI element contained in %1 instead of TOC element diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index edffc165..774b7ed8 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -770,7 +770,7 @@ - TOCI should have a right page label. + TOCI should have a correct page label. errorCodes.split(',').filter(elem => elem == 1010).length == 0 TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 @@ -787,7 +787,7 @@ TOCI should have a correct numbering. errorCodes.split(',').filter(elem => elem == 1011).length == 0 - TOCI has a wrong numbering. Should be %correctNumbering% instead of %wrongNumbering% + TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering% errorArguments.split(';;')[errorCodes.split(',') .findIndex(elem => elem == 1011)].split(';')[0] @@ -991,7 +991,7 @@ - TR element should contained in Table, THead, TBody or TFoot element + TR element should be contained in Table, THead, TBody or TFoot element /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) TR element contained in %1 instead of Table, THead, TBody or TFoot element @@ -1007,7 +1007,7 @@ - THead element should contained in Table element + THead element should be contained in Table element parentStandardType == 'Table' THead element contained in %1 instead of Table element @@ -1023,7 +1023,7 @@ - TBody element should contained in Table element + TBody element should be contained in Table element parentStandardType == 'Table' TBody element contained in %1 instead of Table element @@ -1039,7 +1039,7 @@ - TFoot element should contained in Table element + TFoot element should be contained in Table element parentStandardType == 'Table' TFoot element contained in %1 instead of Table element @@ -1055,7 +1055,7 @@ - TH element should contained in TR element + TH element should be contained in TR element parentStandardType == 'TR' TH element contained in %1 instead of TR element @@ -1071,7 +1071,7 @@ - TD element should contained in TR element + TD element should be contained in TR element parentStandardType == 'TR' TD element contained in %1 instead of TR element @@ -1182,7 +1182,7 @@ - LI element should contained in L element + LI element should be contained in L element parentStandardType == 'L' LI element contained in %1 instead of L element @@ -1198,7 +1198,7 @@ - LBody element should contained in LI element + LBody element should be contained in LI element parentStandardType == 'LI' LBody element contained in %1 instead of LI element @@ -1298,7 +1298,7 @@ - TOCI element should contained in TOC element + TOCI element should be contained in TOC element parentStandardType == 'TOC' TOCI element contained in %1 instead of TOC element diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 1b406a08..58e5daa8 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -770,7 +770,7 @@ - TOCI should have a right page label. + TOCI should have a correct page label. errorCodes.split(',').filter(elem => elem == 1010).length == 0 TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 @@ -787,7 +787,7 @@ TOCI should have a correct numbering. errorCodes.split(',').filter(elem => elem == 1011).length == 0 - TOCI has a wrong numbering. Should be %correctNumbering% instead of %wrongNumbering% + TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering% errorArguments.split(';;')[errorCodes.split(',') .findIndex(elem => elem == 1011)].split(';')[0] From 2f8882ac44935d74037170a236e19603c47e7c74 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 29 Sep 2022 21:32:39 +0300 Subject: [PATCH 451/557] Split rules to several different --- .../verapdf-profile-6-2-2-t02.xml | 6 +- .../verapdf-profile-6-5-3-t04.xml | 19 +- .../verapdf-profile-6-5-3-t05.xml | 28 ++ .../verapdf-profile-6-5-3-t06.xml | 29 +++ .../verapdf-profile-6-7-11-t04.xml | 19 +- .../verapdf-profile-6-7-11-t05.xml | 23 ++ .../verapdf-profile-6-7-11-t06.xml | 23 ++ .../verapdf-profile-6-7-3-t01.xml | 20 +- .../verapdf-profile-6-7-3-t02.xml | 29 +++ .../verapdf-profile-6-7-3-t03.xml | 29 +++ .../verapdf-profile-6-7-3-t04.xml | 29 +++ .../verapdf-profile-6-7-3-t05.xml | 29 +++ .../verapdf-profile-6-7-3-t06.xml | 29 +++ .../verapdf-profile-6-7-3-t07.xml | 29 +++ .../verapdf-profile-6-7-3-t08.xml | 29 +++ .../verapdf-profile-6-7-9-t02.xml | 4 +- .../verapdf-profile-6-7-9-t03.xml | 25 ++ .../verapdf-profile-6-2-3-t02.xml | 6 +- .../verapdf-profile-6-3-3-t02.xml | 19 +- .../verapdf-profile-6-3-3-t03.xml | 26 ++ .../verapdf-profile-6-3-3-t04.xml | 27 ++ .../verapdf-profile-6-4-3-t02.xml | 12 +- .../verapdf-profile-6-4-3-t03.xml | 31 +++ .../verapdf-profile-6-6-2-3-1-t01.xml | 5 +- .../verapdf-profile-6-6-2-3-1-t02.xml | 25 ++ .../verapdf-profile-6-6-4-t04.xml | 20 +- .../verapdf-profile-6-6-4-t05.xml | 23 ++ .../verapdf-profile-6-6-4-t06.xml | 23 ++ .../verapdf-profile-6-6-4-t07.xml | 23 ++ .../verapdf-profile-6-2-3-t02.xml | 6 +- .../verapdf-profile-6-3-3-t02.xml | 19 +- .../verapdf-profile-6-3-3-t03.xml | 26 ++ .../verapdf-profile-6-3-3-t04.xml | 27 ++ .../verapdf-profile-6-7-3-t04.xml | 16 +- .../verapdf-profile-6-7-3-t06.xml | 23 ++ PDF_A/PDFA-1A.xml | 245 ++++++++++++++++-- PDF_A/PDFA-1B.xml | 245 ++++++++++++++++-- PDF_A/PDFA-2A.xml | 144 ++++++++-- PDF_A/PDFA-2B.xml | 146 +++++++++-- PDF_A/PDFA-2U.xml | 146 +++++++++-- PDF_A/PDFA-3A.xml | 148 +++++++++-- PDF_A/PDFA-3B.xml | 146 +++++++++-- PDF_A/PDFA-3U.xml | 150 +++++++++-- PDF_A/PDFA-4.xml | 72 ++++- PDF_A/PDFA-4E.xml | 72 ++++- PDF_A/PDFA-4F.xml | 72 ++++- .../7.2 Text/verapdf-profile-7-2-t03-t15.xml | 16 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml | 25 ++ .../7.2 Text/verapdf-profile-7-2-t17-t20.xml | 13 +- .../7.2 Text/verapdf-profile-7-2-t26-t27.xml | 15 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml | 25 ++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml | 25 ++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml | 25 ++ .../verapdf-profile-7-4-2-t01.xml | 6 +- PDF_UA/PDFUA-1.xml | 108 ++++++-- PDF_UA/WCAG-21-Complete.xml | 107 ++++++-- 56 files changed, 2305 insertions(+), 402 deletions(-) create mode 100644 PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t05.xml create mode 100644 PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t06.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t05.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t06.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t03.xml create mode 100644 PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml create mode 100644 PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml create mode 100644 PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t02.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t05.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t06.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t07.xml create mode 100644 PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml create mode 100644 PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml create mode 100644 PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t06.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml diff --git a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml index 7e0b87b5..6c9d8575 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.2 Output intent/verapdf-profile-6-2-2-t02.xml @@ -13,8 +13,10 @@ key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects + diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml index e55dd940..018dc85b 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml @@ -2,22 +2,21 @@
ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary’s Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream. + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as + its value shall contain only the N key.
- For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as + its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t05.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t05.xml new file mode 100644 index 00000000..b81bcdce --- /dev/null +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t05.xml @@ -0,0 +1,28 @@ + + +
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, + the value of the N key shall be an appearance subdictionary. +
+ + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, + the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + + +
diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t06.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t06.xml new file mode 100644 index 00000000..c12b3c5c --- /dev/null +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t06.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. +
+ + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml index dc9a19e9..3c065b72 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml @@ -1,23 +1,20 @@
- ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema properties. - The PDF/A Identification schema defined in Table 6 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. - It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), - pdfaid:conformance (Open Choice of Text). + ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema property part. + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid
- The PDF/A Identification schema defined in Table 6 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) - partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t05.xml new file mode 100644 index 00000000..8f98774b --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t05.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema property conformance. + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid +
+ + + + + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + conformancePrefix == null || conformancePrefix == "pdfaid" + + Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + + conformancePrefix + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t06.xml new file mode 100644 index 00000000..96a0464f --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t06.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema property amd. + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid +
+ + + + + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + amdPrefix == null || amdPrefix == "pdfaid" + + Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml index f3d0cb1c..50107457 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml @@ -1,18 +1,24 @@
- ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Document Information Dictionary entries embedded in XMP. - If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. + ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - CreationDate and xmp:CreateDate + The value of CreationDate entry from the document information dictionary, if present, and its + analogous XMP property xmp:CreateDate shall be equivalent.
- + - If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. - doesInfoMatchXMP + The value of CreationDate entry from the document information dictionary, if present, and its + analogous XMP property xmp:CreateDate shall be equivalent. + doCreationDatesMatch != false - Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. - + The value of CreationDate entry from the document Info dictionary and its matching XMP property + xmp:CreateDate are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) + + CreationDate + XMPCreateDate + diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml new file mode 100644 index 00000000..4dc31c1e --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Title and dc:title + The value of Title entry from the document information dictionary, if present, and its + analogous XMP property dc:title shall be equivalent. +
+ + + + + The value of Title entry from the document information dictionary, if present, and its + analogous XMP property dc:title shall be equivalent. + Title == null || Title == XMPTitle + + The value of Title entry from the document Info dictionary and its matching XMP property + dc:title are not equivalent (Info /Title = %1, XMP dc:title = %2) + + Title + XMPTitle + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml new file mode 100644 index 00000000..3ff02863 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Author and dc:creator + The value of Author entry from the document information dictionary, if present, and its + analogous XMP property dc:creator shall be equivalent. +
+ + + + + The value of Author entry from the document information dictionary, if present, and its + analogous XMP property dc:creator shall be equivalent. + Author == null || Author == XMPCreator + + The value of Author entry from the document Info dictionary and its matching XMP property + dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) + + Author + XMPCreator + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml new file mode 100644 index 00000000..97dfd967 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Subject and dc:subject + The value of Subject entry from the document information dictionary, if present, and its + analogous XMP property dc:subject shall be equivalent. +
+ + + + + The value of Subject entry from the document information dictionary, if present, and its + analogous XMP property dc:subject shall be equivalent. + Subject == null || Subject == XMPDescription + + The value of Subject entry from the document Info dictionary and its matching XMP property + dc:subject are not equivalent (Info /Subject = %1, XMP dc:subject = %2) + + Subject + XMPDescription + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml new file mode 100644 index 00000000..1b2b65e5 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Keywords and pdf:Keywords + The value of Keywords entry from the document information dictionary, if present, and its + analogous XMP property pdf:Keywords shall be equivalent. +
+ + + + + The value of Keywords entry from the document information dictionary, if present, and its + analogous XMP property pdf:Keywords shall be equivalent. + Keywords == null || Keywords == XMPKeywords + + The value of Keywords entry from the document Info dictionary and its matching XMP property + pdf:Keywords are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) + + Keywords + XMPKeywords + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml new file mode 100644 index 00000000..c6596d54 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Creator and xmp:CreatorTool + The value of Creator entry from the document information dictionary, if present, and its + analogous XMP property xmp:CreatorTool shall be equivalent. +
+ + + + + The value of Creator entry from the document information dictionary, if present, and its + analogous XMP property xmp:CreatorTool shall be equivalent. + Creator == null || Creator == XMPCreatorTool + + The value of Creator entry from the document Info dictionary and its matching XMP property + xmp:CreatorTool are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) + + Creator + XMPCreatorTool + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml new file mode 100644 index 00000000..173dd0b4 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Producer and pdf:Producer + The value of Producer entry from the document information dictionary, if present, and its + analogous XMP property pdf:Producer shall be equivalent. +
+ + + + + The value of Producer entry from the document information dictionary, if present, and its + analogous XMP property pdf:Producer shall be equivalent. + Producer == null || Producer == XMPProducer + + The value of Producer entry from the document Info dictionary and its matching XMP property + pdf:Producer are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) + + Producer + XMPProducer + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml new file mode 100644 index 00000000..3ba00bdf --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - ModDate and xmp:ModifyDate + The value of ModDate entry from the document information dictionary, if present, and its + analogous XMP property xmp:ModifyDate shall be equivalent. +
+ + + + + The value of ModDate entry from the document information dictionary, if present, and its + analogous XMP property xmp:ModifyDate shall be equivalent. + doModDatesMatch != false + + The value of ModDate entry from the document Info dictionary and its matching XMP property + xmp:ModifyDate are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) + + ModDate + XMPModifyDate + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml index f8ed211c..fcc25e82 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml @@ -11,9 +11,9 @@ Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification - (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true - A property is either not defined in XMP Specification, or is not defined in any of the extension schemas, or has an invalid value type. + A property is either not defined in XMP Specification, or is not defined in any of the extension schemas. diff --git a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t03.xml new file mode 100644 index 00000000..fd3b9062 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-1:2005 - 6.7.9 Validation - Property's type + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + or extension schemas that comply with XMP Specification +
+ + + + + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + or extension schemas that comply with XMP Specification + isValueTypeCorrect == true + + XMP property does not correspond to type %1 + + predefinedType + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml index ca9d7bfc..8a21cd75 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml @@ -16,8 +16,10 @@ profile stream. sameOutputProfileIndirect == true - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects +
diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml index 9929f64b..0c72c58b 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -2,22 +2,21 @@
ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as + its value shall contain only the N key.
- For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines + as its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml new file mode 100644 index 00000000..aef4058d --- /dev/null +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, + the value of the N key shall be an appearance subdictionary. +
+ + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + +
diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml new file mode 100644 index 00000000..7ac5357e --- /dev/null +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. +
+ + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + + + + + + +
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml index 7f0234eb..7fb045a4 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml @@ -1,11 +1,10 @@
- ISO 19005-2:2011 - 6.4.3 Digital signatures - PKCS#7 object + ISO 19005-2:2011 - 6.4.3 Digital signatures - Certificate of PKCS#7 object The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. - a single "SignerInfo" structure) in the PDF Signature. + minimum, it shall include the signer's X.509 signing certificate.
@@ -13,11 +12,10 @@ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. - a single "SignerInfo" structure) in the PDF Signature. - signingCertificatePresent == true && SignerInfoCount == 1 + minimum, it shall include the signer's X.509 signing certificate. + signingCertificatePresent == true - The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml new file mode 100644 index 00000000..d9a735df --- /dev/null +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml @@ -0,0 +1,31 @@ + + +
+ ISO 19005-2:2011 - 6.4.3 Digital signatures - Signer of PKCS#7 object + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. +
+ + + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 + signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + + SignerInfoCount + + + + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml index ca81517e..698e1219 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml @@ -11,10 +11,9 @@ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - + XMP property is either not predefined, or is not defined in any XMP extension schema.
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t02.xml new file mode 100644 index 00000000..6d083713 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Property's type + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. +
+ + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + isValueTypeCorrect == true + + XMP property does not correspond to type %1 + + predefinedType + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml index 72de7df0..28bf7515 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml @@ -1,24 +1,20 @@
- ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema properties. - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. - It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), - pdfaid:conformance (Open Choice of Text). + ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property part. + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid
- The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) - partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") && - (corrPrefix == null || corrPrefix == "pdfaid") + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t05.xml new file mode 100644 index 00000000..8d290c74 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t05.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property conformance. + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid +
+ + + + + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + conformancePrefix == null || conformancePrefix == "pdfaid" + + Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + + conformancePrefix + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t06.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t06.xml new file mode 100644 index 00000000..9928941e --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t06.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property amd. + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid +
+ + + + + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + amdPrefix == null || amdPrefix == "pdfaid" + + Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t07.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t07.xml new file mode 100644 index 00000000..6d81ed55 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t07.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property corr. + Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid +
+ + + + + Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + corrPrefix == null || corrPrefix == "pdfaid" + + Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + + corrPrefix + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml index 7b1c4f75..c10cbea8 100644 --- a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml @@ -16,8 +16,10 @@ profile stream. sameOutputProfileIndirect == true - OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects +
diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml index 6cee0778..bf2469ad 100644 --- a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -2,22 +2,21 @@
ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as + its value shall contain only the N key.
- For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || - (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as + its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml new file mode 100644 index 00000000..830f4ac5 --- /dev/null +++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, + the value of the N key shall be an appearance subdictionary. +
+ + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, + the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + +
diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml new file mode 100644 index 00000000..865a6c83 --- /dev/null +++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. +
+ + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + + + + + + +
diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml index ebbb4063..411833f0 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml @@ -1,20 +1,20 @@
- ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema properties. - The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. - It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:rev (Open Choice of Integer). + ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema property part. + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid
- The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. - It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:rev (Open Choice of Integer). - partPrefix == "pdfaid" && revPrefix == "pdfaid" + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t06.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t06.xml new file mode 100644 index 00000000..7222a2d0 --- /dev/null +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t06.xml @@ -0,0 +1,23 @@ + + +
+ ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema property rev. + Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid +
+ + + + + Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid + revPrefix == null || revPrefix == "pdfaid" + + Property rev of the PDF/A Identification Schema has invalid namespace prefix %1 + + revPrefix + + + + + + +
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 6091f826..b8b72828 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -396,8 +396,10 @@ key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects +
@@ -1015,14 +1017,47 @@
- For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as + its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + + + + + + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, + the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + @@ -1117,13 +1152,137 @@
- + - If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. - doesInfoMatchXMP + The value of CreationDate entry from the document information dictionary, if present, and its + analogous XMP property xmp:CreateDate shall be equivalent. + doCreationDatesMatch != false - Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. - + The value of CreationDate entry from the document Info dictionary and its matching XMP property + xmp:CreateDate are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) + + CreationDate + XMPCreateDate + + + + + + + + + The value of Title entry from the document information dictionary, if present, and its + analogous XMP property dc:title shall be equivalent. + Title == null || Title == XMPTitle + + The value of Title entry from the document Info dictionary and its matching XMP property + dc:title are not equivalent (Info /Title = %1, XMP dc:title = %2) + + Title + XMPTitle + + + + + + + + + The value of Author entry from the document information dictionary, if present, and its + analogous XMP property dc:creator shall be equivalent. + Author == null || Author == XMPCreator + + The value of Author entry from the document Info dictionary and its matching XMP property + dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) + + Author + XMPCreator + + + + + + + + + The value of Subject entry from the document information dictionary, if present, and its + analogous XMP property dc:subject shall be equivalent. + Subject == null || Subject == XMPDescription + + The value of Subject entry from the document Info dictionary and its matching XMP property + dc:subject are not equivalent (Info /Subject = %1, XMP dc:subject = %2) + + Subject + XMPDescription + + + + + + + + + The value of Keywords entry from the document information dictionary, if present, and its + analogous XMP property pdf:Keywords shall be equivalent. + Keywords == null || Keywords == XMPKeywords + + The value of Keywords entry from the document Info dictionary and its matching XMP property + pdf:Keywords are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) + + Keywords + XMPKeywords + + + + + + + + + The value of Creator entry from the document information dictionary, if present, and its + analogous XMP property xmp:CreatorTool shall be equivalent. + Creator == null || Creator == XMPCreatorTool + + The value of Creator entry from the document Info dictionary and its matching XMP property + xmp:CreatorTool are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) + + Creator + XMPCreatorTool + + + + + + + + + The value of Producer entry from the document information dictionary, if present, and its + analogous XMP property pdf:Producer shall be equivalent. + Producer == null || Producer == XMPProducer + + The value of Producer entry from the document Info dictionary and its matching XMP property + pdf:Producer are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) + + Producer + XMPProducer + + + + + + + + + The value of ModDate entry from the document information dictionary, if present, and its + analogous XMP property xmp:ModifyDate shall be equivalent. + doModDatesMatch != false + + The value of ModDate entry from the document Info dictionary and its matching XMP property + xmp:ModifyDate are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) + + ModDate + XMPModifyDate + @@ -1255,15 +1414,28 @@ - Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, - or extension schemas that comply with XMP Specification - (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + or extension schemas that comply with XMP Specification + isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true - A property is either not defined in XMP Specification, or is not defined in any of the extension schemas, or has an invalid value type. + A property is either not defined in XMP Specification, or is not defined in any of the extension schemas. + + + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + or extension schemas that comply with XMP Specification + isValueTypeCorrect == true + + XMP property does not correspond to type %1 + + predefinedType + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. @@ -1300,14 +1472,37 @@ - The PDF/A Identification schema defined in Table 6 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) - partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + conformancePrefix == null || conformancePrefix == "pdfaid" + + Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + + conformancePrefix + + + + + + + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + amdPrefix == null || amdPrefix == "pdfaid" + + Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + + amdPrefix + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index cf2c04f1..2ee8763a 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -396,8 +396,10 @@ key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects + @@ -1001,14 +1003,47 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key. - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance - subdictionary; otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as + its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + + + + + + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, + the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + @@ -1103,13 +1138,137 @@ - + - If a document information dictionary does appear at a document, then all of its entries that have analogous properties in predefined XMP schemas, shall also be embedded in the file in XMP form with equivalent values. - doesInfoMatchXMP + The value of CreationDate entry from the document information dictionary, if present, and its + analogous XMP property xmp:CreateDate shall be equivalent. + doCreationDatesMatch != false - Some of document information dictionary entries' that have analogous properties in predefined XMP schemas do not embedded or have not equivalent values in the file in XMP form. - + The value of CreationDate entry from the document Info dictionary and its matching XMP property + xmp:CreateDate are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) + + CreationDate + XMPCreateDate + + + + + + + + + The value of Title entry from the document information dictionary, if present, and its + analogous XMP property dc:title shall be equivalent. + Title == null || Title == XMPTitle + + The value of Title entry from the document Info dictionary and its matching XMP property + dc:title are not equivalent (Info /Title = %1, XMP dc:title = %2) + + Title + XMPTitle + + + + + + + + + The value of Author entry from the document information dictionary, if present, and its + analogous XMP property dc:creator shall be equivalent. + Author == null || Author == XMPCreator + + The value of Author entry from the document Info dictionary and its matching XMP property + dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) + + Author + XMPCreator + + + + + + + + + The value of Subject entry from the document information dictionary, if present, and its + analogous XMP property dc:subject shall be equivalent. + Subject == null || Subject == XMPDescription + + The value of Subject entry from the document Info dictionary and its matching XMP property + dc:subject are not equivalent (Info /Subject = %1, XMP dc:subject = %2) + + Subject + XMPDescription + + + + + + + + + The value of Keywords entry from the document information dictionary, if present, and its + analogous XMP property pdf:Keywords shall be equivalent. + Keywords == null || Keywords == XMPKeywords + + The value of Keywords entry from the document Info dictionary and its matching XMP property + pdf:Keywords are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) + + Keywords + XMPKeywords + + + + + + + + + The value of Creator entry from the document information dictionary, if present, and its + analogous XMP property xmp:CreatorTool shall be equivalent. + Creator == null || Creator == XMPCreatorTool + + The value of Creator entry from the document Info dictionary and its matching XMP property + xmp:CreatorTool are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) + + Creator + XMPCreatorTool + + + + + + + + + The value of Producer entry from the document information dictionary, if present, and its + analogous XMP property pdf:Producer shall be equivalent. + Producer == null || Producer == XMPProducer + + The value of Producer entry from the document Info dictionary and its matching XMP property + pdf:Producer are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) + + Producer + XMPProducer + + + + + + + + + The value of ModDate entry from the document information dictionary, if present, and its + analogous XMP property xmp:ModifyDate shall be equivalent. + doModDatesMatch != false + + The value of ModDate entry from the document Info dictionary and its matching XMP property + xmp:ModifyDate are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) + + ModDate + XMPModifyDate + @@ -1241,15 +1400,28 @@ - Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, - or extension schemas that comply with XMP Specification - (isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + or extension schemas that comply with XMP Specification + isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true - A property is either not defined in XMP Specification, or is not defined in any of the extension schemas, or has an invalid value type. + A property is either not defined in XMP Specification, or is not defined in any of the extension schemas. + + + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, + or extension schemas that comply with XMP Specification + isValueTypeCorrect == true + + XMP property does not correspond to type %1 + + predefinedType + + + + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. @@ -1286,14 +1458,37 @@ - The PDF/A Identification schema defined in Table 6 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:conformance (Open Choice of Text) - partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + conformancePrefix == null || conformancePrefix == "pdfaid" + + Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + + conformancePrefix + + + + + + + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + amdPrefix == null || amdPrefix == "pdfaid" + + Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + + amdPrefix + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index c2cf7c39..6aea6456 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -417,8 +417,10 @@ profile stream. sameOutputProfileIndirect == true - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects + @@ -1237,14 +1239,43 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines + as its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + + + + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + @@ -1318,12 +1349,11 @@ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. - a single "SignerInfo" structure) in the PDF Signature. - signingCertificatePresent == true && SignerInfoCount == 1 + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate. + signingCertificatePresent == true - The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1331,6 +1361,24 @@ + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 + signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + + SignerInfoCount + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. @@ -1445,10 +1493,22 @@ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - + XMP property is either not predefined, or is not defined in any XMP extension schema. + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + isValueTypeCorrect == true + + XMP property does not correspond to type %1 + + predefinedType + @@ -1576,15 +1636,49 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) - partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") && - (corrPrefix == null || corrPrefix == "pdfaid") + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + conformancePrefix == null || conformancePrefix == "pdfaid" + + Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + + conformancePrefix + + + + + + + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + amdPrefix == null || amdPrefix == "pdfaid" + + Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + + Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + corrPrefix == null || corrPrefix == "pdfaid" + + Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + + corrPrefix + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 6bd661fc..988bf0a3 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -417,8 +417,10 @@ profile stream. sameOutputProfileIndirect == true - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects + @@ -1199,14 +1201,43 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines + as its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + + + + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + @@ -1280,12 +1311,11 @@ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. - a single "SignerInfo" structure) in the PDF Signature. - signingCertificatePresent == true && SignerInfoCount == 1 + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate. + signingCertificatePresent == true - The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1293,6 +1323,24 @@ + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 + signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + + SignerInfoCount + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. @@ -1407,10 +1455,22 @@ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - + XMP property is either not predefined, or is not defined in any XMP extension schema. + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + isValueTypeCorrect == true + + XMP property does not correspond to type %1 + + predefinedType + @@ -1538,15 +1598,49 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) - partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") && - (corrPrefix == null || corrPrefix == "pdfaid") - - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" + + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + conformancePrefix == null || conformancePrefix == "pdfaid" + + Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + + conformancePrefix + + + + + + + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + amdPrefix == null || amdPrefix == "pdfaid" + + Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + + Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + corrPrefix == null || corrPrefix == "pdfaid" + + Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + + corrPrefix + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 89995086..afb73b25 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -417,8 +417,10 @@ profile stream. sameOutputProfileIndirect == true - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects + @@ -1222,14 +1224,43 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines + as its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + + + + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + @@ -1303,12 +1334,11 @@ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. - a single "SignerInfo" structure) in the PDF Signature. - signingCertificatePresent == true && SignerInfoCount == 1 + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate. + signingCertificatePresent == true - The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-2 requirements + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1316,6 +1346,24 @@ + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 + signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + + SignerInfoCount + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. @@ -1430,10 +1478,22 @@ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - + XMP property is either not predefined, or is not defined in any XMP extension schema. + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + isValueTypeCorrect == true + + XMP property does not correspond to type %1 + + predefinedType + @@ -1561,15 +1621,49 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) - partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") && - (corrPrefix == null || corrPrefix == "pdfaid") - - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" + + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + conformancePrefix == null || conformancePrefix == "pdfaid" + + Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + + conformancePrefix + + + + + + + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + amdPrefix == null || amdPrefix == "pdfaid" + + Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + + Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + corrPrefix == null || corrPrefix == "pdfaid" + + Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + + corrPrefix + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 9fc52ffb..eb44c33e 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -417,8 +417,10 @@ profile stream. sameOutputProfileIndirect == true - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects + @@ -1127,14 +1129,14 @@ 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 ISO 19005-2, 6.2.11.7.2. + or other mechanisms as defined in ISO 19005-3, 6.2.11.7.2. toUnicode != null The glyph can not be mapped to Unicode - + @@ -1237,14 +1239,43 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines + as its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + + + + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + @@ -1318,12 +1349,11 @@ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. - a single "SignerInfo" structure) in the PDF Signature. - signingCertificatePresent == true && SignerInfoCount == 1 + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate. + signingCertificatePresent == true - The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-3 requirements + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1331,6 +1361,24 @@ + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 + signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + + SignerInfoCount + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. @@ -1445,10 +1493,22 @@ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - + XMP property is either not predefined, or is not defined in any XMP extension schema. + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + isValueTypeCorrect == true + + XMP property does not correspond to type %1 + + predefinedType + @@ -1576,15 +1636,49 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) - partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") && - (corrPrefix == null || corrPrefix == "pdfaid") + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + conformancePrefix == null || conformancePrefix == "pdfaid" + + Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + + conformancePrefix + + + + + + + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + amdPrefix == null || amdPrefix == "pdfaid" + + Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + + Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + corrPrefix == null || corrPrefix == "pdfaid" + + Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + + corrPrefix + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 5c3b7b35..4d978626 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -417,8 +417,10 @@ profile stream. sameOutputProfileIndirect == true - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects + @@ -1199,14 +1201,43 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines + as its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + + + + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + @@ -1280,12 +1311,11 @@ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. - a single "SignerInfo" structure) in the PDF Signature. - signingCertificatePresent == true && SignerInfoCount == 1 + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate. + signingCertificatePresent == true - The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-3 requirements + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1293,6 +1323,24 @@ + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 + signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + + SignerInfoCount + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. @@ -1407,10 +1455,22 @@ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - + XMP property is either not predefined, or is not defined in any XMP extension schema. + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + isValueTypeCorrect == true + + XMP property does not correspond to type %1 + + predefinedType + @@ -1538,15 +1598,49 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) - partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") && - (corrPrefix == null || corrPrefix == "pdfaid") - - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" + + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + conformancePrefix == null || conformancePrefix == "pdfaid" + + Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + + conformancePrefix + + + + + + + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + amdPrefix == null || amdPrefix == "pdfaid" + + Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + + Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + corrPrefix == null || corrPrefix == "pdfaid" + + Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + + corrPrefix + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 0071d00a..65efdf0a 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -417,8 +417,10 @@ profile stream. sameOutputProfileIndirect == true - File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects + @@ -1127,14 +1129,14 @@ 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 ISO 19005-2, 6.2.11.7.2. + or other mechanisms as defined in ISO 19005-3, 6.2.11.7.2. toUnicode != null The glyph can not be mapped to Unicode - + @@ -1222,14 +1224,43 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") - || (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines + as its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + + + + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + @@ -1303,12 +1334,11 @@ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate and there shall only be a single signer (e.g. - a single "SignerInfo" structure) in the PDF Signature. - signingCertificatePresent == true && SignerInfoCount == 1 + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, it shall include the signer's X.509 signing certificate. + signingCertificatePresent == true - The DER-encoded PKCS#7 binary data object representing a PDF Signature does not conform to PDF/A-3 requirements + The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1316,6 +1346,24 @@ + + + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of + the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At + minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + SignerInfoCount == 1 + + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 + signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + + SignerInfoCount + + + + + + + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. @@ -1430,10 +1478,22 @@ All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. - (isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true) && isValueTypeCorrect == true + isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - An XMP property is either not not pre-defined, is not defined in any extension schema, or has invalid type. - + XMP property is either not predefined, or is not defined in any XMP extension schema. + + + + + + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + isValueTypeCorrect == true + + XMP property does not correspond to type %1 + + predefinedType + @@ -1561,15 +1621,49 @@ - The PDF/A Identification schema defined in Table 8 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". - The required schema namespace prefix is pdfaid. It contains the following fields: pdfaid:part (Open Choice of Integer), - pdfaid:amd (Open Choice of Text), pdfaid:corr (Open Choice of Text), pdfaid:conformance (Open Choice of Text) - partPrefix == "pdfaid" && conformancePrefix == "pdfaid" && - (amdPrefix == null || amdPrefix == "pdfaid") && - (corrPrefix == null || corrPrefix == "pdfaid") - - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" + + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + conformancePrefix == null || conformancePrefix == "pdfaid" + + Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + + conformancePrefix + + + + + + + Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + amdPrefix == null || amdPrefix == "pdfaid" + + Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + + Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + corrPrefix == null || corrPrefix == "pdfaid" + + Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + + corrPrefix + diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 0272188a..45804e49 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -326,8 +326,10 @@ profile stream. sameOutputProfileIndirect == true - OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects + @@ -1117,14 +1119,43 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || - (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as + its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + + + + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, + the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + @@ -1314,12 +1345,13 @@ - The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. - It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:rev (Open Choice of Integer). - partPrefix == "pdfaid" && revPrefix == "pdfaid" + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + @@ -1335,6 +1367,18 @@ + + + Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid + revPrefix == null || revPrefix == "pdfaid" + + Property rev of the PDF/A Identification Schema has invalid namespace prefix %1 + + revPrefix + + + + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 926a4b98..34b2d597 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -340,8 +340,10 @@ profile stream. sameOutputProfileIndirect == true - OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects + @@ -1132,14 +1134,43 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || - (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as + its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + + + + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, + the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + @@ -1333,12 +1364,13 @@ - The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. - It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:rev (Open Choice of Integer). - partPrefix == "pdfaid" && revPrefix == "pdfaid" + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + @@ -1354,6 +1386,18 @@ + + + Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid + revPrefix == null || revPrefix == "pdfaid" + + Property rev of the PDF/A Identification Schema has invalid namespace prefix %1 + + revPrefix + + + + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index f523a6a5..4278ba4c 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -326,8 +326,10 @@ profile stream. sameOutputProfileIndirect == true - OutputIntents array contains output intent dictionaries with non-matching destination output profiles - + OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) + + outputProfileIndirects + @@ -1118,14 +1120,43 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall - contain only the N key. If an annotation dictionary's Subtype key has a value of Widget and its FT key has a - value of Btn, the value of the N key shall be an appearance subdictionary, otherwise the value of the N key shall be an appearance stream. - AP == null || ( AP == "N" && ( ((Subtype != "Widget" || FT != "Btn") && N_type == "Stream") || - (Subtype == "Widget" && FT == "Btn" && N_type == "Dict" && appearance_size > 0) ) ) + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as + its value shall contain only the N key. + AP == null || AP == "N" - Annotation's appearance dictionary contains entries other than N or the N entry has an invalid type - + Annotation's appearance dictionary contains entries %1 other than N + + AP.split('&').filter(elem => elem != 'N').toString() + + + + + + + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, + the value of the N key shall be an appearance subdictionary. + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of + Btn, but the value of the N key is %1 instead of appearance subdictionary + + N_type + + + + + + + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the + value of the N key is not an appearance stream + + Subtype + FT + @@ -1317,12 +1348,13 @@ - The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". The required schema namespace prefix is pdfaid. - It contains the following properties: pdfaid:part (Open Choice of Integer), pdfaid:rev (Open Choice of Integer). - partPrefix == "pdfaid" && revPrefix == "pdfaid" + Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + partPrefix == null || partPrefix == "pdfaid" - A property of the PDF/A Identification Schema has an invalid namespace prefix - + Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + + partPrefix + @@ -1338,6 +1370,18 @@ + + + Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid + revPrefix == null || revPrefix == "pdfaid" + + Property rev of the PDF/A Identification Schema has invalid namespace prefix %1 + + revPrefix + + + + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml index 7e8a4bb2..9a1a0f8d 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml @@ -8,15 +8,15 @@ - Table element may contain a Caption element as its first or last kid and - Table element may contain only TR, THead, TBody, TFoot and Caption elements - /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) - || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) - || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + Table element may contain only TR, THead, TBody, TFoot and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - Table element contains more than one Caption element or Table element contains a Caption element not as its first or - last kid or Table element contains not a TR, THead, TBody, TFoot or Caption elements - + Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml new file mode 100644 index 00000000..f855f584 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Caption of Table + Table element may contain a Caption element as its first or last kid +
+ + + + + Table element may contain a Caption element as its first or last kid + kidsStandardTypes.indexOf('&Caption&') < 0 + + Table element contains Caption as its %1 child instead of first or last one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml index 07c14c3f..4f3d8950 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml @@ -36,12 +36,15 @@
- L element may contain a Caption element as its first kid and L element may contain only L, LI and Caption elements - /^(Caption&)?(L|LI)(&(L|LI))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' + L element may contain only L, LI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').length == 0 || kidsStandardTypes == '' - L element contains more than one Caption element or L element contains a Caption element not as its first kid or - L element contains not a L, LI or Caption elements - + L element contains %1 element(s) instead of L, LI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').toString() + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml index 41ad6239..bfd9a569 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml @@ -22,14 +22,15 @@ - TOC element may contain a Caption element as its first kid and - TOC element may contain only TOC, TOCI and Caption elements - /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || - kidsStandardTypes == '' + TOC element may contain only TOC, TOCI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' + && elem != 'Caption').length == 0 || kidsStandardTypes == '' - TOC element contains more than one Caption element or TOC element contains a Caption element - not as its first kid or TOC element contains not a TOC, TOCI or Caption elements - + TOC element contains %1 element(s) instead of TOC, TOCI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' + && elem != 'Caption').toString() + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml new file mode 100644 index 00000000..825d45c5 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Caption of TOC + TOC element may contain a Caption element only as its first kid +
+ + + + + TOC element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + TOC element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml new file mode 100644 index 00000000..4ffecea2 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Caption of Table + Table element may contain only one Caption element +
+ + + + + Table element may contain only one Caption element + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 + + Table element contains %1 Caption elements instead of one + + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml new file mode 100644 index 00000000..b6cc9979 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Caption of List + L element may contain a Caption element only as its first kid +
+ + + + + L element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + L element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + + + +
diff --git a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml index 9ff3d856..8b8c2930 100644 --- a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml +++ b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml @@ -27,8 +27,10 @@ require it.
hasCorrectNestingLevel == true - Does use numbered headings, but the first heading tag is not H1 or numbered heading levels in descending sequence are skipped - + Heading level %1 is skipped in a descending sequence of header levels + + nestingLevel - 1 + diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 67e6c667..a79c6db1 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -169,15 +169,15 @@
- Table element may contain a Caption element as its first or last kid and - Table element may contain only TR, THead, TBody, TFoot and Caption elements - /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) - || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) - || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' - - Table element contains more than one Caption element or Table element contains a Caption element not as its first or - last kid or Table element contains not a TR, THead, TBody, TFoot or Caption elements - + Table element may contain only TR, THead, TBody, TFoot and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() + @@ -344,6 +344,20 @@ + + + Table element may contain a Caption element as its first or last kid + kidsStandardTypes.indexOf('&Caption&') < 0 + + Table element contains Caption as its %1 child instead of first or last one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + LI element should be contained in L element @@ -374,12 +388,15 @@ - L element may contain a Caption element as its first kid and L element may contain only L, LI and Caption elements - /^(Caption&)?(L|LI)(&(L|LI))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' + L element may contain only L, LI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').length == 0 || kidsStandardTypes == '' - L element contains more than one Caption element or L element contains a Caption element not as its first kid or - L element contains not a L, LI or Caption elements - + L element contains %1 element(s) instead of L, LI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').toString() + @@ -467,14 +484,29 @@ - TOC element may contain a Caption element as its first kid and - TOC element may contain only TOC, TOCI and Caption elements - /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || - kidsStandardTypes == '' + TOC element may contain only TOC, TOCI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' + && elem != 'Caption').length == 0 || kidsStandardTypes == '' - TOC element contains more than one Caption element or TOC element contains a Caption element - not as its first kid or TOC element contains not a TOC, TOCI or Caption elements - + TOC element contains %1 element(s) instead of TOC, TOCI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' + && elem != 'Caption').toString() + + + + + + + + + TOC element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + TOC element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + @@ -589,6 +621,34 @@ + + + Table element may contain only one Caption element + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 + + Table element contains %1 Caption elements instead of one + + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length + + + + + + + + + L element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + L element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + Figure tags shall include an alternative representation or replacement text that represents the contents @@ -615,8 +675,10 @@ require it. hasCorrectNestingLevel == true - Does use numbered headings, but the first heading tag is not H1 or numbered heading levels in descending sequence are skipped - + Heading level %1 is skipped in a descending sequence of header levels + + nestingLevel - 1 + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 774b7ed8..95f17867 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -971,16 +971,14 @@ - Table element may contain a Caption element as its first or last kid and - Table element may contain only TR, THead, TBody, TFoot and Caption elements - /^(Caption&)?(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*$/.test(kidsStandardTypes) - || /^(TR|THead|TBody|TFoot)(&(TR|THead|TBody|TFoot))*(&Caption)?$/.test(kidsStandardTypes) - || kidsStandardTypes == 'Caption' || kidsStandardTypes == '' + Table element may contain only TR, THead, TBody, TFoot and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - Table element contains more than one Caption element or Table element contains a Caption element not as its first or - last kid or Table element contains not a TR, THead, TBody, TFoot or Caption elements + Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption - + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() structureID @@ -1180,6 +1178,23 @@
+ + + + Table element may contain a Caption element as its first or last kid + kidsStandardTypes.indexOf('&Caption&') < 0 + + Table element contains Caption as its %1 child instead of first or last one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + structureID + + + + + + LI element should be contained in L element @@ -1214,13 +1229,14 @@ - L element may contain a Caption element as its first kid and L element may contain only L, LI and Caption elements - /^(Caption&)?(L|LI)(&(L|LI))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' || kidsStandardTypes == 'Caption' + L element may contain only L, LI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').length == 0 || kidsStandardTypes == '' - L element contains more than one Caption element or L element contains a Caption element not as its first kid or - L element contains not a L, LI or Caption elements + L element contains %1 element(s) instead of L, LI or Caption - + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').toString() structureID @@ -1314,15 +1330,30 @@ - TOC element may contain a Caption element as its first kid and - TOC element may contain only TOC, TOCI and Caption elements - /^(Caption&)?(TOC|TOCI)(&(TOC|TOCI))*$/.test(kidsStandardTypes) || kidsStandardTypes == 'Caption' || - kidsStandardTypes == '' + TOC element may contain only TOC, TOCI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' + && elem != 'Caption').length == 0 || kidsStandardTypes == '' - TOC element contains more than one Caption element or TOC element contains a Caption element - not as its first kid or TOC element contains not a TOC, TOCI or Caption elements + TOC element contains %1 element(s) instead of TOC, TOCI or Caption + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' + && elem != 'Caption').toString() + structureID + + + + + + + + + TOC element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + TOC element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 structureID @@ -1446,6 +1477,38 @@
+ + + Table element may contain only one Caption element + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 + + Table element contains %1 Caption elements instead of one + + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length + + structureID + + + + + + + + + L element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + L element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + structureID + + + + + + Figure tags shall include an alternative representation or replacement text that represents the contents @@ -1472,8 +1535,10 @@ require it. hasCorrectNestingLevel == true - Does use numbered headings, but the first heading tag is not H1 or numbered heading levels in descending sequence are skipped - + Heading level %1 is skipped in a descending sequence of header levels + + nestingLevel - 1 + From 54209ad1213173d38da5b128e93a3514db973029 Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Tue, 29 Nov 2022 12:40:40 +0300 Subject: [PATCH 452/557] Added rule about the presence of a StructTreeRoot in PDF/UA --- .../1/7.1 General/verapdf-profile-7-1-t11.xml | 26 +++++++++++++++++++ PDF_UA/PDFUA-1.xml | 14 ++++++++++ 2 files changed, 40 insertions(+) create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t11.xml diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t11.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t11.xml new file mode 100644 index 00000000..6e9d79c9 --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t11.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - StructTreeRoot + 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-1:2008, 14.7. +
+ + + + + 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-1:2008, 14.7. + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + +
diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index a79c6db1..7580919b 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -157,6 +157,20 @@
+ + + 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-1:2008, 14.7. + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + Natural language in the Outline entries shall be determined From 48c5a49d6572366bc03800eef22e3970db044e59 Mon Sep 17 00:00:00 2001 From: irinamavrina Date: Wed, 30 Nov 2022 10:11:04 +0300 Subject: [PATCH 453/557] WCAG validation. Fixed rule 1.4.4-1 --- PDF_UA/WCAG-21-Complete.xml | 2 +- PDF_UA/WCAG-21.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 95f17867..b7015501 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -81,7 +81,7 @@ Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality. - textSize >= 4.5 + textSize >= 4.5 || isWhiteSpaceChunk == true textSize = %1 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 58e5daa8..3797897f 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -81,7 +81,7 @@ Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality. - textSize >= 4.5 + textSize >= 4.5 || isWhiteSpaceChunk == true textSize = %1 From 018b0a956377f4b3d6f39dd7d58a02470290ea03 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 13 Dec 2022 14:56:20 +0300 Subject: [PATCH 454/557] Update WCAG profile --- PDF_UA/WCAG-21-Complete.xml | 119 ++++++++++++++++++------------------ PDF_UA/WCAG-21-Dev.xml | 22 +++---- PDF_UA/WCAG-21.xml | 55 +++++++---------- 3 files changed, 94 insertions(+), 102 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index b7015501..dc2cfdf5 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -176,22 +176,11 @@ - structureID + structureID - - - The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry - of the document's Catalog dictionary - StructTreeRoot_size == 1 - - StructTreeRoot entry is not present in the document catalog - - - - Incorrect use of a paragraph @@ -258,7 +247,7 @@ correctSemanticScore correctType - structureID + structureID @@ -417,7 +406,7 @@ correctSemanticScore correctType - structureID + structureID @@ -508,7 +497,7 @@ correctSemanticScore correctType - structureID + structureID @@ -522,7 +511,7 @@ - structureID + structureID @@ -536,7 +525,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] - structureID + structureID @@ -550,7 +539,7 @@ - structureID + structureID @@ -564,7 +553,7 @@ - structureID + structureID @@ -578,7 +567,7 @@ - structureID + structureID @@ -592,7 +581,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0] errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1] - structureID + structureID @@ -606,7 +595,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0] errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1] - structureID + structureID @@ -620,7 +609,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0] errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1] - structureID + structureID @@ -634,7 +623,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0] errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1] - structureID + structureID @@ -648,7 +637,7 @@ - structureID + structureID @@ -662,7 +651,7 @@ - structureID + structureID @@ -676,7 +665,7 @@ - structureID + structureID @@ -690,7 +679,7 @@ - structureID + structureID @@ -704,7 +693,7 @@ - structureID + structureID @@ -718,7 +707,7 @@ correctSemanticScore correctType - structureID + structureID @@ -732,7 +721,7 @@ - structureID + structureID @@ -763,7 +752,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] - structureID + structureID @@ -777,7 +766,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] - structureID + structureID @@ -959,6 +948,20 @@ + + + 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-1:2008, 14.7. + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + Natural language in the Outline entries shall be determined @@ -980,7 +983,7 @@ kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() - structureID + structureID @@ -996,7 +999,7 @@ parentStandardType - structureID + structureID @@ -1012,7 +1015,7 @@ parentStandardType - structureID + structureID @@ -1028,7 +1031,7 @@ parentStandardType - structureID + structureID @@ -1044,7 +1047,7 @@ parentStandardType - structureID + structureID @@ -1060,7 +1063,7 @@ parentStandardType - structureID + structureID @@ -1076,7 +1079,7 @@ parentStandardType - structureID + structureID @@ -1092,7 +1095,7 @@ kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() - structureID + structureID @@ -1108,7 +1111,7 @@ - structureID + structureID @@ -1124,7 +1127,7 @@ - structureID + structureID @@ -1141,7 +1144,7 @@ - structureID + structureID @@ -1158,7 +1161,7 @@ - structureID + structureID @@ -1188,7 +1191,7 @@ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - structureID + structureID @@ -1204,7 +1207,7 @@ parentStandardType - structureID + structureID @@ -1220,7 +1223,7 @@ parentStandardType - structureID + structureID @@ -1238,7 +1241,7 @@ kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').toString() - structureID + structureID @@ -1254,7 +1257,7 @@ kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() - structureID + structureID @@ -1321,7 +1324,7 @@ parentStandardType - structureID + structureID @@ -1339,7 +1342,7 @@ kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').toString() - structureID + structureID @@ -1355,7 +1358,7 @@ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - structureID + structureID @@ -1438,7 +1441,7 @@ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - structureID + structureID @@ -1454,7 +1457,7 @@ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - structureID + structureID @@ -1470,7 +1473,7 @@ kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - structureID + structureID @@ -1486,7 +1489,7 @@ kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length - structureID + structureID @@ -1502,7 +1505,7 @@ kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - structureID + structureID diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 78570a0b..63123d28 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -131,7 +131,7 @@ correctSemanticScore correctType - structureID + structureID @@ -172,7 +172,7 @@ correctSemanticScore correctType - structureID + structureID @@ -186,7 +186,7 @@ correctSemanticScore correctType - structureID + structureID @@ -200,7 +200,7 @@ correctSemanticScore correctType - structureID + structureID @@ -214,7 +214,7 @@ correctSemanticScore correctType - structureID + structureID @@ -228,7 +228,7 @@ correctSemanticScore correctType - structureID + structureID @@ -245,7 +245,7 @@ correctSemanticScore correctType - structureID + structureID @@ -259,7 +259,7 @@ correctSemanticScore correctType - structureID + structureID @@ -273,7 +273,7 @@ correctSemanticScore correctType - structureID + structureID @@ -287,7 +287,7 @@ correctSemanticScore correctType - structureID + structureID @@ -301,7 +301,7 @@ correctSemanticScore correctType - structureID + structureID diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 3797897f..dc22de47 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -176,22 +176,11 @@ - structureID + structureID - - - The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry - of the document's Catalog dictionary - StructTreeRoot_size == 1 - - StructTreeRoot entry is not present in the document catalog - - - - Incorrect use of a paragraph @@ -258,7 +247,7 @@ correctSemanticScore correctType - structureID + structureID @@ -417,7 +406,7 @@ correctSemanticScore correctType - structureID + structureID @@ -508,7 +497,7 @@ correctSemanticScore correctType - structureID + structureID @@ -522,7 +511,7 @@ - structureID + structureID @@ -536,7 +525,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] - structureID + structureID @@ -550,7 +539,7 @@ - structureID + structureID @@ -564,7 +553,7 @@ - structureID + structureID @@ -578,7 +567,7 @@ - structureID + structureID @@ -592,7 +581,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0] errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1] - structureID + structureID @@ -606,7 +595,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0] errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1] - structureID + structureID @@ -620,7 +609,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0] errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1] - structureID + structureID @@ -634,7 +623,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0] errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1] - structureID + structureID @@ -648,7 +637,7 @@ - structureID + structureID @@ -662,7 +651,7 @@ - structureID + structureID @@ -676,7 +665,7 @@ - structureID + structureID @@ -690,7 +679,7 @@ - structureID + structureID @@ -704,7 +693,7 @@ - structureID + structureID @@ -718,7 +707,7 @@ correctSemanticScore correctType - structureID + structureID @@ -732,7 +721,7 @@ - structureID + structureID @@ -763,7 +752,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] - structureID + structureID @@ -777,7 +766,7 @@ errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] - structureID + structureID From 4cf28c2bdb23cada340206c848431950986d495b Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 21 Nov 2022 22:38:19 +0300 Subject: [PATCH 455/557] PDF/A validation. Split rules 6.7.8-3 - 6.7.8-6 --- .../verapdf-profile-6-1-3-t04.xml | 4 +- .../verapdf-profile-6-7-8-t02.xml | 8 +- .../verapdf-profile-6-7-8-t03.xml | 26 +- .../verapdf-profile-6-7-8-t04.xml | 35 +- .../verapdf-profile-6-7-8-t05.xml | 36 +- .../verapdf-profile-6-7-8-t06.xml | 32 +- .../verapdf-profile-6-7-8-t07.xml | 29 ++ .../verapdf-profile-6-7-8-t08.xml | 27 ++ .../verapdf-profile-6-7-8-t09.xml | 31 ++ .../verapdf-profile-6-7-8-t10.xml | 30 ++ .../verapdf-profile-6-7-8-t11.xml | 27 ++ .../verapdf-profile-6-7-8-t12.xml | 27 ++ .../verapdf-profile-6-7-8-t13.xml | 27 ++ .../verapdf-profile-6-7-8-t14.xml | 27 ++ .../verapdf-profile-6-7-8-t15.xml | 27 ++ .../verapdf-profile-6-7-8-t16.xml | 27 ++ .../verapdf-profile-6-7-8-t17.xml | 27 ++ .../verapdf-profile-6-7-8-t18.xml | 29 ++ .../verapdf-profile-6-7-8-t19.xml | 27 ++ .../verapdf-profile-6-4-3-t03.xml | 2 +- .../verapdf-profile-6-6-2-3-3-t01.xml | 8 +- .../verapdf-profile-6-6-2-3-3-t02.xml | 26 +- .../verapdf-profile-6-6-2-3-3-t03.xml | 29 +- .../verapdf-profile-6-6-2-3-3-t04.xml | 30 +- .../verapdf-profile-6-6-2-3-3-t05.xml | 26 +- .../verapdf-profile-6-6-2-3-3-t06.xml | 27 ++ .../verapdf-profile-6-6-2-3-3-t07.xml | 27 ++ .../verapdf-profile-6-6-2-3-3-t08.xml | 31 ++ .../verapdf-profile-6-6-2-3-3-t09.xml | 30 ++ .../verapdf-profile-6-6-2-3-3-t10.xml | 27 ++ .../verapdf-profile-6-6-2-3-3-t11.xml | 27 ++ .../verapdf-profile-6-6-2-3-3-t12.xml | 27 ++ .../verapdf-profile-6-6-2-3-3-t13.xml | 27 ++ .../verapdf-profile-6-6-2-3-3-t14.xml | 27 ++ .../verapdf-profile-6-6-2-3-3-t15.xml | 27 ++ .../verapdf-profile-6-6-2-3-3-t16.xml | 27 ++ .../verapdf-profile-6-6-2-3-3-t17.xml | 29 ++ .../verapdf-profile-6-6-2-3-3-t18.xml | 27 ++ PDF_A/PDFA-1A.xml | 312 +++++++++++++++--- PDF_A/PDFA-1B.xml | 312 +++++++++++++++--- PDF_A/PDFA-2A.xml | 302 ++++++++++++++--- PDF_A/PDFA-2B.xml | 302 ++++++++++++++--- PDF_A/PDFA-2U.xml | 302 ++++++++++++++--- PDF_A/PDFA-3A.xml | 302 ++++++++++++++--- PDF_A/PDFA-3B.xml | 302 ++++++++++++++--- PDF_A/PDFA-3U.xml | 302 ++++++++++++++--- 46 files changed, 2893 insertions(+), 527 deletions(-) create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t07.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t08.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t09.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t10.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t11.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t12.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t13.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t15.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t16.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t17.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t18.xml create mode 100644 PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t19.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t06.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t07.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t08.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t09.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t10.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t11.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t12.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t14.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t15.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t16.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t17.xml create mode 100644 PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t18.xml diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml index d1662d2c..659228eb 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml @@ -15,8 +15,8 @@ Last ID (%1) is present in the Linearized PDF and does not match the first page ID (%2) - lastID - firstPageID + lastIDValue + firstPageIDValue diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml index 4bb26300..c4f5f9c0 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t02.xml @@ -13,8 +13,12 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid type or prefix of the extension schema container - + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix + 'pdfaExtension' (prefix = %2) + + isValidBag + prefix + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml index 219a6e55..3e31bd7c 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml @@ -1,26 +1,24 @@
- ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - schema field + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'.
- The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && - (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && - (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && - (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isSchemaValidText == true && schemaPrefix == "pdfaSchema" - Invalid Extension Schema definition - + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + + schemaPrefix + isSchemaValidText + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml index 00f0ef8e..12f79308 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml @@ -1,29 +1,28 @@ -
- ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - The Property type is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text: internal or external), pdfaProperty:description (Text). +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - namespaceURI field + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'.
- + - The Property type defined is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && - (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" - Invalid extension schema Property type definition - + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + - + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml index e32f8d7e..6ed75d55 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml @@ -1,30 +1,28 @@ -
- ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - prefix field + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'.
- + - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && - (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isPrefixValidText == true && prefixPrefix == "pdfaSchema" - Invalid extension schema ValueType type definition - + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + - + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml index fa81d4d2..7db61096 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml @@ -1,26 +1,28 @@ -
- ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema Field type - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - property field + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'.
- + - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" - Invalid extension schema Field type definition - + Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + + propertyPrefix + isPropertyValidSeq + - + + + diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t07.xml new file mode 100644 index 00000000..ac255125 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t07.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - valueType field + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. +
+ + + + + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + + valueTypePrefix + isValueTypeValidSeq + + + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t08.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t08.xml new file mode 100644 index 00000000..97e85784 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t08.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - name field + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. +
+ + + + + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. + isNameValidText == true && namePrefix == "pdfaProperty" + + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t09.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t09.xml new file mode 100644 index 00000000..39e5351b --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t09.xml @@ -0,0 +1,31 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - valueType field + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. +
+ + + + + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or + value of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t10.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t10.xml new file mode 100644 index 00000000..466e5346 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t10.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - category field + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. +
+ + + + + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + isCategoryValidText == true && (category == "external" || category == "internal") && + categoryPrefix == "pdfaProperty" + + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or + has value different from external or internal (category value = %3) + + categoryPrefix + isCategoryValidText + category + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t11.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t11.xml new file mode 100644 index 00000000..ca3441ff --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t11.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - description field + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. +
+ + + + + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t12.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t12.xml new file mode 100644 index 00000000..b6c66a3e --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t12.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - type field + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. +
+ + + + + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. + isTypeValidText == true && typePrefix == "pdfaType" + + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + + typePrefix + isTypeValidText + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t13.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t13.xml new file mode 100644 index 00000000..a7f2826c --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t13.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - namespaceURI field + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. +
+ + + + + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml new file mode 100644 index 00000000..7691fabb --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - prefix field + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. +
+ + + + + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. + isPrefixValidText == true && prefixPrefix == "pdfaType" + + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t15.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t15.xml new file mode 100644 index 00000000..ac065153 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t15.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - description field + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. +
+ + + + + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. + isDescriptionValidText == true && descriptionPrefix == "pdfaType" + + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t16.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t16.xml new file mode 100644 index 00000000..19835165 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t16.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - field field + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. +
+ + + + + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' + (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + + fieldPrefix + isFieldValidSeq + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t17.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t17.xml new file mode 100644 index 00000000..6bd1aa44 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t17.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema Field type - name field + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. +
+ + + + + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. + isNameValidText == true && namePrefix == "pdfaField" + + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' + (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t18.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t18.xml new file mode 100644 index 00000000..d344bbf3 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t18.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema Field type - valueType field + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. +
+ + + + + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value + of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + +
diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t19.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t19.xml new file mode 100644 index 00000000..17709112 --- /dev/null +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t19.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema Field type - description field + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. +
+ + + + + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. + isDescriptionValidText == true && descriptionPrefix == "pdfaField" + + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + +
diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml index d9a735df..2a624ebe 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml @@ -16,7 +16,7 @@ SignerInfoCount == 1 The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + signer(s) in the PDF Signature instead of one SignerInfoCount diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t01.xml index c74be3f7..d70effef 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t01.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t01.xml @@ -13,8 +13,12 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid type or prefix of the extension schema container - + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix + 'pdfaExtension' (prefix = %2) + + isValidBag + prefix + diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml index b66b75bf..59b3ee58 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml @@ -1,26 +1,24 @@
- ISO 19005-2:2011 - 6.7.8 Extension schemas - Extension schema definition - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). + ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - schema field + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'.
- The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && - (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && - (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && - (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isSchemaValidText == true && schemaPrefix == "pdfaSchema" - Invalid Extension Schema definition - + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + + schemaPrefix + isSchemaValidText + diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml index 72b39f53..ddf8a875 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml @@ -1,27 +1,24 @@
- ISO 19005-2:2011 - 6.6.2.3 Extension schemas - Extension schema property - The Property type is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text: internal or external), pdfaProperty:description (Text). + ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - namespaceURI field + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'.
- + - The Property type defined is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && - (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" - Invalid extension schema Property type definition - + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml index b2d0cef5..b36af644 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml @@ -1,28 +1,24 @@
- ISO 19005-2:2011 - 6.6.2.3 Extension schemas - Extension schema ValueType type - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). + ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - prefix field + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'.
- + - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && - (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && - (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isPrefixValidText == true && prefixPrefix == "pdfaSchema" - Invalid extension schema ValueType type definition - + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml index 438d4500..3883b352 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml @@ -1,24 +1,24 @@
- ISO 19005-2:2011 - 6.6.2.3 Extension schemas - Extension schema Field type - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). + ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - property field + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'.
- + - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" - Invalid extension schema Field type definition - + Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + + propertyPrefix + isPropertyValidSeq + diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t06.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t06.xml new file mode 100644 index 00000000..1ccfe684 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t06.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - valueType field + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. +
+ + + + + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + + valueTypePrefix + isValueTypeValidSeq + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t07.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t07.xml new file mode 100644 index 00000000..42cf4537 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t07.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - name field + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. +
+ + + + + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. + isNameValidText == true && namePrefix == "pdfaProperty" + + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t08.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t08.xml new file mode 100644 index 00000000..ba1b9697 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t08.xml @@ -0,0 +1,31 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - valueType field + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. +
+ + + + + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or + value of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t09.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t09.xml new file mode 100644 index 00000000..b5108df3 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t09.xml @@ -0,0 +1,30 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - category field + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. +
+ + + + + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + isCategoryValidText == true && (category == "external" || category == "internal") && + categoryPrefix == "pdfaProperty" + + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or + has value different from external or internal (category value = %3) + + categoryPrefix + isCategoryValidText + category + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t10.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t10.xml new file mode 100644 index 00000000..e8525554 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t10.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - description field + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. +
+ + + + + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t11.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t11.xml new file mode 100644 index 00000000..448254d2 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t11.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - type field + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. +
+ + + + + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. + isTypeValidText == true && typePrefix == "pdfaType" + + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + + typePrefix + isTypeValidText + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t12.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t12.xml new file mode 100644 index 00000000..5c0ad363 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t12.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - namespaceURI field + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. +
+ + + + + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml new file mode 100644 index 00000000..646aeb1a --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - prefix field + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. +
+ + + + + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. + isPrefixValidText == true && prefixPrefix == "pdfaType" + + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t14.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t14.xml new file mode 100644 index 00000000..26400edb --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t14.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - description field + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. +
+ + + + + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. + isDescriptionValidText == true && descriptionPrefix == "pdfaType" + + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t15.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t15.xml new file mode 100644 index 00000000..a0d385ab --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t15.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - field field + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. +
+ + + + + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' + (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + + fieldPrefix + isFieldValidSeq + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t16.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t16.xml new file mode 100644 index 00000000..71c7d4a9 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t16.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema Field type - name field + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. +
+ + + + + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. + isNameValidText == true && namePrefix == "pdfaField" + + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' + (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t17.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t17.xml new file mode 100644 index 00000000..e2992899 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t17.xml @@ -0,0 +1,29 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema Field type - valueType field + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. +
+ + + + + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value + of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + +
diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t18.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t18.xml new file mode 100644 index 00000000..f61fd362 --- /dev/null +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t18.xml @@ -0,0 +1,27 @@ + + +
+ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema Field type - description field + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. +
+ + + + + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. + isDescriptionValidText == true && descriptionPrefix == "pdfaField" + + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + +
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index b8b72828..6e27e58f 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -80,8 +80,8 @@ Last ID (%1) is present in the Linearized PDF and does not match the first page ID (%2) - lastID - firstPageID + lastIDValue + firstPageIDValue @@ -1328,8 +1328,12 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid type or prefix of the extension schema container - + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix + 'pdfaExtension' (prefix = %2) + + isValidBag + prefix + @@ -1337,66 +1341,274 @@
- The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && - (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && - (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && - (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) - - Invalid Extension Schema definition - + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isSchemaValidText == true && schemaPrefix == "pdfaSchema" + + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + + schemaPrefix + isSchemaValidText + - + - The Property type defined is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && - (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) - - Invalid extension schema Property type definition - + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + + + + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isPrefixValidText == true && prefixPrefix == "pdfaSchema" + + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + + + + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + + Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + + propertyPrefix + isPropertyValidSeq + + + + + + + + + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + + valueTypePrefix + isValueTypeValidSeq + + + + + + + + + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. + isNameValidText == true && namePrefix == "pdfaProperty" + + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or + value of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + isCategoryValidText == true && (category == "external" || category == "internal") && + categoryPrefix == "pdfaProperty" + + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or + has value different from external or internal (category value = %3) + + categoryPrefix + isCategoryValidText + category + + + + + + + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + - - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && - (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) - - Invalid extension schema ValueType type definition - + + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. + isTypeValidText == true && typePrefix == "pdfaType" + + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + + typePrefix + isTypeValidText + + + + + + + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. + isPrefixValidText == true && prefixPrefix == "pdfaType" + + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. + isDescriptionValidText == true && descriptionPrefix == "pdfaType" + + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' + (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + + fieldPrefix + isFieldValidSeq + - - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) - - Invalid extension schema Field type definition - + + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. + isNameValidText == true && namePrefix == "pdfaField" + + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' + (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value + of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. + isDescriptionValidText == true && descriptionPrefix == "pdfaField" + + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 2ee8763a..1605e0d7 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -80,8 +80,8 @@ Last ID (%1) is present in the Linearized PDF and does not match the first page ID (%2) - lastID - firstPageID + lastIDValue + firstPageIDValue @@ -1314,8 +1314,12 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid type or prefix of the extension schema container - + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix + 'pdfaExtension' (prefix = %2) + + isValidBag + prefix + @@ -1323,66 +1327,274 @@ - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && - (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && - (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && - (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) - - Invalid Extension Schema definition - + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isSchemaValidText == true && schemaPrefix == "pdfaSchema" + + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + + schemaPrefix + isSchemaValidText + - + - The Property type defined is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && - (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) - - Invalid extension schema Property type definition - + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + + + + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isPrefixValidText == true && prefixPrefix == "pdfaSchema" + + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + + + + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + + Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + + propertyPrefix + isPropertyValidSeq + + + + + + + + + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + + valueTypePrefix + isValueTypeValidSeq + + + + + + + + + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. + isNameValidText == true && namePrefix == "pdfaProperty" + + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or + value of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + isCategoryValidText == true && (category == "external" || category == "internal") && + categoryPrefix == "pdfaProperty" + + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or + has value different from external or internal (category value = %3) + + categoryPrefix + isCategoryValidText + category + + + + + + + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + - - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && - (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType" ) && - (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) - - Invalid extension schema ValueType type definition - + + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. + isTypeValidText == true && typePrefix == "pdfaType" + + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + + typePrefix + isTypeValidText + + + + + + + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. + isPrefixValidText == true && prefixPrefix == "pdfaType" + + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. + isDescriptionValidText == true && descriptionPrefix == "pdfaType" + + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' + (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + + fieldPrefix + isFieldValidSeq + - - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) - - Invalid extension schema Field type definition - + + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. + isNameValidText == true && namePrefix == "pdfaField" + + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' + (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value + of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. + isDescriptionValidText == true && descriptionPrefix == "pdfaField" + + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 6aea6456..bd6fb8d2 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1369,7 +1369,7 @@ SignerInfoCount == 1 The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1531,71 +1531,275 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid type or prefix of the extension schema container - + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix + 'pdfaExtension' (prefix = %2) + + isValidBag + prefix + - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && - (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && - (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && - (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) - - Invalid Extension Schema definition - + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isSchemaValidText == true && schemaPrefix == "pdfaSchema" + + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + + schemaPrefix + isSchemaValidText + - + - The Property type defined is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && - (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) - - Invalid extension schema Property type definition - + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + - + - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && - (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && - (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) - - Invalid extension schema ValueType type definition - + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isPrefixValidText == true && prefixPrefix == "pdfaSchema" + + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + - + - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) - - Invalid extension schema Field type definition - + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + + Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + + propertyPrefix + isPropertyValidSeq + + + + + + + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + + valueTypePrefix + isValueTypeValidSeq + + + + + + + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. + isNameValidText == true && namePrefix == "pdfaProperty" + + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or + value of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + isCategoryValidText == true && (category == "external" || category == "internal") && + categoryPrefix == "pdfaProperty" + + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or + has value different from external or internal (category value = %3) + + categoryPrefix + isCategoryValidText + category + + + + + + + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. + isTypeValidText == true && typePrefix == "pdfaType" + + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + + typePrefix + isTypeValidText + + + + + + + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. + isPrefixValidText == true && prefixPrefix == "pdfaType" + + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. + isDescriptionValidText == true && descriptionPrefix == "pdfaType" + + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' + (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + + fieldPrefix + isFieldValidSeq + + + + + + + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. + isNameValidText == true && namePrefix == "pdfaField" + + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' + (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value + of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. + isDescriptionValidText == true && descriptionPrefix == "pdfaField" + + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 988bf0a3..974438d4 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1331,7 +1331,7 @@ SignerInfoCount == 1 The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1493,71 +1493,275 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid type or prefix of the extension schema container - + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix + 'pdfaExtension' (prefix = %2) + + isValidBag + prefix + - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && - (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && - (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && - (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) - - Invalid Extension Schema definition - + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isSchemaValidText == true && schemaPrefix == "pdfaSchema" + + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + + schemaPrefix + isSchemaValidText + - + - The Property type defined is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && - (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) - - Invalid extension schema Property type definition - + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + - + - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && - (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && - (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) - - Invalid extension schema ValueType type definition - + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isPrefixValidText == true && prefixPrefix == "pdfaSchema" + + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + - + - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) - - Invalid extension schema Field type definition - + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + + Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + + propertyPrefix + isPropertyValidSeq + + + + + + + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + + valueTypePrefix + isValueTypeValidSeq + + + + + + + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. + isNameValidText == true && namePrefix == "pdfaProperty" + + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or + value of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + isCategoryValidText == true && (category == "external" || category == "internal") && + categoryPrefix == "pdfaProperty" + + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or + has value different from external or internal (category value = %3) + + categoryPrefix + isCategoryValidText + category + + + + + + + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. + isTypeValidText == true && typePrefix == "pdfaType" + + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + + typePrefix + isTypeValidText + + + + + + + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. + isPrefixValidText == true && prefixPrefix == "pdfaType" + + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. + isDescriptionValidText == true && descriptionPrefix == "pdfaType" + + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' + (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + + fieldPrefix + isFieldValidSeq + + + + + + + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. + isNameValidText == true && namePrefix == "pdfaField" + + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' + (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value + of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. + isDescriptionValidText == true && descriptionPrefix == "pdfaField" + + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index afb73b25..5eadd964 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1354,7 +1354,7 @@ SignerInfoCount == 1 The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1516,71 +1516,275 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid type or prefix of the extension schema container - + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix + 'pdfaExtension' (prefix = %2) + + isValidBag + prefix + - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && - (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && - (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && - (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) - - Invalid Extension Schema definition - + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isSchemaValidText == true && schemaPrefix == "pdfaSchema" + + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + + schemaPrefix + isSchemaValidText + - + - The Property type defined is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && - (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) - - Invalid extension schema Property type definition - + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + - + - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && - (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && - (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) - - Invalid extension schema ValueType type definition - + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isPrefixValidText == true && prefixPrefix == "pdfaSchema" + + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + - + - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) - - Invalid extension schema Field type definition - + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + + Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + + propertyPrefix + isPropertyValidSeq + + + + + + + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + + valueTypePrefix + isValueTypeValidSeq + + + + + + + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. + isNameValidText == true && namePrefix == "pdfaProperty" + + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or + value of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + isCategoryValidText == true && (category == "external" || category == "internal") && + categoryPrefix == "pdfaProperty" + + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or + has value different from external or internal (category value = %3) + + categoryPrefix + isCategoryValidText + category + + + + + + + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. + isTypeValidText == true && typePrefix == "pdfaType" + + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + + typePrefix + isTypeValidText + + + + + + + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. + isPrefixValidText == true && prefixPrefix == "pdfaType" + + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. + isDescriptionValidText == true && descriptionPrefix == "pdfaType" + + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' + (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + + fieldPrefix + isFieldValidSeq + + + + + + + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. + isNameValidText == true && namePrefix == "pdfaField" + + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' + (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value + of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. + isDescriptionValidText == true && descriptionPrefix == "pdfaField" + + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index eb44c33e..b7071a85 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1369,7 +1369,7 @@ SignerInfoCount == 1 The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1531,71 +1531,275 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid type or prefix of the extension schema container - + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix + 'pdfaExtension' (prefix = %2) + + isValidBag + prefix + - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && - (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && - (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && - (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) - - Invalid Extension Schema definition - + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isSchemaValidText == true && schemaPrefix == "pdfaSchema" + + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + + schemaPrefix + isSchemaValidText + - + - The Property type defined is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && - (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) - - Invalid extension schema Property type definition - + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + - + - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && - (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && - (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) - - Invalid extension schema ValueType type definition - + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isPrefixValidText == true && prefixPrefix == "pdfaSchema" + + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + - + - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) - - Invalid extension schema Field type definition - + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + + Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + + propertyPrefix + isPropertyValidSeq + + + + + + + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + + valueTypePrefix + isValueTypeValidSeq + + + + + + + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. + isNameValidText == true && namePrefix == "pdfaProperty" + + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or + value of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + isCategoryValidText == true && (category == "external" || category == "internal") && + categoryPrefix == "pdfaProperty" + + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or + has value different from external or internal (category value = %3) + + categoryPrefix + isCategoryValidText + category + + + + + + + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. + isTypeValidText == true && typePrefix == "pdfaType" + + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + + typePrefix + isTypeValidText + + + + + + + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. + isPrefixValidText == true && prefixPrefix == "pdfaType" + + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. + isDescriptionValidText == true && descriptionPrefix == "pdfaType" + + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' + (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + + fieldPrefix + isFieldValidSeq + + + + + + + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. + isNameValidText == true && namePrefix == "pdfaField" + + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' + (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value + of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. + isDescriptionValidText == true && descriptionPrefix == "pdfaField" + + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 4d978626..9cd37517 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1331,7 +1331,7 @@ SignerInfoCount == 1 The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1493,71 +1493,275 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid type or prefix of the extension schema container - + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix + 'pdfaExtension' (prefix = %2) + + isValidBag + prefix + - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && - (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && - (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && - (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) - - Invalid Extension Schema definition - + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isSchemaValidText == true && schemaPrefix == "pdfaSchema" + + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + + schemaPrefix + isSchemaValidText + - + - The Property type defined is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && - (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) - - Invalid extension schema Property type definition - + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + - + - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && - (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && - (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) - - Invalid extension schema ValueType type definition - + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isPrefixValidText == true && prefixPrefix == "pdfaSchema" + + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + - + - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) - - Invalid extension schema Field type definition - + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + + Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + + propertyPrefix + isPropertyValidSeq + + + + + + + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + + valueTypePrefix + isValueTypeValidSeq + + + + + + + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. + isNameValidText == true && namePrefix == "pdfaProperty" + + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or + value of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + isCategoryValidText == true && (category == "external" || category == "internal") && + categoryPrefix == "pdfaProperty" + + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or + has value different from external or internal (category value = %3) + + categoryPrefix + isCategoryValidText + category + + + + + + + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. + isTypeValidText == true && typePrefix == "pdfaType" + + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + + typePrefix + isTypeValidText + + + + + + + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. + isPrefixValidText == true && prefixPrefix == "pdfaType" + + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. + isDescriptionValidText == true && descriptionPrefix == "pdfaType" + + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' + (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + + fieldPrefix + isFieldValidSeq + + + + + + + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. + isNameValidText == true && namePrefix == "pdfaField" + + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' + (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value + of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. + isDescriptionValidText == true && descriptionPrefix == "pdfaField" + + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 65efdf0a..770edd66 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1354,7 +1354,7 @@ SignerInfoCount == 1 The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) (e.g. a single "SignerInfo" structure) in the PDF Signature instead of one + signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1516,71 +1516,275 @@ The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas isValidBag == true && prefix == "pdfaExtension" - Invalid type or prefix of the extension schema container - + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix + 'pdfaExtension' (prefix = %2) + + isValidBag + prefix + - The Schema type is an XMP structure containing the definition of an extension schema. The field namespace URI is "http://www.aiim.org/pdfa/ns/schema#". - The required field namespace prefix is pdfaSchema. The Schema type includes the following fields: pdfaSchema:schema (Text), pdfaSchema:namespaceURI (URI), pdfaSchema:prefix (Text), - pdfaSchema:property (Seq Property), pdfaSchema:valueType (Seq ValueType). - (isSchemaValidText == true && schemaPrefix == "pdfaSchema") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && - (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && - (isPropertyValidSeq == true && propertyPrefix == "pdfaSchema") && - (isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") ) - - Invalid Extension Schema definition - + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isSchemaValidText == true && schemaPrefix == "pdfaSchema" + + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + + schemaPrefix + isSchemaValidText + - + - The Property type defined is an XMP structure containing the definition of a schema property. The - field namespace URI is "http://www.aiim.org/pdfa/ns/property#". The required field namespace prefix is - pdfaProperty. The Property type includes the following fields: pdfaProperty:name (Text), pdfaProperty:valueType (Open Choice of Text), - pdfaProperty:category (Closed Choice of Text), pdfaProperty:description (Text). - (isNameValidText == true && namePrefix == "pdfaProperty" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" ) && - (isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" ) - - Invalid extension schema Property type definition - + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaSchema'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + - + - The ValueType type is an XMP structure containing the definition of all property value - types used by embedded extension schemas that are not defined in the XMP Specification. The field namespace URI is "http://www.aiim.org/pdfa/ns/type#". - The required field namespace prefix is pdfaType. The ValueType type includes the following fields: pdfaType:type (Text), pdfaType:namespaceURI (URI), - pdfaType:prefix (Text), pdfaType:description (Text), pdfaType:field (Seq Field). - (isTypeValidText == true && typePrefix == "pdfaType") && - (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType") && - (isPrefixValidText == true && prefixPrefix == "pdfaType") && - (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && - (isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") ) - - Invalid extension schema ValueType type definition - + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaSchema'. + isPrefixValidText == true && prefixPrefix == "pdfaSchema" + + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + - + - The Field type defined in Table 6 is an XMP structure containing the definition of a property value type field. The field - namespace URI is "http://www.aiim.org/pdfa/ns/field#". The required field namespace prefix is pdfaField. The Field type contains the following fields: - pdfaField:name (Text), pdfaField:valueType (Open Choice of Text), pdfaField:description (Text). - (isNameValidText == true && namePrefix == "pdfaField" ) && - (isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" ) && - (isDescriptionValidText == true && descriptionPrefix == "pdfaField" ) - - Invalid extension schema Field type definition - + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present + and shall have type Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + + Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix + 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + + propertyPrefix + isPropertyValidSeq + + + + + + + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq ValueType and namespace prefix 'pdfaSchema'. + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + + valueTypePrefix + isValueTypeValidSeq + + + + + + + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaProperty'. + isNameValidText == true && namePrefix == "pdfaProperty" + + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall + be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or + value of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + isCategoryValidText == true && (category == "external" || category == "internal") && + categoryPrefix == "pdfaProperty" + + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or + has value different from external or internal (category value = %3) + + categoryPrefix + isCategoryValidText + category + + + + + + + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaProperty'. + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix + 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present + and shall have type Text and namespace prefix 'pdfaType'. + isTypeValidText == true && typePrefix == "pdfaType" + + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + + typePrefix + isTypeValidText + + + + + + + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type URI and namespace prefix 'pdfaType'. + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + + namespaceURIPrefix + isNamespaceURIValidURI + + + + + + + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + shall have type Text and namespace prefix 'pdfaType'. + isPrefixValidText == true && prefixPrefix == "pdfaType" + + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + + prefixPrefix + isPrefixValidText + + + + + + + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be + present and shall have type Text and namespace prefix 'pdfaType'. + isDescriptionValidText == true && descriptionPrefix == "pdfaType" + + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix + 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + + + + + + + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type + Seq Field and namespace prefix 'pdfaType'. + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' + (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + + fieldPrefix + isFieldValidSeq + + + + + + + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text + and namespace prefix 'pdfaField'. + isNameValidText == true && namePrefix == "pdfaField" + + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' + (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + + namePrefix + isNameValidText + + + + + + + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value + of valueType doesn't defined (isValueTypeDefined = %3) + + valueTypePrefix + isValueTypeValidText + isValueTypeDefined + + + + + + + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type + Text and namespace prefix 'pdfaField'. + isDescriptionValidText == true && descriptionPrefix == "pdfaField" + + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix + 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + + descriptionPrefix + isDescriptionValidText + From ab6c5729b5c19fce5da823be0751b9f249591175 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 23 Dec 2022 11:50:58 +0300 Subject: [PATCH 456/557] WCAG validation. Add rules 4.1.2-52, 4.1.2-53 --- PDF_UA/WCAG-21-Complete.xml | 64 ++++++++++++++++++++++++------------- PDF_UA/WCAG-21.xml | 64 ++++++++++++++++++++++++------------- 2 files changed, 82 insertions(+), 46 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index dc2cfdf5..053972b6 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -42,10 +42,10 @@ - If text has a different style, it shall be tagged as Span + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element hasSpecialStyle == false - Text has a different style and not tagged as Span + Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element @@ -184,7 +184,7 @@ Incorrect use of a paragraph - correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -197,7 +197,7 @@ Incorrect use of a span - correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -210,7 +210,7 @@ Incorrect use of a heading - correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -223,7 +223,7 @@ Incorrect use of a numbered heading - correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -240,8 +240,7 @@ ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || - parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) || (standardType == 'TOC' || - parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) + parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) score = %1, correct type = %2, structure id = %3 @@ -255,7 +254,7 @@ This structure element should be a heading instead of a paragraph - correctType != 'H' && correctType != 'Hn' + (correctType != 'H' && correctType != 'Hn') || correctSemanticScore < 0.75 score = %1, correct type = %2 @@ -399,8 +398,7 @@ The structure type and attributes of list elements shall be semantically appropriate. hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && - correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) || (standardType == 'TOC' || - parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) + correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') score = %1, correct type = %2, structure id = %3 @@ -414,10 +412,10 @@ The structure type and attributes of a list shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || - correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || + correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || + correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || + correctType == 'TOCI' score = %1, correct type = %2 @@ -430,10 +428,10 @@ The structure type and attributes of a list item shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || - correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || + correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || + correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || + correctType == 'TOCI' score = %1, correct type = %2 @@ -446,10 +444,10 @@ The structure type and attributes of a list body shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || - correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || + correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || + correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || + correctType == 'TOCI' score = %1, correct type = %2 @@ -797,6 +795,26 @@ + + + The structure type and attributes of a list item shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1202).length == 0 + + This list item should be tagged as several different list items + + + + + + + This structure element should be a note instead of a span + correctType != 'Note' + + This structure element should be a note instead of a span + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index dc22de47..9fc50d8e 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -42,10 +42,10 @@ - If text has a different style, it shall be tagged as Span + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element hasSpecialStyle == false - Text has a different style and not tagged as Span + Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element @@ -184,7 +184,7 @@ Incorrect use of a paragraph - correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -197,7 +197,7 @@ Incorrect use of a span - correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -210,7 +210,7 @@ Incorrect use of a heading - correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -223,7 +223,7 @@ Incorrect use of a numbered heading - correctSemanticScore >= 0.75 + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -240,8 +240,7 @@ ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || - parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) || (standardType == 'TOC' || - parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) + parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) score = %1, correct type = %2, structure id = %3 @@ -255,7 +254,7 @@ This structure element should be a heading instead of a paragraph - correctType != 'H' && correctType != 'Hn' + (correctType != 'H' && correctType != 'Hn') || correctSemanticScore < 0.75 score = %1, correct type = %2 @@ -399,8 +398,7 @@ The structure type and attributes of list elements shall be semantically appropriate. hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && - correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) || (standardType == 'TOC' || - parentsStandardTypes.split('&').filter(elem => elem == 'TOC').length > 0) + correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') score = %1, correct type = %2, structure id = %3 @@ -414,10 +412,10 @@ The structure type and attributes of a list shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'LI' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || - correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || + correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || + correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || + correctType == 'TOCI' score = %1, correct type = %2 @@ -430,10 +428,10 @@ The structure type and attributes of a list item shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || - correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || + correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || + correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || + correctType == 'TOCI' score = %1, correct type = %2 @@ -446,10 +444,10 @@ The structure type and attributes of a list body shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || - correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || - correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || + correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || + correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || + correctType == 'TOCI' score = %1, correct type = %2 @@ -797,6 +795,26 @@ + + + The structure type and attributes of a list item shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1202).length == 0 + + This list item should be tagged as several different list items + + + + + + + This structure element should be a note instead of a span + correctType != 'Note' + + This structure element should be a note instead of a span + + + +
From e8ac49d93cd40ac0da838b68cf4913168a50bbf1 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 23 Dec 2022 15:20:58 +0300 Subject: [PATCH 457/557] WCAG validation. Update profiles --- PDF_UA/WCAG-21-Complete.xml | 22 +++++++++++----------- PDF_UA/WCAG-21.xml | 22 +++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 053972b6..fc74e4e5 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -184,7 +184,7 @@ Incorrect use of a paragraph - correctSemanticScore >= 0.75 || correctType == null + correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' score = %1, correct type = %2 @@ -254,7 +254,7 @@ This structure element should be a heading instead of a paragraph - (correctType != 'H' && correctType != 'Hn') || correctSemanticScore < 0.75 + correctType != 'H' && correctType != 'Hn' score = %1, correct type = %2 @@ -398,7 +398,7 @@ The structure type and attributes of list elements shall be semantically appropriate. hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && - correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') + correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) score = %1, correct type = %2, structure id = %3 @@ -414,8 +414,8 @@ The structure type and attributes of a list shall be semantically appropriate. hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || - correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || - correctType == 'TOCI' + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -429,9 +429,9 @@ The structure type and attributes of a list item shall be semantically appropriate. hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || - correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || - correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || - correctType == 'TOCI' + correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || + correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -445,9 +445,9 @@ The structure type and attributes of a list body shall be semantically appropriate. hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || - correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || - correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || - correctType == 'TOCI' + correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || + correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 9fc50d8e..f921f3ed 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -184,7 +184,7 @@ Incorrect use of a paragraph - correctSemanticScore >= 0.75 || correctType == null + correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' score = %1, correct type = %2 @@ -254,7 +254,7 @@ This structure element should be a heading instead of a paragraph - (correctType != 'H' && correctType != 'Hn') || correctSemanticScore < 0.75 + correctType != 'H' && correctType != 'Hn' score = %1, correct type = %2 @@ -398,7 +398,7 @@ The structure type and attributes of list elements shall be semantically appropriate. hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && - correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') + correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) score = %1, correct type = %2, structure id = %3 @@ -414,8 +414,8 @@ The structure type and attributes of a list shall be semantically appropriate. hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || - correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || - correctType == 'TOCI' + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -429,9 +429,9 @@ The structure type and attributes of a list item shall be semantically appropriate. hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || - correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || - correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || - correctType == 'TOCI' + correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || + correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -445,9 +445,9 @@ The structure type and attributes of a list body shall be semantically appropriate. hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || - correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || - correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || - correctType == 'TOCI' + correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || + correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 From d2a55fb0bec8a80a7c038c6226faf7be253161bd Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 13 Jan 2023 11:48:17 +0300 Subject: [PATCH 458/557] WCAG validation. Add rule 4.1.2-54 --- PDF_UA/WCAG-21-Complete.xml | 10 ++++++++++ PDF_UA/WCAG-21.xml | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index fc74e4e5..b985613e 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -815,6 +815,16 @@ + + + This structure element should be a note instead of a paragraph + correctType != 'Note' + + This structure element should be a note instead of a paragraph + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index f921f3ed..fd6041e5 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -815,6 +815,16 @@ + + + This structure element should be a note instead of a paragraph + correctType != 'Note' + + This structure element should be a note instead of a paragraph + + + +
From 00563f7a3c3d771a98af6b5d2fc41459e73b930a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 19 Jan 2023 17:10:38 +0300 Subject: [PATCH 459/557] PDF/A validation. Update rules 6.7.8-14, 6.6.2.3.3-13 --- .../6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml | 4 ++-- .../verapdf-profile-6-6-2-3-3-t13.xml | 4 ++-- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml index 7691fabb..a6f5f311 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml @@ -2,14 +2,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - prefix field - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'.
- Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'. isPrefixValidText == true && prefixPrefix == "pdfaType" diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml index 646aeb1a..9b2a5e3c 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml @@ -2,14 +2,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - prefix field - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'.
- Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'. isPrefixValidText == true && prefixPrefix == "pdfaType" diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 6e27e58f..70a542b8 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1522,7 +1522,7 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'. isPrefixValidText == true && prefixPrefix == "pdfaType" diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 1605e0d7..2137151a 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1508,7 +1508,7 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'. isPrefixValidText == true && prefixPrefix == "pdfaType" diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index bd6fb8d2..ce46f3b9 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1713,7 +1713,7 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'. isPrefixValidText == true && prefixPrefix == "pdfaType" diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 974438d4..50040339 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1675,7 +1675,7 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'. isPrefixValidText == true && prefixPrefix == "pdfaType" diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 5eadd964..0fa1dd55 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1698,7 +1698,7 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'. isPrefixValidText == true && prefixPrefix == "pdfaType" diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index b7071a85..8a9e4014 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1713,7 +1713,7 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'. isPrefixValidText == true && prefixPrefix == "pdfaType" diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 9cd37517..3c202f1c 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1675,7 +1675,7 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'. isPrefixValidText == true && prefixPrefix == "pdfaType" diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 770edd66..72df09e1 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1698,7 +1698,7 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema be present and + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType'. isPrefixValidText == true && prefixPrefix == "pdfaType" From 23bf506a5bfaef4d1619060637fb7209364aed73 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 22 Mar 2023 14:58:18 +0300 Subject: [PATCH 460/557] WCAG validation. Disable rules for Figure about small text and different text styles --- PDF_UA/WCAG-21-Complete.xml | 11 +++++------ PDF_UA/WCAG-21.xml | 11 +++++------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index b985613e..c0e8d11d 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -33,7 +33,7 @@ Underlined text - parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 || isUnderlined == false + isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 Underlined text is detected @@ -43,7 +43,7 @@ If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element - hasSpecialStyle == false + hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element @@ -66,9 +66,8 @@ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 || - textSize < 4.5 || ((textSize >= 18.0 || - (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : + (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 contrastRatio = %1 @@ -81,7 +80,7 @@ Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality. - textSize >= 4.5 || isWhiteSpaceChunk == true + textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 textSize = %1 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index fd6041e5..42b4d011 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -33,7 +33,7 @@ Underlined text - parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 || isUnderlined == false + isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 Underlined text is detected @@ -43,7 +43,7 @@ If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element - hasSpecialStyle == false + hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element @@ -66,9 +66,8 @@ The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 || - textSize < 4.5 || ((textSize >= 18.0 || - (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : + (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 contrastRatio = %1 @@ -81,7 +80,7 @@ Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality. - textSize >= 4.5 || isWhiteSpaceChunk == true + textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 textSize = %1 From 96e435065933cf7c54f4289df58c2964e892c841 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 29 Mar 2023 14:51:33 +0300 Subject: [PATCH 461/557] WCAG validation. Add rule about heading --- PDF_UA/WCAG-21-Complete.xml | 11 +++++++++++ PDF_UA/WCAG-21.xml | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index c0e8d11d..af745b32 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -824,6 +824,17 @@ + + + The structure type and attributes of a heading shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1300).length == 0 + + This node is the single child with content. One of its ancestor nodes should be tagged as heading + instead of this one + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 42b4d011..4902ad3a 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -824,6 +824,17 @@ + + + The structure type and attributes of a heading shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1300).length == 0 + + This node is the single child with content. One of its ancestor nodes should be tagged as heading + instead of this one + + + + From 194a3c356bf8bf6b44add09c649323d01e5d1c8b Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 1 Dec 2022 23:18:11 +0300 Subject: [PATCH 462/557] PDF/UA validation. Split rules about table --- .../7.2 Text/verapdf-profile-7-2-t03-t15.xml | 9 +-- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml | 25 ++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml | 25 ++++++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml | 27 +++++++ .../1/7.5 Tables/verapdf-profile-7-5-t01.xml | 11 ++- .../1/7.5 Tables/verapdf-profile-7-5-t02.xml | 28 +++++++ PDF_UA/PDFUA-1.xml | 80 +++++++++++++++--- PDF_UA/WCAG-21-Complete.xml | 81 ++++++++++++++++--- 8 files changed, 258 insertions(+), 28 deletions(-) create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml create mode 100644 PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml index 9a1a0f8d..384b4708 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml @@ -170,13 +170,12 @@
- + - Tables shall be regular, that is have the same number of cells in each row after accounting - for rowspan and colspan attributes. - isRegular == true + Table cell shall not have intersection with other cells + hasIntersection != true - Irregular table found + Table cell has intersection with other cells diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml new file mode 100644 index 00000000..4bcc9281 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Regular Table + Table columns shall have the same number of rows (taking into account row spans) +
+ + + + + Table columns shall have the same number of rows (taking into account row spans) + numberOfColumnWithWrongRowSpan == null + + Table columns 1 and %1 span different number of rows + + numberOfColumnWithWrongRowSpan + 1 + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml new file mode 100644 index 00000000..a35301f0 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Regular Table + Table rows shall have the same number of columns (taking into account column spans) +
+ + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null + + Table rows 1 and %1 span different number of columns + + numberOfRowWithWrongColumnSpan + 1 + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml new file mode 100644 index 00000000..9d0c5ed4 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Regular Table + Table rows shall have the same number of columns (taking into account column spans) +
+ + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null + + Table rows 1 and %1 span different number of columns (%2 and %3 respectively) + + numberOfRowWithWrongColumnSpan + 1 + columnSpan + wrongColumnSpan + + + + + + + + +
diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml index d8bb621a..20360561 100644 --- a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml +++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml @@ -7,15 +7,18 @@
- + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute - useHeadersAndIdOrScope == true + hasConnectedHeader != false || unknownHeaders != '' - In a table not organized with Headers attributes and IDs, a TH cell does not contain a Scope attribute - + TD does not contain Headers attribute, and Headers for this table cell can not be determined + via algorithm from ISO32000-2, 14.8.4.8.3. + + + diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml new file mode 100644 index 00000000..37ae1963 --- /dev/null +++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml @@ -0,0 +1,28 @@ + + +
+ ISO 14289-1:2014 - 7.5 Tables - Headers, IDs and Scope + If the table's structure is not determinable via Headers and IDs, + then structure elements of type TH shall have a Scope attribute +
+ + + + + If the table's structure is not determinable via Headers and IDs, + then structure elements of type TH shall have a Scope attribute + hasConnectedHeader != false || unknownHeaders == '' + + TD references undefined Header(s) %1, and Headers for this table cell can not be determined + via algorithm from ISO32000-2, 14.8.4.8.3. + + unknownHeaders + + + + + + + + +
diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 7580919b..002104a5 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -345,13 +345,12 @@ - + - Tables shall be regular, that is have the same number of cells in each row after accounting - for rowspan and colspan attributes. - isRegular == true + Table cell shall not have intersection with other cells + hasIntersection != true - Irregular table found + Table cell has intersection with other cells @@ -663,6 +662,50 @@ + + + Table columns shall have the same number of rows (taking into account row spans) + numberOfColumnWithWrongRowSpan == null + + Table columns 1 and %1 span different number of rows + + numberOfColumnWithWrongRowSpan + 1 + + + + + + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null + + Table rows 1 and %1 span different number of columns + + numberOfRowWithWrongColumnSpan + 1 + + + + + + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null + + Table rows 1 and %1 span different number of columns (%2 and %3 respectively) + + numberOfRowWithWrongColumnSpan + 1 + columnSpan + wrongColumnSpan + + + + + + Figure tags shall include an alternative representation or replacement text that represents the contents @@ -728,15 +771,34 @@ - + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute - useHeadersAndIdOrScope == true + hasConnectedHeader != false || unknownHeaders != '' - In a table not organized with Headers attributes and IDs, a TH cell does not contain a Scope attribute - + TD does not contain Headers attribute, and Headers for this table cell can not be determined + via algorithm from ISO32000-2, 14.8.4.8.3. + + + + + + + If the table's structure is not determinable via Headers and IDs, + then structure elements of type TH shall have a Scope attribute + hasConnectedHeader != false || unknownHeaders == '' + + TD references undefined Header(s) %1, and Headers for this table cell can not be determined + via algorithm from ISO32000-2, 14.8.4.8.3. + + unknownHeaders + + + + + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index af745b32..8079b631 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1206,20 +1206,18 @@ - + - Tables shall be regular, that is have the same number of cells in each row after accounting - for rowspan and colspan attributes. - isRegular == true + Table cell shall not have intersection with other cells + hasIntersection != true - Irregular table found + Table cell has intersection with other cells - Table element may contain a Caption element as its first or last kid @@ -1550,6 +1548,50 @@ + + + Table columns shall have the same number of rows (taking into account row spans) + numberOfColumnWithWrongRowSpan == null + + Table columns 1 and %1 span different number of rows + + numberOfColumnWithWrongRowSpan + 1 + + + + + + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null + + Table rows 1 and %1 span different number of columns + + numberOfRowWithWrongColumnSpan + 1 + + + + + + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null + + Table rows 1 and %1 span different number of columns (%2 and %3 respectively) + + numberOfRowWithWrongColumnSpan + 1 + columnSpan + wrongColumnSpan + + + + + + Figure tags shall include an alternative representation or replacement text that represents the contents @@ -1615,15 +1657,34 @@ - + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute - useHeadersAndIdOrScope == true + hasConnectedHeader != false || unknownHeaders != '' - In a table not organized with Headers attributes and IDs, a TH cell does not contain a Scope attribute - + TD does not contain Headers attribute, and Headers for this table cell can not be determined + via algorithm from ISO32000-2, 14.8.4.8.3. + + + + + + + If the table's structure is not determinable via Headers and IDs, + then structure elements of type TH shall have a Scope attribute + hasConnectedHeader != false || unknownHeaders == '' + + TD references undefined Header(s) %1, and Headers for this table cell can not be determined + via algorithm from ISO32000-2, 14.8.4.8.3. + + unknownHeaders + + + + + From 331520474a49767ee56ffda7eaaaa8e1ca0eabc9 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 13 Apr 2023 17:54:38 +0300 Subject: [PATCH 463/557] PDF/A validation. Update error messages for rules 6.2.3.2-1(PDF/A-1),6.2.3-1,6.2.4.2-1(PDF/A-2,3,4) --- .../verapdf-profile-6-2-3-2-t01.xml | 2 +- .../6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml | 2 +- .../verapdf-profile-6-2-4-2-t01.xml | 2 +- .../6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml | 2 +- .../verapdf-profile-6-2-4-2-t01.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 4 ++-- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 4 ++-- PDF_A/PDFA-3A.xml | 4 ++-- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 4 ++-- PDF_A/PDFA-4.xml | 4 ++-- PDF_A/PDFA-4E.xml | 4 ++-- PDF_A/PDFA-4F.xml | 4 ++-- 16 files changed, 25 insertions(+), 25 deletions(-) diff --git a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t01.xml b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t01.xml index e0b979bb..167d2cac 100644 --- a/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t01.xml +++ b/PDF_A/1b/6.2 Graphics/6.2.3 Colour spaces/6.2.3.2 ICCBased colour spaces/verapdf-profile-6-2-3-2-t01.xml @@ -12,7 +12,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.4 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.4 requirements deviceClass colorSpace diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml index 866fb50d..abf9d25f 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml @@ -13,7 +13,7 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) deviceClass colorSpace diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml index 7438013e..4e7400f3 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml @@ -12,7 +12,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements deviceClass colorSpace diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml index 8b4e3d01..4774f08b 100644 --- a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml @@ -13,7 +13,7 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) deviceClass colorSpace diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml index 3bfbba0f..45f3d292 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml @@ -12,7 +12,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 2.0 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 2.0 requirements deviceClass colorSpace diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 70a542b8..7bd4d111 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -409,7 +409,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.4 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.4 requirements deviceClass colorSpace diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 2137151a..d8c9379d 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -409,7 +409,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.4 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.4 requirements deviceClass colorSpace diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index ce46f3b9..9e80e467 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -398,7 +398,7 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) deviceClass colorSpace @@ -442,7 +442,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements deviceClass colorSpace diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 50040339..a0b48baf 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -398,7 +398,7 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) deviceClass colorSpace @@ -442,7 +442,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements deviceClass colorSpace diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 0fa1dd55..43dbb755 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -398,7 +398,7 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) deviceClass colorSpace @@ -442,7 +442,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements deviceClass colorSpace diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 8a9e4014..11cb8a5d 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -398,7 +398,7 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) deviceClass colorSpace @@ -442,7 +442,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements deviceClass colorSpace diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 3c202f1c..abf892cd 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -398,7 +398,7 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) deviceClass colorSpace @@ -442,7 +442,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements deviceClass colorSpace diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 72df09e1..39769ff5 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -398,7 +398,7 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) deviceClass colorSpace @@ -442,7 +442,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 1.7 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements deviceClass colorSpace diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 45804e49..246a9294 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -307,7 +307,7 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) deviceClass colorSpace @@ -351,7 +351,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 2.0 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 2.0 requirements deviceClass colorSpace diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 34b2d597..484c3e3b 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -321,7 +321,7 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) deviceClass colorSpace @@ -365,7 +365,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 2.0 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 2.0 requirements deviceClass colorSpace diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 4278ba4c..24878d36 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -307,7 +307,7 @@ (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 - The embedded PDF/A Output Intent colour profile has invalid header (Device Class = "%1", color space = "%2", version = %3) + The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) deviceClass colorSpace @@ -351,7 +351,7 @@ (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 - The embedded ICC profile (Device Class = "%1", color space = "%2", version = %3) is either invalid or does not satisfy PDF 2.0 requirements + The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 2.0 requirements deviceClass colorSpace From 51e260b7c6a1790089ecb9036051748c17804707 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 14 Apr 2023 15:49:44 +0300 Subject: [PATCH 464/557] PDF/A-4 validation. Update rule 6.10-1 --- PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml | 4 ++-- PDF_A/PDFA-4.xml | 4 ++-- PDF_A/PDFA-4E.xml | 4 ++-- PDF_A/PDFA-4F.xml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml index 53d9e3a8..63ed0a7e 100644 --- a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml @@ -11,9 +11,9 @@ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. - Name != null && Name.length() > 0 + Name != null - Missing or empty Name entry of the optional content configuration dictionary + Missing Name entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 246a9294..47c60173 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -1435,9 +1435,9 @@ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. - Name != null && Name.length() > 0 + Name != null - Missing or empty Name entry of the optional content configuration dictionary + Missing Name entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 484c3e3b..cbaaaf8e 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1444,9 +1444,9 @@ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. - Name != null && Name.length() > 0 + Name != null - Missing or empty Name entry of the optional content configuration dictionary + Missing Name entry of the optional content configuration dictionary diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 24878d36..bce4b260 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -1442,9 +1442,9 @@ Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. - Name != null && Name.length() > 0 + Name != null - Missing or empty Name entry of the optional content configuration dictionary + Missing Name entry of the optional content configuration dictionary From aeaa2920ebc79c823deefe46f6fe6a399b5d68a9 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 27 Apr 2023 12:17:01 +0300 Subject: [PATCH 465/557] PDF/UA validation. Update error messages 7.5-1,7.5-2 --- PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml | 2 +- PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml | 2 +- PDF_UA/PDFUA-1.xml | 4 ++-- PDF_UA/WCAG-21-Complete.xml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml index 20360561..59f42693 100644 --- a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml +++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml @@ -13,7 +13,7 @@ then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders != '' - TD does not contain Headers attribute, and Headers for this table cell can not be determined + TD does not contain Headers attribute, and Headers for this table cell cannot be determined via algorithm from ISO32000-2, 14.8.4.8.3. diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml index 37ae1963..e13fb0c2 100644 --- a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml +++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml @@ -13,7 +13,7 @@ then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders == '' - TD references undefined Header(s) %1, and Headers for this table cell can not be determined + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined via algorithm from ISO32000-2, 14.8.4.8.3. unknownHeaders diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 002104a5..bda858f9 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -777,7 +777,7 @@ then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders != '' - TD does not contain Headers attribute, and Headers for this table cell can not be determined + TD does not contain Headers attribute, and Headers for this table cell cannot be determined via algorithm from ISO32000-2, 14.8.4.8.3. @@ -790,7 +790,7 @@ then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders == '' - TD references undefined Header(s) %1, and Headers for this table cell can not be determined + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined via algorithm from ISO32000-2, 14.8.4.8.3. unknownHeaders diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 8079b631..65ec59be 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1663,7 +1663,7 @@ then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders != '' - TD does not contain Headers attribute, and Headers for this table cell can not be determined + TD does not contain Headers attribute, and Headers for this table cell cannot be determined via algorithm from ISO32000-2, 14.8.4.8.3. @@ -1676,7 +1676,7 @@ then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders == '' - TD references undefined Header(s) %1, and Headers for this table cell can not be determined + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined via algorithm from ISO32000-2, 14.8.4.8.3. unknownHeaders From fb0138e777f54cbb3c16352d8e4c6cc04a684ed9 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 15 May 2023 18:30:01 +0300 Subject: [PATCH 466/557] PDF/A-1 validation. Fix description of rule 6.7.3-4 --- .../verapdf-profile-6-7-3-t02.xml | 6 +++--- .../verapdf-profile-6-7-3-t03.xml | 6 +++--- .../verapdf-profile-6-7-3-t04.xml | 8 ++++---- PDF_A/PDFA-1A.xml | 12 ++++++------ PDF_A/PDFA-1B.xml | 12 ++++++------ 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml index 4dc31c1e..ce967a5c 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml @@ -3,18 +3,18 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Title and dc:title The value of Title entry from the document information dictionary, if present, and its - analogous XMP property dc:title shall be equivalent. + analogous XMP property dc:title['x-default'] shall be equivalent.
The value of Title entry from the document information dictionary, if present, and its - analogous XMP property dc:title shall be equivalent. + analogous XMP property dc:title['x-default'] shall be equivalent. Title == null || Title == XMPTitle The value of Title entry from the document Info dictionary and its matching XMP property - dc:title are not equivalent (Info /Title = %1, XMP dc:title = %2) + dc:title['x-default'] are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2)
Title XMPTitle diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml index 3ff02863..c4ebb57d 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml @@ -3,15 +3,15 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Author and dc:creator The value of Author entry from the document information dictionary, if present, and its - analogous XMP property dc:creator shall be equivalent. + analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry
The value of Author entry from the document information dictionary, if present, and its - analogous XMP property dc:creator shall be equivalent. - Author == null || Author == XMPCreator + analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry + Author == null || (Author == XMPCreator && XMPCreatorSize == 1) The value of Author entry from the document Info dictionary and its matching XMP property dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml index 97dfd967..86009825 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml @@ -1,20 +1,20 @@
- ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Subject and dc:subject + ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Subject and dc:description The value of Subject entry from the document information dictionary, if present, and its - analogous XMP property dc:subject shall be equivalent. + analogous XMP property dc:description['x-default'] shall be equivalent.
The value of Subject entry from the document information dictionary, if present, and its - analogous XMP property dc:subject shall be equivalent. + analogous XMP property dc:description['x-default'] shall be equivalent. Subject == null || Subject == XMPDescription The value of Subject entry from the document Info dictionary and its matching XMP property - dc:subject are not equivalent (Info /Subject = %1, XMP dc:subject = %2) + dc:description['x-default'] are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2)
Subject XMPDescription diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 7bd4d111..2d88c8fe 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1172,11 +1172,11 @@ The value of Title entry from the document information dictionary, if present, and its - analogous XMP property dc:title shall be equivalent. + analogous XMP property dc:title['x-default'] shall be equivalent. Title == null || Title == XMPTitle The value of Title entry from the document Info dictionary and its matching XMP property - dc:title are not equivalent (Info /Title = %1, XMP dc:title = %2) + dc:title['x-default'] are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2)
Title XMPTitle @@ -1189,8 +1189,8 @@ The value of Author entry from the document information dictionary, if present, and its - analogous XMP property dc:creator shall be equivalent. - Author == null || Author == XMPCreator + analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry + Author == null || (Author == XMPCreator && XMPCreatorSize == 1) The value of Author entry from the document Info dictionary and its matching XMP property dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) @@ -1206,11 +1206,11 @@ The value of Subject entry from the document information dictionary, if present, and its - analogous XMP property dc:subject shall be equivalent. + analogous XMP property dc:description['x-default'] shall be equivalent. Subject == null || Subject == XMPDescription The value of Subject entry from the document Info dictionary and its matching XMP property - dc:subject are not equivalent (Info /Subject = %1, XMP dc:subject = %2) + dc:description['x-default'] are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) Subject XMPDescription diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index d8c9379d..c3dc5287 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1158,11 +1158,11 @@ The value of Title entry from the document information dictionary, if present, and its - analogous XMP property dc:title shall be equivalent. + analogous XMP property dc:title['x-default'] shall be equivalent. Title == null || Title == XMPTitle The value of Title entry from the document Info dictionary and its matching XMP property - dc:title are not equivalent (Info /Title = %1, XMP dc:title = %2) + dc:title['x-default'] are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2) Title XMPTitle @@ -1175,8 +1175,8 @@ The value of Author entry from the document information dictionary, if present, and its - analogous XMP property dc:creator shall be equivalent. - Author == null || Author == XMPCreator + analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry + Author == null || (Author == XMPCreator && XMPCreatorSize == 1) The value of Author entry from the document Info dictionary and its matching XMP property dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) @@ -1192,11 +1192,11 @@ The value of Subject entry from the document information dictionary, if present, and its - analogous XMP property dc:subject shall be equivalent. + analogous XMP property dc:description['x-default'] shall be equivalent. Subject == null || Subject == XMPDescription The value of Subject entry from the document Info dictionary and its matching XMP property - dc:subject are not equivalent (Info /Subject = %1, XMP dc:subject = %2) + dc:description['x-default'] are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) Subject XMPDescription From 7025ed650e80c51064bbbf92fb67d4be22e62fd9 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Fri, 9 Jun 2023 20:10:04 +0300 Subject: [PATCH 467/557] PDF/A-1 validation. Update rule 6.7.8-6. PDF/A-2,3 validation. Update rule 6.6.2.3.3-5 --- .../verapdf-profile-6-7-8-t06.xml | 14 +++++++------- .../verapdf-profile-6-6-2-3-3-t05.xml | 14 +++++++------- PDF_A/PDFA-1A.xml | 10 +++++----- PDF_A/PDFA-1B.xml | 10 +++++----- PDF_A/PDFA-2A.xml | 10 +++++----- PDF_A/PDFA-2B.xml | 10 +++++----- PDF_A/PDFA-2U.xml | 10 +++++----- PDF_A/PDFA-3A.xml | 10 +++++----- PDF_A/PDFA-3B.xml | 10 +++++----- PDF_A/PDFA-3U.xml | 10 +++++----- 10 files changed, 54 insertions(+), 54 deletions(-) diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml index 7db61096..d9681156 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml @@ -2,19 +2,19 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - property field - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have + type Seq Property and namespace prefix 'pdfaSchema'.
- Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml index 3883b352..8fc444b5 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml @@ -2,19 +2,19 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - property field - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have + type Seq Property and namespace prefix 'pdfaSchema'.
- Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 2d88c8fe..3a88c158 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1392,12 +1392,12 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index c3dc5287..0bb5550a 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1378,12 +1378,12 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 9e80e467..8f4dc31e 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1587,12 +1587,12 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index a0b48baf..6ee8cdc3 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1549,12 +1549,12 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 43dbb755..8d6d5a86 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1572,12 +1572,12 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 11cb8a5d..2a67befc 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1587,12 +1587,12 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index abf892cd..388ac48a 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1549,12 +1549,12 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 39769ff5..e8b2e728 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1572,12 +1572,12 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && propertyPrefix == "pdfaSchema" + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type + Seq Property and namespace prefix 'pdfaSchema'. + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' + (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq From 8fe811a52807f4154839895a683ce9a5f293c189 Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 14 Jul 2023 15:22:04 +0300 Subject: [PATCH 468/557] PDF/A validation. Add rule about BitsPerComponent 6.2.4-4(PDF/A-1),6.2.8-4(PDF/A-2,3),6.2.7.1-4(PDF/A-4) --- .../verapdf-profile-6-2-4-t04.xml | 26 +++++++++++++++++++ .../verapdf-profile-6-2-8-t04.xml | 26 +++++++++++++++++++ .../verapdf-profile-6-2-7-1-t04.xml | 26 +++++++++++++++++++ PDF_A/PDFA-1A.xml | 15 +++++++++++ PDF_A/PDFA-1B.xml | 15 +++++++++++ PDF_A/PDFA-2A.xml | 15 +++++++++++ PDF_A/PDFA-2B.xml | 15 +++++++++++ PDF_A/PDFA-2U.xml | 15 +++++++++++ PDF_A/PDFA-3A.xml | 15 +++++++++++ PDF_A/PDFA-3B.xml | 15 +++++++++++ PDF_A/PDFA-3U.xml | 15 +++++++++++ PDF_A/PDFA-4.xml | 15 +++++++++++ PDF_A/PDFA-4E.xml | 15 +++++++++++ PDF_A/PDFA-4F.xml | 15 +++++++++++ 14 files changed, 243 insertions(+) create mode 100644 PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t04.xml create mode 100644 PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t04.xml create mode 100644 PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t04.xml diff --git a/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t04.xml b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t04.xml new file mode 100644 index 00000000..a3b433ef --- /dev/null +++ b/PDF_A/1b/6.2 Graphics/6.2.4 Images/verapdf-profile-6-2-4-t04.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-1:2005 - 6.2.4 Images - BitsPerComponent + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4 or 8 +
+ + + + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4 or 8 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + + + +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t04.xml new file mode 100644 index 00000000..dfb3913a --- /dev/null +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t04.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-2:2011 - 6.2.8 Images - BitsPerComponent + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 +
+ + + + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 || BitsPerComponent == 16 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + + + +
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t04.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t04.xml new file mode 100644 index 00000000..0564fd07 --- /dev/null +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t04.xml @@ -0,0 +1,26 @@ + + +
+ ISO 19005-4:2020 - 6.2.7 Images - BitsPerComponent + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 +
+ + + + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 || BitsPerComponent == 16 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + + + +
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 3a88c158..816736b4 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -497,6 +497,21 @@
+ + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4 or 8 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 0bb5550a..198d2de1 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -497,6 +497,21 @@
+ + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4 or 8 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 8f4dc31e..9e085144 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -639,6 +639,21 @@
+ + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 || BitsPerComponent == 16 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 6ee8cdc3..ad86f4eb 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -639,6 +639,21 @@
+ + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 || BitsPerComponent == 16 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 8d6d5a86..4294437a 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -639,6 +639,21 @@
+ + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 || BitsPerComponent == 16 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 2a67befc..f3813a3f 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -639,6 +639,21 @@
+ + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 || BitsPerComponent == 16 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 388ac48a..5e244bb8 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -639,6 +639,21 @@
+ + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 || BitsPerComponent == 16 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index e8b2e728..69f90803 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -639,6 +639,21 @@
+ + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 || BitsPerComponent == 16 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 47c60173..b353ddd5 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -558,6 +558,21 @@ + + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 || BitsPerComponent == 16 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index cbaaaf8e..44a0d5f8 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -572,6 +572,21 @@ + + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 || BitsPerComponent == 16 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index bce4b260..a31f84e5 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -558,6 +558,21 @@ + + + If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || + BitsPerComponent == 8 || BitsPerComponent == 16 + + The value of the BitsPerComponent key in the Image dictionary is %1 + + BitsPerComponent + + + + + + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. From 575a26e9f541ab63c3aa5857c6ed0a5d6102c94d Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 14 Jul 2023 16:11:13 +0300 Subject: [PATCH 469/557] Update references to ISO 32000-1 --- .../verapdf-profile-6-1-3-t01.xml | 2 +- .../verapdf-profile-6-1-3-t03.xml | 2 +- .../verapdf-profile-6-1-8-t01.xml | 2 +- .../verapdf-profile-6-2-10-t01.xml | 2 +- .../verapdf-profile-6-2-10-t02.xml | 2 +- .../verapdf-profile-6-2-11-2-t01.xml | 8 +-- .../verapdf-profile-6-2-11-2-t02.xml | 12 ++-- .../verapdf-profile-6-2-11-2-t03.xml | 6 +- .../verapdf-profile-6-2-11-2-t04.xml | 4 +- .../verapdf-profile-6-2-11-2-t05.xml | 4 +- .../verapdf-profile-6-2-11-2-t06.xml | 4 +- .../verapdf-profile-6-2-11-2-t07.xml | 2 +- .../verapdf-profile-6-2-11-3-2-t01.xml | 2 +- .../verapdf-profile-6-2-11-3-3-t01.xml | 2 +- .../verapdf-profile-6-2-11-3-3-t03.xml | 2 +- .../verapdf-profile-6-2-11-4-1-t01.xml | 2 +- .../verapdf-profile-6-2-3-t01.xml | 2 +- .../verapdf-profile-6-2-4-4-t01.xml | 2 +- .../verapdf-profile-6-5-1-t01.xml | 2 +- .../verapdf-profile-6-5-1-t02.xml | 2 +- PDF_A/PDFA-2A.xml | 66 +++++++++---------- PDF_A/PDFA-2B.xml | 66 +++++++++---------- PDF_A/PDFA-2U.xml | 66 +++++++++---------- PDF_A/PDFA-3A.xml | 66 +++++++++---------- PDF_A/PDFA-3B.xml | 66 +++++++++---------- PDF_A/PDFA-3U.xml | 66 +++++++++---------- .../verapdf-profile-7-21-3-2-t01.xml | 2 +- .../verapdf-profile-7-21-3-3-t01.xml | 2 +- .../verapdf-profile-7-21-3-3-t03.xml | 2 +- .../verapdf-profile-7-21-4-1-t01.xml | 2 +- PDF_UA/PDFUA-1.xml | 8 +-- PDF_UA/WCAG-21-Complete.xml | 8 +-- 32 files changed, 243 insertions(+), 243 deletions(-) diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml index c9991b28..26b29e7d 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t01.xml @@ -15,7 +15,7 @@ - + diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml index 76975f0b..a8e42681 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -17,7 +17,7 @@ - +
diff --git a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml index 11f4086e..208553da 100644 --- a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml @@ -19,7 +19,7 @@ - +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml index e4dcbd60..abf165ee 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml @@ -25,7 +25,7 @@ - +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml index 61034351..983c2444 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml @@ -19,7 +19,7 @@ - +
diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml index 1012ad14..1d2ff703 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t01.xml @@ -21,10 +21,10 @@ - - - - + + + + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml index 25d04864..5993b6cc 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t02.xml @@ -24,12 +24,12 @@ - - - - - - + + + + + + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml index 5d97a57f..f40fd7d7 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t03.xml @@ -19,9 +19,9 @@ - - - + + + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml index 8926e625..db8a63ae 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t04.xml @@ -19,8 +19,8 @@ - - + + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml index 796e6ce6..a8b807f3 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t05.xml @@ -19,8 +19,8 @@ - - + + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml index 2be32738..d236055b 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t06.xml @@ -22,8 +22,8 @@ - - + + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml index 608abb63..e3dedfc8 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml @@ -23,7 +23,7 @@ - + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml index c5b7bc44..dd1d6bd7 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml index b53ebfdb..f0fe2ac6 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml @@ -34,7 +34,7 @@ - + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml index f2c7826d..1570e449 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml @@ -32,7 +32,7 @@ - + diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml index 0cec89dd..c068a283 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml @@ -15,7 +15,7 @@ - + diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml index abf9d25f..cd085089 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml @@ -21,7 +21,7 @@ - + diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml index 639ccf76..4792b5bb 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml @@ -15,7 +15,7 @@ - + diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml index a4664a1e..cdc22218 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml @@ -19,7 +19,7 @@ - + diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml index b4d5099c..2b56926a 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 9e085144..4cb085e7 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -47,7 +47,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -406,7 +406,7 @@ - + @@ -511,7 +511,7 @@ - + @@ -765,7 +765,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -795,10 +795,10 @@ - - - - + + + + @@ -816,12 +816,12 @@ - - - - - - + + + + + + @@ -835,9 +835,9 @@ - - - + + + @@ -851,8 +851,8 @@ - - + + @@ -866,8 +866,8 @@ - - + + @@ -884,8 +884,8 @@ - - + + @@ -902,7 +902,7 @@ - + @@ -943,7 +943,7 @@ - + @@ -973,7 +973,7 @@ - + @@ -1016,7 +1016,7 @@ - + @@ -1028,7 +1028,7 @@ - + @@ -1406,7 +1406,7 @@ - + @@ -1420,7 +1420,7 @@ - + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index ad86f4eb..73f92618 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -47,7 +47,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -406,7 +406,7 @@ - + @@ -511,7 +511,7 @@ - + @@ -765,7 +765,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -795,10 +795,10 @@ - - - - + + + + @@ -816,12 +816,12 @@ - - - - - - + + + + + + @@ -835,9 +835,9 @@ - - - + + + @@ -851,8 +851,8 @@ - - + + @@ -866,8 +866,8 @@ - - + + @@ -884,8 +884,8 @@ - - + + @@ -902,7 +902,7 @@ - + @@ -943,7 +943,7 @@ - + @@ -973,7 +973,7 @@ - + @@ -1016,7 +1016,7 @@ - + @@ -1028,7 +1028,7 @@ - + @@ -1368,7 +1368,7 @@ - + @@ -1382,7 +1382,7 @@ - + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 4294437a..f25c1cdc 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -47,7 +47,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -406,7 +406,7 @@ - + @@ -511,7 +511,7 @@ - + @@ -765,7 +765,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -795,10 +795,10 @@ - - - - + + + + @@ -816,12 +816,12 @@ - - - - - - + + + + + + @@ -835,9 +835,9 @@ - - - + + + @@ -851,8 +851,8 @@ - - + + @@ -866,8 +866,8 @@ - - + + @@ -884,8 +884,8 @@ - - + + @@ -902,7 +902,7 @@ - + @@ -943,7 +943,7 @@ - + @@ -973,7 +973,7 @@ - + @@ -1016,7 +1016,7 @@ - + @@ -1028,7 +1028,7 @@ - + @@ -1391,7 +1391,7 @@ - + @@ -1405,7 +1405,7 @@ - + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index f3813a3f..edd2ce9b 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -47,7 +47,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -406,7 +406,7 @@ - + @@ -511,7 +511,7 @@ - + @@ -765,7 +765,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -795,10 +795,10 @@ - - - - + + + + @@ -816,12 +816,12 @@ - - - - - - + + + + + + @@ -835,9 +835,9 @@ - - - + + + @@ -851,8 +851,8 @@ - - + + @@ -866,8 +866,8 @@ - - + + @@ -884,8 +884,8 @@ - - + + @@ -902,7 +902,7 @@ - + @@ -943,7 +943,7 @@ - + @@ -973,7 +973,7 @@ - + @@ -1016,7 +1016,7 @@ - + @@ -1028,7 +1028,7 @@ - + @@ -1406,7 +1406,7 @@ - + @@ -1420,7 +1420,7 @@ - + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 5e244bb8..01bce9f9 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -47,7 +47,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -406,7 +406,7 @@ - + @@ -511,7 +511,7 @@ - + @@ -765,7 +765,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -795,10 +795,10 @@ - - - - + + + + @@ -816,12 +816,12 @@ - - - - - - + + + + + + @@ -835,9 +835,9 @@ - - - + + + @@ -851,8 +851,8 @@ - - + + @@ -866,8 +866,8 @@ - - + + @@ -884,8 +884,8 @@ - - + + @@ -902,7 +902,7 @@ - + @@ -943,7 +943,7 @@ - + @@ -973,7 +973,7 @@ - + @@ -1016,7 +1016,7 @@ - + @@ -1028,7 +1028,7 @@ - + @@ -1368,7 +1368,7 @@ - + @@ -1382,7 +1382,7 @@ - + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 69f90803..bc85c6aa 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -47,7 +47,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -406,7 +406,7 @@ - + @@ -511,7 +511,7 @@ - + @@ -765,7 +765,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -795,10 +795,10 @@ - - - - + + + + @@ -816,12 +816,12 @@ - - - - - - + + + + + + @@ -835,9 +835,9 @@ - - - + + + @@ -851,8 +851,8 @@ - - + + @@ -866,8 +866,8 @@ - - + + @@ -884,8 +884,8 @@ - - + + @@ -902,7 +902,7 @@ - + @@ -943,7 +943,7 @@ - + @@ -973,7 +973,7 @@ - + @@ -1016,7 +1016,7 @@ - + @@ -1028,7 +1028,7 @@ - + @@ -1391,7 +1391,7 @@ - + @@ -1405,7 +1405,7 @@ - + diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml index 4b564a3d..ca2d15bb 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml index 86b260f8..9c25b4e6 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml @@ -34,7 +34,7 @@ - + diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml index 3db14ee7..fe61aa98 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml @@ -32,7 +32,7 @@ - + diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml index ed412c0a..50bff49a 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml @@ -15,7 +15,7 @@ - + diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index bda858f9..62343a09 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -1120,7 +1120,7 @@ - + @@ -1150,7 +1150,7 @@ - + @@ -1193,7 +1193,7 @@ - + @@ -1205,7 +1205,7 @@ - + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 65ec59be..644c4ceb 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1994,7 +1994,7 @@ - + @@ -2024,7 +2024,7 @@ - + @@ -2067,7 +2067,7 @@ - + @@ -2079,7 +2079,7 @@ - + From 2852a398c7460eae1fe84328c6e98205a4fb1ced Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 14 Jul 2023 16:22:07 +0300 Subject: [PATCH 470/557] PDF/A-2,3,4 validation. Update rule 6.2.4.4-2 --- .../verapdf-profile-6-2-4-4-t02.xml | 2 +- .../verapdf-profile-6-2-4-4-t02.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml index 34914936..322f3df1 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml @@ -14,7 +14,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - name == 'All' || name == 'None' || areTintAndAlternateConsistent == true + areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml index 3330261e..1dbf7c6b 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml @@ -14,7 +14,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - name == 'All' || name == 'None' || areTintAndAlternateConsistent == true + areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 4cb085e7..f7b1fdfd 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -520,7 +520,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - name == 'All' || name == 'None' || areTintAndAlternateConsistent == true + areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 73f92618..65b44310 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -520,7 +520,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - name == 'All' || name == 'None' || areTintAndAlternateConsistent == true + areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index f25c1cdc..c7fa5a96 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -520,7 +520,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - name == 'All' || name == 'None' || areTintAndAlternateConsistent == true + areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index edd2ce9b..5920e30a 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -520,7 +520,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - name == 'All' || name == 'None' || areTintAndAlternateConsistent == true + areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 01bce9f9..d12dad67 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -520,7 +520,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - name == 'All' || name == 'None' || areTintAndAlternateConsistent == true + areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index bc85c6aa..78eb2b66 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -520,7 +520,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - name == 'All' || name == 'None' || areTintAndAlternateConsistent == true + areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index b353ddd5..cf44d12c 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -450,7 +450,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - name == 'All' || name == 'None' || areTintAndAlternateConsistent == true + areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 44a0d5f8..cbef756b 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -464,7 +464,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - name == 'All' || name == 'None' || areTintAndAlternateConsistent == true + areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index a31f84e5..5c1d2d63 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -450,7 +450,7 @@ same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. - name == 'All' || name == 'None' || areTintAndAlternateConsistent == true + areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent From 906b09ec7d80333522a07eb8e13d4f4a967fe447 Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Mon, 31 Jul 2023 13:32:29 +0300 Subject: [PATCH 471/557] Update README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b617696b..47381701 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,12 @@ # veraPDF validation profiles -## PDF/A-1 (ISO 19005-1:2005 + Cor 1:2007 + Cor 2:2011) +The repository contains all veraPDF validation profiles supported by veraPDF. They are split into individual rules and then grouped into validation profiles for each supported flavor. -The folder contains the full set of atomic validation rules covering the PDF/A-1B standard and prototypes for PDF/A-1A, PDF/A-2B standards. +The [PDF_A](https://github.com/veraPDF/veraPDF-validation-profiles/tree/integration/PDF_A) folder contains all rules for PDF/A validation against all PDF/A parts (ISO 19005) and conformance levels. + +The [PDF_UA](https://github.com/veraPDF/veraPDF-validation-profiles/tree/integration/PDF_UA) folder holds all rules and validation profiles for PDF/UA-1 validation, as well as validation of parent-child relationships in Tagged PDF structure tree for ISO 32000-1, ISO 32000-2 and ISO 32005. Finally, this folder also contains rules and validation profiles for WCAG 2.1. This is work in progress and is in the experimental stage. + +See [Wiki pages](https://github.com/veraPDF/veraPDF-validation-profiles/wiki) for the documentation on the profile syntax and the details for each rule. *** From 9a108095ee4c0c3fd241c300b940dd15a833142c Mon Sep 17 00:00:00 2001 From: Boris Doubrov Date: Mon, 31 Jul 2023 15:03:28 +0300 Subject: [PATCH 472/557] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 47381701..66b24b6c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # veraPDF validation profiles -The repository contains all veraPDF validation profiles supported by veraPDF. They are split into individual rules and then grouped into validation profiles for each supported flavor. +The repository contains all validation profiles supported by veraPDF. They are split into individual rules and then grouped into validation profiles for each supported flavor. The [PDF_A](https://github.com/veraPDF/veraPDF-validation-profiles/tree/integration/PDF_A) folder contains all rules for PDF/A validation against all PDF/A parts (ISO 19005) and conformance levels. From 182bf3d32fd83b3f430394f1131d74ed03973ba6 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 24 Aug 2023 17:25:39 +0300 Subject: [PATCH 473/557] WCAG2.1 validation. Add tags --- PDF_UA/WCAG-21-Complete.xml | 322 ++++++++++++++++++------------------ 1 file changed, 161 insertions(+), 161 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 644c4ceb..2b317c8f 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -6,7 +6,7 @@
- + Text should not contain repeated non space characters isNonSpace == false || numberOfRepeatedCharacters < 5 @@ -18,7 +18,7 @@ - + Text should not contain repeated space characters isNonSpace == true || numberOfRepeatedCharacters < 3 @@ -30,7 +30,7 @@ - + Underlined text isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 @@ -40,7 +40,7 @@ - + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 @@ -50,7 +50,7 @@ - + Pages shall have the same orientation orientation == 'Square' || gMostCommonPageOrientation == orientation @@ -62,7 +62,7 @@ - + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. @@ -76,7 +76,7 @@ - + Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality. @@ -89,7 +89,7 @@ - + Document should not contain illegible font fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && @@ -120,7 +120,7 @@ - + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page page != lastPage || hasBBox == true @@ -132,7 +132,7 @@ - + Links shall contain an alternate description via their Contents or Alt keys or in the text value (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || @@ -146,7 +146,7 @@ - + Table shouldn't have merged cells ColSpan == 1 && RowSpan == 1 @@ -156,7 +156,7 @@ - + Table shouldn't have merged cells ColSpan == 1 && RowSpan == 1 @@ -166,7 +166,7 @@ - + Table shouldn't have merged cells colSpan == 1 && rowSpan == 1 @@ -180,7 +180,7 @@ - + Incorrect use of a paragraph correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' @@ -193,7 +193,7 @@ - + Incorrect use of a span correctSemanticScore >= 0.75 || correctType == null @@ -206,7 +206,7 @@ - + Incorrect use of a heading correctSemanticScore >= 0.75 || correctType == null @@ -219,7 +219,7 @@ - + Incorrect use of a numbered heading correctSemanticScore >= 0.75 || correctType == null @@ -232,7 +232,7 @@ - + Missing table element hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || @@ -250,7 +250,7 @@ - + This structure element should be a heading instead of a paragraph correctType != 'H' && correctType != 'Hn' @@ -263,7 +263,7 @@ - + This structure element should be a span instead of a paragraph correctType != 'Span' @@ -276,7 +276,7 @@ - + This structure element should be a paragraph instead of a span correctType != 'P' @@ -289,7 +289,7 @@ - + This structure element should be a heading instead of a span correctType != 'H' && correctType != 'Hn' @@ -302,7 +302,7 @@ - + This structure element should be a paragraph instead of a heading correctType != 'P' @@ -315,7 +315,7 @@ - + This structure element should be a paragraph instead of a numbered heading correctType != 'P' @@ -328,7 +328,7 @@ - + Redundant paragraph correctType != null @@ -341,7 +341,7 @@ - + Redundant span correctType != null @@ -354,7 +354,7 @@ - + Redundant heading correctType != null @@ -367,7 +367,7 @@ - + Redundant numbered heading correctType != null @@ -380,7 +380,7 @@ - + This structure element should be a caption instead of a paragraph correctType != 'Caption' @@ -393,7 +393,7 @@ - + The structure type and attributes of list elements shall be semantically appropriate. hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && @@ -408,7 +408,7 @@ - + The structure type and attributes of a list shall be semantically appropriate. hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || @@ -424,7 +424,7 @@ - + The structure type and attributes of a list item shall be semantically appropriate. hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || @@ -440,7 +440,7 @@ - + The structure type and attributes of a list body shall be semantically appropriate. hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || @@ -456,7 +456,7 @@ - + A table element is incorrectly tagged as a list element or a list has the wrong numbering hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && @@ -472,7 +472,7 @@ - + This structure element should be a part or several different paragraphs instead of a paragraph correctType != 'Part' || correctSemanticScore < 0.75 @@ -485,7 +485,7 @@ - + The structure type and attributes of a TOCI shall be semantically appropriate. correctType != 'TOCI' || standardType == 'TOCI' @@ -499,7 +499,7 @@ - + TOCI shall contain one or more text lines errorCodes.split(',').filter(elem => elem == 1000).length == 0 @@ -513,7 +513,7 @@ - + TOCI page label shall match the destination page errorCodes.split(',').filter(elem => elem == 1002).length == 0 @@ -527,7 +527,7 @@ - + TOCI shall have a right alignment that matches a right alignment of other TOCIs errorCodes.split(',').filter(elem => elem == 1003).length == 0 @@ -541,7 +541,7 @@ - + This list and neighbor list(s) should be tagged as one list errorCodes.split(',').filter(elem => elem == 1200).length == 0 @@ -555,7 +555,7 @@ - + This TOC and neighbor TOC(s) should be tagged as one TOC errorCodes.split(',').filter(elem => elem == 1006).length == 0 @@ -569,7 +569,7 @@ - + The number of rows of this table does not match the number of rows of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1104).length == 0 @@ -583,7 +583,7 @@ - + The number of columns of this table does not match the number of columns of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1105).length == 0 @@ -597,7 +597,7 @@ - + The row span of this table cell does not match the row span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1106).length == 0 @@ -611,7 +611,7 @@ - + The column span of this table cell does not match the column span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1107).length == 0 @@ -625,7 +625,7 @@ - + This content should be tagged as a list item false @@ -639,7 +639,7 @@ - + This cell is below than some cells in the next row errorCodes.split(',').filter(elem => elem == 1100).length == 0 @@ -653,7 +653,7 @@ - + This cell is above than some cells in the previous row errorCodes.split(',').filter(elem => elem == 1101).length == 0 @@ -667,7 +667,7 @@ - + This cell is to the right of some cells in the next column errorCodes.split(',').filter(elem => elem == 1102).length == 0 @@ -681,7 +681,7 @@ - + This cell is to the left of some cells in the previous column errorCodes.split(',').filter(elem => elem == 1103).length == 0 @@ -695,7 +695,7 @@ - + This structure element should be a table cell instead of a table header correctType != 'TD' @@ -709,7 +709,7 @@ - + TOCI text should be presented in the document errorCodes.split(',').filter(elem => elem == 1007).length == 0 @@ -723,7 +723,7 @@ - + TOCI text should be presented on a destination page. errorCodes.split(',').filter(elem => elem == 1008).length == 0 @@ -740,7 +740,7 @@ - + TOCI should have a destination. errorCodes.split(',').filter(elem => elem == 1009).length == 0 @@ -754,7 +754,7 @@ - + TOCI should have a correct page label. errorCodes.split(',').filter(elem => elem == 1010).length == 0 @@ -768,7 +768,7 @@ - + TOCI should have a correct numbering. errorCodes.split(',').filter(elem => elem == 1011).length == 0 @@ -784,7 +784,7 @@ - + List should contain list items. errorCodes.split(',').filter(elem => elem == 1201).length == 0 @@ -794,7 +794,7 @@ - + The structure type and attributes of a list item shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1202).length == 0 @@ -804,7 +804,7 @@ - + This structure element should be a note instead of a span correctType != 'Note' @@ -814,7 +814,7 @@ - + This structure element should be a note instead of a paragraph correctType != 'Note' @@ -824,7 +824,7 @@ - + The structure type and attributes of a heading shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1300).length == 0 @@ -835,7 +835,7 @@ - + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. UAIdentification_size == 1 @@ -845,7 +845,7 @@ - + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. part == 1 @@ -857,7 +857,7 @@ - + Content marked as Artifact should not present inside tagged content tag != 'Artifact' || parentStructureTag == null @@ -869,7 +869,7 @@ - + Tagged content should not present inside content marked as Artifact structureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 @@ -881,7 +881,7 @@ - + Content shall be marked as Artifact or tagged as real content parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 @@ -891,7 +891,7 @@ - + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) Suspects != true @@ -903,7 +903,7 @@ - + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. @@ -920,7 +920,7 @@ - + A circular mapping shall not exist circularMappingExist != true @@ -932,7 +932,7 @@ - + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. isRemappedStandardType == false @@ -946,7 +946,7 @@ - + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. metadata_size == 1 @@ -958,7 +958,7 @@ - + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which @@ -970,7 +970,7 @@ - + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true. @@ -986,7 +986,7 @@ - + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document catalog dictionary, @@ -999,8 +999,8 @@ - - + + Natural language in the Outline entries shall be determined gSizeCatalogLang != 0 @@ -1010,7 +1010,7 @@ - + Table element may contain only TR, THead, TBody, TFoot and Caption elements kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' @@ -1028,7 +1028,7 @@ - + TR element should be contained in Table, THead, TBody or TFoot element /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) @@ -1044,7 +1044,7 @@ - + THead element should be contained in Table element parentStandardType == 'Table' @@ -1060,7 +1060,7 @@ - + TBody element should be contained in Table element parentStandardType == 'Table' @@ -1076,7 +1076,7 @@ - + TFoot element should be contained in Table element parentStandardType == 'Table' @@ -1092,7 +1092,7 @@ - + TH element should be contained in TR element parentStandardType == 'TR' @@ -1108,7 +1108,7 @@ - + TD element should be contained in TR element parentStandardType == 'TR' @@ -1124,7 +1124,7 @@ - + TR element may contain only TH and TD elements /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' @@ -1140,7 +1140,7 @@ - + Table element should contain zero or one THead kid kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 @@ -1156,7 +1156,7 @@ - + Table element should contain zero or one TFoot kid kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 @@ -1172,7 +1172,7 @@ - + If Table element contains TFoot kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || @@ -1189,7 +1189,7 @@ - + If Table element contains THead kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || @@ -1206,7 +1206,7 @@ - + Table cell shall not have intersection with other cells hasIntersection != true @@ -1218,7 +1218,7 @@ - + Table element may contain a Caption element as its first or last kid kidsStandardTypes.indexOf('&Caption&') < 0 @@ -1234,7 +1234,7 @@ - + LI element should be contained in L element parentStandardType == 'L' @@ -1250,7 +1250,7 @@ - + LBody element should be contained in LI element parentStandardType == 'LI' @@ -1266,7 +1266,7 @@ - + L element may contain only L, LI and Caption elements kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' @@ -1284,7 +1284,7 @@ - + LI element may contain only Lbl and LBody elements /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' @@ -1300,7 +1300,7 @@ - + Natural language for text in ActualText attribute shall be determined ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 @@ -1310,7 +1310,7 @@ - + Natural language for text in Alt attribute shall be determined Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 @@ -1320,7 +1320,7 @@ - + Natural language for text in E attribute shall be determined E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 @@ -1330,7 +1330,7 @@ - + Natural language in the Contents entry for annotations shall be determined Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 @@ -1341,7 +1341,7 @@ - + Natural language in the TU key for form fields shall be determined TU == null || Lang_size != 0 || gSizeCatalogLang != 0 @@ -1351,7 +1351,7 @@ - + TOCI element should be contained in TOC element parentStandardType == 'TOC' @@ -1367,7 +1367,7 @@ - + TOC element may contain only TOC, TOCI and Caption elements kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' @@ -1385,7 +1385,7 @@ - + TOC element may contain a Caption element only as its first kid kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 @@ -1401,7 +1401,7 @@ - + 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-1:2008, 14.9.2. @@ -1418,7 +1418,7 @@ - + Natural language for text in ActualText attribute in Span Marked Content shall be determined tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 @@ -1428,7 +1428,7 @@ - + Natural language for text in Alt attribute in Span Marked Content shall be determined tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 @@ -1438,7 +1438,7 @@ - + Natural language for text in E attribute in Span Marked Content shall be determined tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 @@ -1448,7 +1448,7 @@ - + Natural language for document metadata shall be determined xDefault == false || gSizeCatalogLang != 0 @@ -1458,7 +1458,7 @@ - + Natural language for text in page content shall be determined gSizeCatalogLang != 0 || Lang != null @@ -1468,7 +1468,7 @@ - + THead element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' @@ -1484,7 +1484,7 @@ - + TBody element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' @@ -1500,7 +1500,7 @@ - + TFoot element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' @@ -1516,7 +1516,7 @@ - + Table element may contain only one Caption element kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 @@ -1532,7 +1532,7 @@ - + L element may contain a Caption element only as its first kid kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 @@ -1548,7 +1548,7 @@ - + Table columns shall have the same number of rows (taking into account row spans) numberOfColumnWithWrongRowSpan == null @@ -1562,7 +1562,7 @@ - + Table rows shall have the same number of columns (taking into account column spans) numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null @@ -1576,7 +1576,7 @@ - + Table rows shall have the same number of columns (taking into account column spans) numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null @@ -1592,7 +1592,7 @@ - + Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 @@ -1605,7 +1605,7 @@ - + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: @@ -1627,7 +1627,7 @@ - + Each node in the tag tree shall contain at most one child H tag. kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -1637,7 +1637,7 @@ - + All documents shall be either strongly or weakly structured, but not both. usesHn == false @@ -1647,7 +1647,7 @@ - + All documents shall be either strongly or weakly structured, but not both. usesH == false @@ -1657,7 +1657,7 @@ - + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute @@ -1670,7 +1670,7 @@ - + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute @@ -1686,7 +1686,7 @@ - + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes @@ -1699,7 +1699,7 @@ - + Note tag shall have ID entry noteID != null && noteID != '' @@ -1709,7 +1709,7 @@ - + Each Note tag shall have unique ID key hasDuplicateNoteID == false @@ -1721,7 +1721,7 @@ - + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key. @@ -1732,7 +1732,7 @@ - + The AS key shall not appear in any optional content configuration dictionary. AS == null @@ -1742,7 +1742,7 @@ - + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys containsEF == false || (F != null && F != '' && UF != null && UF != '') @@ -1756,7 +1756,7 @@ - + Dynamic XFA forms shall not be used dynamicRender != 'required' @@ -1766,7 +1766,7 @@ - + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. @@ -1785,7 +1785,7 @@ - + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || @@ -1799,7 +1799,7 @@ - + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry @@ -1816,7 +1816,7 @@ - + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions @@ -1830,7 +1830,7 @@ - + Annotations of subtype TrapNet shall not be permitted. isOutsideCropBox == true || (F & 2) == 2 @@ -1840,7 +1840,7 @@ - + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. annots_size == 0 || Tabs == 'S' @@ -1852,7 +1852,7 @@ - + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. structParentType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 @@ -1866,7 +1866,7 @@ - + If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation @@ -1880,7 +1880,7 @@ - + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. structParentType == 'Link' || structParentType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2 @@ -1894,7 +1894,7 @@ - + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required. @@ -1907,7 +1907,7 @@ - + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required. @@ -1922,7 +1922,7 @@ - + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. @@ -1935,7 +1935,7 @@ - + A conforming file shall not contain any reference XObjects containsRef == false @@ -1945,7 +1945,7 @@ - + The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2. @@ -1958,7 +1958,7 @@ - + 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: @@ -1984,7 +1984,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. @@ -1997,7 +1997,7 @@ - + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. @@ -2027,7 +2027,7 @@ - + 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. @@ -2041,7 +2041,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || @@ -2070,7 +2070,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -2082,7 +2082,7 @@ - + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt @@ -2098,7 +2098,7 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. @@ -2109,7 +2109,7 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. @@ -2120,7 +2120,7 @@ - + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. @@ -2135,7 +2135,7 @@ - + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. @@ -2146,7 +2146,7 @@ - + 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 @@ -2164,7 +2164,7 @@ - + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary isSymbolic == false || Encoding == null @@ -2174,7 +2174,7 @@ - + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, @@ -2189,7 +2189,7 @@ - + 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 ISO 14289-1, 7.21.7. @@ -2202,7 +2202,7 @@ - + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) @@ -2212,7 +2212,7 @@ - + A PDF/UA compliant document 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. From e7cba36c1e5ccf32e46d8727a3464b63a280f52c Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 14 Sep 2023 11:34:25 +0300 Subject: [PATCH 474/557] Update references to ISO 32000-1 --- .../verapdf-profile-6-7-2-2-t01.xml | 2 +- .../verapdf-profile-6-6-2-1-t01.xml | 2 +- .../verapdf-profile-6-9-t04.xml | 2 +- PDF_A/PDFA-2A.xml | 4 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t04.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t07.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t08.xml | 2 +- .../verapdf-profile-7-10-t02.xml | 2 +- .../verapdf-profile-7-16-t01.xml | 2 +- .../verapdf-profile-7-18-4-t01.xml | 2 +- .../verapdf-profile-7-18-4-t02.xml | 2 +- .../verapdf-profile-7-18-5-t01.xml | 2 +- .../verapdf-profile-7-18-5-t02.xml | 2 +- .../verapdf-profile-7-18-6-2-t01.xml | 2 +- .../verapdf-profile-7-18-6-2-t02.xml | 2 +- .../verapdf-profile-7-18-8-t01.xml | 2 +- .../7.2 Text/verapdf-profile-7-2-t03-t15.xml | 26 ++--- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml | 2 +- .../7.2 Text/verapdf-profile-7-2-t17-t20.xml | 8 +- .../7.2 Text/verapdf-profile-7-2-t26-t27.xml | 4 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml | 2 +- .../7.2 Text/verapdf-profile-7-2-t36-t38.xml | 6 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml | 2 +- .../verapdf-profile-7-20-t02.xml | 2 +- .../7.3 Graphics/verapdf-profile-7-3-t01.xml | 2 +- .../verapdf-profile-7-4-2-t01.xml | 2 +- .../1/7.5 Tables/verapdf-profile-7-5-t01.xml | 2 +- .../1/7.5 Tables/verapdf-profile-7-5-t02.xml | 2 +- .../verapdf-profile-7-7-t01.xml | 2 +- PDF_UA/PDFUA-1.xml | 90 +++++++++--------- PDF_UA/WCAG-21-Complete.xml | 94 +++++++++---------- PDF_UA/WCAG-21.xml | 4 +- 41 files changed, 151 insertions(+), 151 deletions(-) diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml index 10c233b2..0d1fda49 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml @@ -19,7 +19,7 @@ - + diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml index 7f2404e5..8c79378b 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml @@ -15,7 +15,7 @@ - + diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml index 169ada13..4ff7063c 100644 --- a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml @@ -1,7 +1,7 @@
- ISO 19005-2:2011 - 6.9 Optional content - Order key + ISO 19005-2:2011 - 6.9 Optional content - AS key The AS key shall not appear in any optional content configuration dictionary.
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index f7b1fdfd..ecef4815 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1452,7 +1452,7 @@ - + @@ -1914,7 +1914,7 @@ - + diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 65b44310..7370c695 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1414,7 +1414,7 @@ - + diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index c7fa5a96..4a5ee6ae 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1437,7 +1437,7 @@ - + diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 5920e30a..58c534f4 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1452,7 +1452,7 @@ - + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d12dad67..6b5375d8 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1414,7 +1414,7 @@ - + diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 78eb2b66..7a566285 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1437,7 +1437,7 @@ - + diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml index d40d16a1..35d941c9 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml @@ -15,7 +15,7 @@ - + diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml index 9bd2a0d1..93f777b8 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml @@ -17,7 +17,7 @@
- + diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml index c2ff019d..b5e9a7b7 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml @@ -15,7 +15,7 @@ - + diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml index e88cb746..0b4a80ee 100644 --- a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml +++ b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-1:2014 - 7.10 Optional content - Order key + ISO 14289-1:2014 - 7.10 Optional content - AS key The AS key shall not appear in any optional content configuration dictionary.
diff --git a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml index dc687b7c..6633d820 100644 --- a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml +++ b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml @@ -23,7 +23,7 @@
- + diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml index 00598fab..9c9d119a 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml index fe2c9bbe..3b11d29b 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml @@ -19,7 +19,7 @@ the widget annotation - + diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml index 1e753057..fda947a0 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml index fe19294d..0dcefb15 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml @@ -15,7 +15,7 @@ - + diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml index 74e672b8..d18a6ca4 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml index e7452170..c71fe600 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml @@ -19,7 +19,7 @@ - + diff --git a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml index bab37b17..61ca365f 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml index 384b4708..551269cc 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml @@ -19,7 +19,7 @@ - + @@ -33,7 +33,7 @@ - + @@ -47,7 +47,7 @@ - + @@ -61,7 +61,7 @@ - + @@ -75,7 +75,7 @@ - + @@ -89,7 +89,7 @@ - + @@ -103,7 +103,7 @@ - + @@ -117,7 +117,7 @@ - + @@ -129,7 +129,7 @@ - + @@ -141,7 +141,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -167,7 +167,7 @@ - + @@ -179,7 +179,7 @@ - + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml index f855f584..4dbbfd40 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml index 4f3d8950..c851b919 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml @@ -17,7 +17,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -47,7 +47,7 @@ - + @@ -61,7 +61,7 @@ - + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml index bfd9a569..1a4e14fd 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml @@ -17,7 +17,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml index 825d45c5..081bcf70 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml index 551b2cf9..2c48c911 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml @@ -17,7 +17,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -45,7 +45,7 @@ - + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml index 4ffecea2..5ade3ee8 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml index b6cc9979..e6f805bf 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml index 4bcc9281..8c2ef763 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml index a35301f0..83121e2d 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml index 9d0c5ed4..0a141a12 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml @@ -19,7 +19,7 @@ - + diff --git a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml index 151fe1c6..e5d7221b 100644 --- a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml +++ b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml index 17f71264..567edd95 100644 --- a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml +++ b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml index 8b8c2930..7306ddbe 100644 --- a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml +++ b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml @@ -33,7 +33,7 @@ - + diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml index 59f42693..63b13c56 100644 --- a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml +++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml @@ -17,7 +17,7 @@ via algorithm from ISO32000-2, 14.8.4.8.3. - + diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml index e13fb0c2..a6c40614 100644 --- a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml +++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml @@ -20,7 +20,7 @@ - + diff --git a/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml index fba14f38..b3176544 100644 --- a/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml +++ b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 62343a09..7a2bc257 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -114,7 +114,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -194,7 +194,7 @@ - + @@ -208,7 +208,7 @@ - + @@ -222,7 +222,7 @@ - + @@ -236,7 +236,7 @@ - + @@ -250,7 +250,7 @@ - + @@ -264,7 +264,7 @@ - + @@ -278,7 +278,7 @@ - + @@ -292,7 +292,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -316,7 +316,7 @@ - + @@ -329,7 +329,7 @@ - + @@ -342,7 +342,7 @@ - + @@ -354,7 +354,7 @@ - + @@ -368,7 +368,7 @@ - + @@ -382,7 +382,7 @@ - + @@ -396,7 +396,7 @@ - + @@ -412,7 +412,7 @@ - + @@ -426,7 +426,7 @@ - + @@ -492,7 +492,7 @@ - + @@ -508,7 +508,7 @@ - + @@ -522,7 +522,7 @@ - + @@ -603,7 +603,7 @@ - + @@ -617,7 +617,7 @@ - + @@ -631,7 +631,7 @@ - + @@ -645,7 +645,7 @@ - + @@ -659,7 +659,7 @@ - + @@ -673,7 +673,7 @@ - + @@ -687,7 +687,7 @@ - + @@ -703,7 +703,7 @@ - + @@ -716,7 +716,7 @@ - + @@ -738,7 +738,7 @@ - + @@ -781,7 +781,7 @@ via algorithm from ISO32000-2, 14.8.4.8.3. - + @@ -797,7 +797,7 @@ - + @@ -810,7 +810,7 @@ - + @@ -896,7 +896,7 @@ - + @@ -977,7 +977,7 @@ - + @@ -991,7 +991,7 @@ the widget annotation - + @@ -1005,7 +1005,7 @@ - + @@ -1017,7 +1017,7 @@ - + @@ -1030,7 +1030,7 @@ - + @@ -1045,7 +1045,7 @@ - + @@ -1058,7 +1058,7 @@ - + @@ -1081,7 +1081,7 @@ - + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 2b317c8f..7096e70f 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -129,7 +129,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -900,7 +900,7 @@ - + @@ -943,7 +943,7 @@ - + @@ -955,7 +955,7 @@ - + @@ -1025,7 +1025,7 @@ - + @@ -1041,7 +1041,7 @@ - + @@ -1057,7 +1057,7 @@ - + @@ -1073,7 +1073,7 @@ - + @@ -1089,7 +1089,7 @@ - + @@ -1105,7 +1105,7 @@ - + @@ -1121,7 +1121,7 @@ - + @@ -1137,7 +1137,7 @@ - + @@ -1153,7 +1153,7 @@ - + @@ -1169,7 +1169,7 @@ - + @@ -1186,7 +1186,7 @@ - + @@ -1203,7 +1203,7 @@ - + @@ -1215,7 +1215,7 @@ - + @@ -1231,7 +1231,7 @@ - + @@ -1247,7 +1247,7 @@ - + @@ -1263,7 +1263,7 @@ - + @@ -1281,7 +1281,7 @@ - + @@ -1297,7 +1297,7 @@ - + @@ -1364,7 +1364,7 @@ - + @@ -1382,7 +1382,7 @@ - + @@ -1398,7 +1398,7 @@ - + @@ -1481,7 +1481,7 @@ - + @@ -1497,7 +1497,7 @@ - + @@ -1513,7 +1513,7 @@ - + @@ -1529,7 +1529,7 @@ - + @@ -1545,7 +1545,7 @@ - + @@ -1559,7 +1559,7 @@ - + @@ -1573,7 +1573,7 @@ - + @@ -1589,7 +1589,7 @@ - + @@ -1602,7 +1602,7 @@ - + @@ -1624,7 +1624,7 @@ - + @@ -1667,7 +1667,7 @@ via algorithm from ISO32000-2, 14.8.4.8.3. - + @@ -1683,7 +1683,7 @@ - + @@ -1696,7 +1696,7 @@ - + @@ -1782,7 +1782,7 @@ - + @@ -1863,7 +1863,7 @@ - + @@ -1877,7 +1877,7 @@ the widget annotation - + @@ -1891,7 +1891,7 @@ - + @@ -1904,7 +1904,7 @@ - + @@ -1919,7 +1919,7 @@ - + @@ -1932,7 +1932,7 @@ - + @@ -1955,7 +1955,7 @@ - + diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 4902ad3a..72f0aa7c 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -129,7 +129,7 @@ - + @@ -143,7 +143,7 @@ - + From 1334db3aad02c16d2c2df7ace4d49f359bf9eeee Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 14 Sep 2023 11:44:26 +0300 Subject: [PATCH 475/557] Update rules about annotations --- .../verapdf-profile-6-5-3-t02.xml | 2 +- .../verapdf-profile-6-3-2-t02.xml | 2 +- .../verapdf-profile-6-3-2-t02.xml | 2 +- PDF_A/PDFA-1A.xml | 2 +- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 4 +-- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 2 +- .../verapdf-profile-7-18-1-t01.xml | 5 ++-- .../verapdf-profile-7-18-4-t01.xml | 5 ++-- .../verapdf-profile-7-18-5-t01.xml | 5 ++-- .../verapdf-profile-7-21-4-1-t02.xml | 17 ++++++----- PDF_UA/PDFUA-1.xml | 24 ++++++++------- PDF_UA/WCAG-21-Complete.xml | 30 +++++++++++-------- 19 files changed, 63 insertions(+), 51 deletions(-) diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml index 268eaaca..724ddf92 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml @@ -18,8 +18,8 @@ F F != null ? (F & 4) >> 2 : null - F != null ? (F & 1) : null F != null ? (F & 2) >> 1 : null + F != null ? (F & 1) : null F != null ? (F & 32) >> 5 : null diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml index 5a2e16a3..c763eb17 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml @@ -16,8 +16,8 @@ F (F & 4) >> 2 - (F & 1) (F & 2) >> 1 + (F & 1) (F & 32) >> 5 (F & 256) >> 8 diff --git a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml index 1f6cc1d3..61c823af 100644 --- a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml @@ -16,8 +16,8 @@ F (F & 4) >> 2 - (F & 1) (F & 2) >> 1 + (F & 1) (F & 32) >> 5 (F & 256) >> 8 diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 816736b4..19884ea3 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1009,8 +1009,8 @@ F F != null ? (F & 4) >> 2 : null - F != null ? (F & 1) : null F != null ? (F & 2) >> 1 : null + F != null ? (F & 1) : null F != null ? (F & 32) >> 5 : null diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index ecef4815..ca21c98e 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1231,8 +1231,8 @@ F (F & 4) >> 2 - (F & 1) (F & 2) >> 1 + (F & 1) (F & 32) >> 5 (F & 256) >> 8 diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 7370c695..077c5aea 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1193,8 +1193,8 @@ F (F & 4) >> 2 - (F & 1) (F & 2) >> 1 + (F & 1) (F & 32) >> 5 (F & 256) >> 8 diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 4a5ee6ae..8c5c96bb 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1216,8 +1216,8 @@ F (F & 4) >> 2 - (F & 1) (F & 2) >> 1 + (F & 1) (F & 32) >> 5 (F & 256) >> 8 diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 58c534f4..28d866ca 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1231,8 +1231,8 @@ F (F & 4) >> 2 - (F & 1) (F & 2) >> 1 + (F & 1) (F & 32) >> 5 (F & 256) >> 8 @@ -1914,7 +1914,7 @@ - + diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 6b5375d8..88619654 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1193,8 +1193,8 @@ F (F & 4) >> 2 - (F & 1) (F & 2) >> 1 + (F & 1) (F & 32) >> 5 (F & 256) >> 8 diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 7a566285..bf5cbf38 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1216,8 +1216,8 @@ F (F & 4) >> 2 - (F & 1) (F & 2) >> 1 + (F & 1) (F & 32) >> 5 (F & 256) >> 8 diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index cf44d12c..3dd43c83 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -1108,8 +1108,8 @@ F (F & 4) >> 2 - (F & 1) (F & 2) >> 1 + (F & 1) (F & 32) >> 5 (F & 256) >> 8 diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index cbef756b..8deaf73e 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1123,8 +1123,8 @@ F (F & 4) >> 2 - (F & 1) (F & 2) >> 1 + (F & 1) (F & 32) >> 5 (F & 256) >> 8 diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 5c1d2d63..79cbf380 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -1109,8 +1109,8 @@ F (F & 4) >> 2 - (F & 1) (F & 2) >> 1 + (F & 1) (F & 32) >> 5 (F & 256) >> 8 diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml index c2e449ca..99a9e631 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml @@ -10,12 +10,13 @@ An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || - (F & 2) == 2 || structParentType == 'Annot' + (F & 2) == 2 || structParentStandardType == 'Annot' - %1 annotation is nested within %2 tag instead of Annot + %1 annotation is artifact or is nested within %2 tag (standard type = %3) instead of Annot Subtype structParentType + structParentStandardType diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml index 9c9d119a..f27f50d6 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml @@ -9,11 +9,12 @@ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. - structParentType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 + structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - A Widget annotation is nested within %1 tag instead of Form + A Widget annotation is artifact or is nested within %1 tag (standard type = %2) instead of Form structParentType + structParentStandardType diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml index fda947a0..d4915de6 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml @@ -9,11 +9,12 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - structParentType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 + structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 - A Link annotation is nested within %1 tag instead of Link + A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link structParentType + structParentStandardType diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml index 2d5c3f4b..c36e3486 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml @@ -3,26 +3,27 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - Glyphs Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + 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 according to ISO 32000-1:2008, 9.6.6.4 + without the use of a non-standard mapping chosen by the conforming processor.
Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + 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 according to ISO 32000-1:2008, 9.6.6.4 + without the use of a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program + diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 7a2bc257..045c7d62 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -903,12 +903,13 @@ An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || - (F & 2) == 2 || structParentType == 'Annot' + (F & 2) == 2 || structParentStandardType == 'Annot' - %1 annotation is nested within %2 tag instead of Annot + %1 annotation is artifact or is nested within %2 tag (standard type = %3) instead of Annot Subtype structParentType + structParentStandardType @@ -969,11 +970,12 @@ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. - structParentType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 + structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - A Widget annotation is nested within %1 tag instead of Form + A Widget annotation is artifact or is nested within %1 tag (standard type = %2) instead of Form structParentType + structParentStandardType @@ -997,11 +999,12 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - structParentType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 + structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 - A Link annotation is nested within %1 tag instead of Link + A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link structParentType + structParentStandardType @@ -1211,16 +1214,17 @@ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + 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 according to ISO 32000-1:2008, 9.6.6.4 + without the use of a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program + diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 7096e70f..ccbaab3b 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1785,16 +1785,17 @@ - + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || - (F & 2) == 2 || structParentType == 'Annot' + (F & 2) == 2 || structParentStandardType == 'Annot' - %1 annotation is nested within %2 tag instead of Annot + %1 annotation is artifact or is nested within %2 tag (standard type = %3) instead of Annot Subtype structParentType + structParentStandardType @@ -1852,14 +1853,15 @@ - + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. - structParentType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 + structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - A Widget annotation is nested within %1 tag instead of Form + A Widget annotation is artifact or is nested within %1 tag (standard type = %2) instead of Form structParentType + structParentStandardType @@ -1880,14 +1882,15 @@ - + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - structParentType == 'Link' || structParentType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2 + structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 - A Link annotation is nested within %1 tag instead of Link + A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link structParentType + structParentStandardType @@ -2085,16 +2088,17 @@ Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + 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 according to ISO 32000-1:2008, 9.6.6.4 + without the use of a non-standard mapping chosen by the conforming processor. renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program + From dfc43aa3ff6bdab1c9151f0eacbae2a15ea8af3d Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 22 Sep 2023 23:41:45 +0300 Subject: [PATCH 476/557] Update rules about annotations --- PDF_UA/WCAG-21-Complete.xml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index ccbaab3b..b3e3ad8f 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1785,7 +1785,7 @@ - + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || @@ -1853,7 +1853,7 @@ - + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 @@ -1882,12 +1882,13 @@ - + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. - structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 + structParentStandardType == 'Link' || structParentStandardType == 'Reference' || + isOutsideCropBox == true || (F & 2) == 2 - A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link + A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference structParentType structParentStandardType From 2add2970208bf8dd0dbd3c7de870874c9fd494c9 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 2 Oct 2023 10:18:29 +0300 Subject: [PATCH 477/557] WCAG validation. Split rule about wrong table elements --- PDF_UA/WCAG-21-Complete.xml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index b3e3ad8f..cdeb72f6 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -232,11 +232,29 @@ + + + Incorrect table element + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || + (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && + correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && + correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || + parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + Missing table element hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || - ((correctType != 'TD' || standardType == 'TH') && + (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) From 5bbb998fdea63460ce4bbb1f27738b015d6f95e2 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 2 Oct 2023 20:54:33 +0300 Subject: [PATCH 478/557] PDF/UA-1. Add rules about prefixes --- .../verapdf-profile-5-t03.xml | 23 ++++++++++++ .../verapdf-profile-5-t04.xml | 23 ++++++++++++ .../verapdf-profile-5-t05.xml | 23 ++++++++++++ PDF_UA/PDFUA-1.xml | 36 +++++++++++++++++++ PDF_UA/WCAG-21-Complete.xml | 36 +++++++++++++++++++ 5 files changed, 141 insertions(+) create mode 100644 PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml create mode 100644 PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml create mode 100644 PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml new file mode 100644 index 00000000..e85b89ec --- /dev/null +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 5 Version identification - part prefix + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid +
+ + + + + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + partPrefix == null || partPrefix == "pdfuaid" + + Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + +
diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml new file mode 100644 index 00000000..a772fbec --- /dev/null +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 5 Version identification - amd prefix + Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid +
+ + + + + Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + amdPrefix == null || amdPrefix == "pdfuaid" + + Property amd of the PDF/UA Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + +
diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml new file mode 100644 index 00000000..b97886e1 --- /dev/null +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 5 Version identification - corr prefix + Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid +
+ + + + + Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + corrPrefix == null || corrPrefix == "pdfuaid" + + Property corr of the PDF/UA Identification Schema has invalid namespace prefix %1 + + corrPrefix + + + + + + +
diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 045c7d62..6d64f58d 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -28,6 +28,42 @@
+ + + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + partPrefix == null || partPrefix == "pdfuaid" + + Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + amdPrefix == null || amdPrefix == "pdfuaid" + + Property amd of the PDF/UA Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + + Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + corrPrefix == null || corrPrefix == "pdfuaid" + + Property corr of the PDF/UA Identification Schema has invalid namespace prefix %1 + + corrPrefix + + + + Content marked as Artifact should not present inside tagged content diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index cdeb72f6..77b0b77e 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -875,6 +875,42 @@ + + + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + partPrefix == null || partPrefix == "pdfuaid" + + Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + amdPrefix == null || amdPrefix == "pdfuaid" + + Property amd of the PDF/UA Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + + Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + corrPrefix == null || corrPrefix == "pdfuaid" + + Property corr of the PDF/UA Identification Schema has invalid namespace prefix %1 + + corrPrefix + + + + Content marked as Artifact should not present inside tagged content From 8dda4f0cdc3f70f359b6a3af4d70b6e92de9f0f9 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 19 Oct 2023 12:45:27 +0300 Subject: [PATCH 479/557] Update rules 6.3.5-3,6.5.3-3(PDF/A-1), 6.2.11.4.2-2(PDF/A-2) and 7.21.4.2-2(PDF/UA-1) --- .../6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml | 2 +- .../verapdf-profile-6-5-3-t03.xml | 8 ++++---- .../verapdf-profile-6-2-11-4-2-t02.xml | 2 +- PDF_A/PDFA-1A.xml | 10 +++++----- PDF_A/PDFA-1B.xml | 10 +++++----- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- .../verapdf-profile-7-21-4-2-t02.xml | 2 +- PDF_UA/PDFUA-1.xml | 2 +- PDF_UA/WCAG-21-Complete.xml | 2 +- 14 files changed, 25 insertions(+), 25 deletions(-) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml index 07ec965f..8e04d9c3 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t03.xml @@ -11,7 +11,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) + fontName.search(/[A-Z]{6}\+/) != 0 || (containsCIDSet == true && cidSetListsAllGlyphs == true) A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs present in the embedded font subset and used for rendering diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml index 760cc4b9..5cc4ad45 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t03.xml @@ -11,12 +11,12 @@ An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + (containsC == false && containsIC == false) || gOutputCS == "RGB " - Annotation's color (C size = %1) or interior color (IC size = %2) is used without specifying RGB-based destination output profile + Annotation's color (C present = %1) or interior color (IC present = %2) is used without specifying RGB-based destination output profile - C_size - IC_size + containsC + containsIC diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml index cb58b81d..6c7739f9 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml @@ -11,7 +11,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 19884ea3..fe29e289 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -808,7 +808,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) + fontName.search(/[A-Z]{6}\+/) != 0 || (containsCIDSet == true && cidSetListsAllGlyphs == true) A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs present in the embedded font subset and used for rendering @@ -1020,12 +1020,12 @@ An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + (containsC == false && containsIC == false) || gOutputCS == "RGB " - Annotation's color (C size = %1) or interior color (IC size = %2) is used without specifying RGB-based destination output profile + Annotation's color (C present = %1) or interior color (IC present = %2) is used without specifying RGB-based destination output profile - C_size - IC_size + containsC + containsIC diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 198d2de1..96315c0b 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -808,7 +808,7 @@ For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 - fontName.search(/[A-Z]{6}\+/) != 0 || (CIDSet_size == 1 && cidSetListsAllGlyphs == true) + fontName.search(/[A-Z]{6}\+/) != 0 || (containsCIDSet == true && cidSetListsAllGlyphs == true) A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs present in the embedded font subset and used for rendering @@ -1006,12 +1006,12 @@ An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (C_size == 0 && IC_size == 0) || gOutputCS == "RGB " + (containsC == false && containsIC == false) || gOutputCS == "RGB " - Annotation's color (C size = %1) or interior color (IC size = %2) is used without specifying RGB-based destination output profile + Annotation's color (C present = %1) or interior color (IC present = %2) is used without specifying RGB-based destination output profile - C_size - IC_size + containsC + containsIC diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index ca21c98e..ff483c9f 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1062,7 +1062,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 077c5aea..a890c1e8 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1062,7 +1062,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 8c5c96bb..11cfbd61 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1062,7 +1062,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 28d866ca..b67f249c 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1062,7 +1062,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 88619654..5c1d8fa9 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1062,7 +1062,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index bf5cbf38..6b717ee3 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1062,7 +1062,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml index b968ec30..6beb75b9 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml @@ -11,7 +11,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 6d64f58d..944f3442 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -1279,7 +1279,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 77b0b77e..e46c8b39 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -2172,7 +2172,7 @@ If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CIDSet_size == 0 || cidSetListsAllGlyphs == true + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset From ec6dfaa7507c3ef05f07421179b2803c35eaa426 Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 31 Oct 2023 20:32:25 +0300 Subject: [PATCH 480/557] WCAG. Support Artifact tag --- PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml | 4 ++-- PDF_UA/PDFUA-1.xml | 4 ++-- PDF_UA/WCAG-21-Complete.xml | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml index 8f3145c5..c72181cf 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml @@ -9,11 +9,11 @@ Tagged content should not present inside content marked as Artifact - structureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + parentStructureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 Tagged content (tag %1) is present inside content marked as Artifact - structureTag + parentStructureTag diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 944f3442..8917f0a4 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -79,11 +79,11 @@ Tagged content should not present inside content marked as Artifact - structureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + parentStructureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 Tagged content (tag %1) is present inside content marked as Artifact - structureTag + parentStructureTag diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index e46c8b39..37f70f77 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -914,7 +914,7 @@ Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || parentStructureTag == null + tag != 'Artifact' || (parentStructureTag == null || isArtifact == true) Content marked as Artifact is present inside tagged content (tag %1) @@ -926,11 +926,11 @@ Tagged content should not present inside content marked as Artifact - structureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + (parentStructureTag == null || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 Tagged content (tag %1) is present inside content marked as Artifact - structureTag + parentStructureTag @@ -1984,7 +1984,7 @@ PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. - structParentType == null || isOutsideCropBox == true || (F & 2) == 2 + (structParentType == null || isArtifact == true) || isOutsideCropBox == true || (F & 2) == 2 A PrinterMark annotation is included in logical structure @@ -2298,7 +2298,7 @@ null - structureTag + parentStructureTag null From 35bcbfbf5b29df8c931294ed200a0f2efc577b86 Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 3 Nov 2023 21:24:51 +0300 Subject: [PATCH 481/557] WCAG. Update tags --- PDF_UA/WCAG-21-Complete.xml | 70 ++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 37f70f77..772a75e9 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -50,7 +50,7 @@ - + Pages shall have the same orientation orientation == 'Square' || gMostCommonPageOrientation == orientation @@ -911,7 +911,7 @@ - + Content marked as Artifact should not present inside tagged content tag != 'Artifact' || (parentStructureTag == null || isArtifact == true) @@ -923,7 +923,7 @@ - + Tagged content should not present inside content marked as Artifact (parentStructureTag == null || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 @@ -935,7 +935,7 @@ - + Content shall be marked as Artifact or tagged as real content parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 @@ -1054,7 +1054,7 @@
- + Natural language in the Outline entries shall be determined gSizeCatalogLang != 0 @@ -1455,7 +1455,7 @@
- + 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-1:2008, 14.9.2. @@ -1472,7 +1472,7 @@
- + Natural language for text in ActualText attribute in Span Marked Content shall be determined tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 @@ -1482,7 +1482,7 @@ - + Natural language for text in Alt attribute in Span Marked Content shall be determined tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 @@ -1492,7 +1492,7 @@ - + Natural language for text in E attribute in Span Marked Content shall be determined tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 @@ -1512,7 +1512,7 @@ - + Natural language for text in page content shall be determined gSizeCatalogLang != 0 || Lang != null @@ -1839,7 +1839,7 @@ - + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || @@ -1854,7 +1854,7 @@ - + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry @@ -1871,7 +1871,7 @@ - + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions @@ -1885,7 +1885,7 @@ - + Annotations of subtype TrapNet shall not be permitted. isOutsideCropBox == true || (F & 2) == 2 @@ -1895,7 +1895,7 @@ - + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. annots_size == 0 || Tabs == 'S' @@ -1907,7 +1907,7 @@ - + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 @@ -1936,7 +1936,7 @@ - + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. structParentStandardType == 'Link' || structParentStandardType == 'Reference' || @@ -1980,7 +1980,7 @@ - + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3. @@ -2016,7 +2016,7 @@ - + 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: @@ -2042,7 +2042,7 @@ - + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. @@ -2055,7 +2055,7 @@ - + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5. @@ -2085,7 +2085,7 @@ - + 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. @@ -2099,7 +2099,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || @@ -2128,7 +2128,7 @@ - + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -2140,7 +2140,7 @@ - + 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 @@ -2157,7 +2157,7 @@ - + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. @@ -2168,7 +2168,7 @@ - + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not. @@ -2179,7 +2179,7 @@ - + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent. @@ -2194,7 +2194,7 @@ - + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out. @@ -2205,7 +2205,7 @@ - + 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 @@ -2223,7 +2223,7 @@ - + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary isSymbolic == false || Encoding == null @@ -2233,7 +2233,7 @@ - + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, @@ -2248,7 +2248,7 @@ - + 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 ISO 14289-1, 7.21.7. @@ -2261,7 +2261,7 @@ - + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) @@ -2271,7 +2271,7 @@ - + A PDF/UA compliant document 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. From 6db5245fe814b6d2c9a40842a79aad6aed996ee6 Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 10 Nov 2023 21:26:08 +0300 Subject: [PATCH 482/557] PDF/A-1. Add rule 6.1.4-3 about xref stream --- .../verapdf-profile-6-1-4-t03.xml | 21 +++++++++++++++++++ PDF_A/PDFA-1A.xml | 10 +++++++++ PDF_A/PDFA-1B.xml | 10 +++++++++ 3 files changed, 41 insertions(+) create mode 100644 PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t03.xml diff --git a/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t03.xml b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t03.xml new file mode 100644 index 00000000..9766bfed --- /dev/null +++ b/PDF_A/1b/6.1 File structure/6.1.4 Cross reference table/verapdf-profile-6-1-4-t03.xml @@ -0,0 +1,21 @@ + + +
+ ISO 19005-1:2005 - 6.1.4 Cross reference table - Xref stream + Xref streams shall not be used +
+ + + + + Xref streams shall not be used + containsXRefStream == false + + The document uses xref streams + + + + + + +
diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index fe29e289..c41168e6 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -108,6 +108,16 @@
+ + + Xref streams shall not be used + containsXRefStream == false + + The document uses xref streams + + + + Hexadecimal strings shall contain an even number of non-white-space characters diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 96315c0b..23f43db3 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -108,6 +108,16 @@ + + + Xref streams shall not be used + containsXRefStream == false + + The document uses xref streams + + + + Hexadecimal strings shall contain an even number of non-white-space characters From 444b372aaa2858368ce40de2cb6734bc46b02190 Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 17 Nov 2023 00:07:02 +0300 Subject: [PATCH 483/557] PDF/A. Update rule descriptions 6.2.10.6-1(PDF/A-4) 6.8-3(PDF/A-3) --- .../3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml | 11 ++++++----- .../verapdf-profile-6-2-10-6-t01.xml | 2 +- PDF_A/PDFA-3A.xml | 7 ++++--- PDF_A/PDFA-3B.xml | 7 ++++--- PDF_A/PDFA-3U.xml | 7 ++++--- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 2 +- 8 files changed, 22 insertions(+), 18 deletions(-) diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml index 7cede964..12fdb534 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t03.xml @@ -2,18 +2,19 @@
ISO 19005-3:2012 - 6.8 Embedded files - AFRelationship - In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, - a new (required) key has been defined and its presence (in the dictionary) is required. + The file specification dictionary shall contain key AFRelationship of type Name identifying the + relationship between the embedded file and the content of the document
- In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, - a new (required) key has been defined and its presence (in the dictionary) is required. + The file specification dictionary shall contain key AFRelationship of type Name identifying the + relationship between the embedded file and the content of the document AFRelationship != null - The file specification dictionary for an embedded file does not contain the AFRelationship key + The file specification dictionary for an embedded file does not contain the AFRelationship key + or it has invalid value type diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml index 911a2599..5d4b5bf3 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml @@ -15,7 +15,7 @@ 'cmap' subtable that all necessary glyph lookups are able to be carried out. isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-symbolic TrueType font does not contain contain Microsoft + The embedded font program for a non-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. diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index b67f249c..ac0b8a49 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -2006,11 +2006,12 @@ - In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, - a new (required) key has been defined and its presence (in the dictionary) is required. + The file specification dictionary shall contain key AFRelationship of type Name identifying the + relationship between the embedded file and the content of the document AFRelationship != null - The file specification dictionary for an embedded file does not contain the AFRelationship key + The file specification dictionary for an embedded file does not contain the AFRelationship key + or it has invalid value type diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 5c1d8fa9..bc615d0c 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1892,11 +1892,12 @@ - In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, - a new (required) key has been defined and its presence (in the dictionary) is required. + The file specification dictionary shall contain key AFRelationship of type Name identifying the + relationship between the embedded file and the content of the document AFRelationship != null - The file specification dictionary for an embedded file does not contain the AFRelationship key + The file specification dictionary for an embedded file does not contain the AFRelationship key + or it has invalid value type diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 6b717ee3..377ea099 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1915,11 +1915,12 @@ - In order to enable identification of the relationship between the file specification dictionary and the content that is referring to it, - a new (required) key has been defined and its presence (in the dictionary) is required. + The file specification dictionary shall contain key AFRelationship of type Name identifying the + relationship between the embedded file and the content of the document AFRelationship != null - The file specification dictionary for an embedded file does not contain the AFRelationship key + The file specification dictionary for an embedded file does not contain the AFRelationship key + or it has invalid value type diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 3dd43c83..f1f5e84c 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -984,7 +984,7 @@ 'cmap' subtable that all necessary glyph lookups are able to be carried out. isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-symbolic TrueType font does not contain contain Microsoft + The embedded font program for a non-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. diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 8deaf73e..9b6f31ad 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -998,7 +998,7 @@ 'cmap' subtable that all necessary glyph lookups are able to be carried out. isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-symbolic TrueType font does not contain contain Microsoft + The embedded font program for a non-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. diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 79cbf380..a8407c87 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -984,7 +984,7 @@ 'cmap' subtable that all necessary glyph lookups are able to be carried out. isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-symbolic TrueType font does not contain contain Microsoft + The embedded font program for a non-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. From 3cbd77280fa7d43ddd7bdb7b37f85fd5170c69b3 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 23 Nov 2023 22:56:59 +0300 Subject: [PATCH 484/557] Rename github actions --- ...s-workflow.yml => update-library-PDFA-profiles-workflow.yml} | 2 +- ...e-workflow.yml => update-library-PDFUA-profile-workflow.yml} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{update-PDFA-profiles-workflow.yml => update-library-PDFA-profiles-workflow.yml} (98%) rename .github/workflows/{update-PDFUA-profile-workflow.yml => update-library-PDFUA-profile-workflow.yml} (100%) diff --git a/.github/workflows/update-PDFA-profiles-workflow.yml b/.github/workflows/update-library-PDFA-profiles-workflow.yml similarity index 98% rename from .github/workflows/update-PDFA-profiles-workflow.yml rename to .github/workflows/update-library-PDFA-profiles-workflow.yml index b2395e95..5cde474c 100644 --- a/.github/workflows/update-PDFA-profiles-workflow.yml +++ b/.github/workflows/update-library-PDFA-profiles-workflow.yml @@ -19,7 +19,7 @@ on: - '!PDF_A/4f/**' jobs: - update-files: + update-profiles: if: github.repository == 'veraPDF/veraPDF-validation-profiles' runs-on: ubuntu-latest steps: diff --git a/.github/workflows/update-PDFUA-profile-workflow.yml b/.github/workflows/update-library-PDFUA-profile-workflow.yml similarity index 100% rename from .github/workflows/update-PDFUA-profile-workflow.yml rename to .github/workflows/update-library-PDFUA-profile-workflow.yml From 4ee9df03141eca5e61ea80cb4b1e3f72a61e4e6f Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 23 Nov 2023 23:00:06 +0300 Subject: [PATCH 485/557] Add github actions for updating PDF/A profiles --- .../update-PDFA-profiles-workflow.yml | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .github/workflows/update-PDFA-profiles-workflow.yml diff --git a/.github/workflows/update-PDFA-profiles-workflow.yml b/.github/workflows/update-PDFA-profiles-workflow.yml new file mode 100644 index 00000000..21f1d19b --- /dev/null +++ b/.github/workflows/update-PDFA-profiles-workflow.yml @@ -0,0 +1,55 @@ +name: Update PDF_A profiles + +on: + push: + branches: + [ integration ] + paths: + - 'PDF_A/1a/**' + - 'PDF_A/1b/**' + - 'PDF_A/2a/**' + - 'PDF_A/2b/**' + - 'PDF_A/2u/**' + - 'PDF_A/3a/**' + - 'PDF_A/3b/**' + - 'PDF_A/3u/**' + - 'PDF_A/4/**' + - 'PDF_A/4e/**' + - 'PDF_A/4f/**' + +jobs: + update-profiles: + if: github.repository == 'veraPDF/veraPDF-validation-profiles' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Set up JDK 1.11 + uses: actions/setup-java@v1 + with: + java-version: 1.11 + - name: Run 'update-PDFA-profiles.yml' action in veraPDF-tools + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.WORKFLOW_TOKEN }} + script: | + await github.rest.actions.createWorkflowDispatch({ + owner: 'veraPDF', + repo: 'veraPDF-tools', + workflow_id: 'update-PDFA-profiles.yml', + ref: 'master', + inputs: { + commit: "${{ github.event.head_commit.message }}" + } + }) + + - name: Notify slack if action didn't run + if: failure() + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }} + uses: voxmedia/github-action-slack-notify-build@v1 + with: + channel_id: C03E3JJGLQL + status: FAILED + color: danger From b90fdc9f3b53eebb6acca4c0a0d158c11dd30876 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 20 Nov 2023 22:02:55 +0300 Subject: [PATCH 486/557] Update profiles --- .../verapdf-profile-6-3-8-t01.xml | 4 +- .../verapdf-profile-6-7-11-t03.xml | 6 +- .../verapdf-profile-6-8-2-2-t01.xml | 4 +- .../verapdf-profile-6-8-3-4-t01.xml | 4 +- .../verapdf-profile-6-8-3-4-t02.xml | 4 +- .../verapdf-profile-6-8-4-t01.xml | 4 +- .../verapdf-profile-6-1-3-t03.xml | 4 +- .../verapdf-profile-6-1-8-t01.xml | 4 +- .../verapdf-profile-6-3-2-t07.xml | 4 +- .../verapdf-profile-6-3-3-1-t01.xml | 2 +- .../verapdf-profile-6-3-5-t01.xml | 4 +- .../verapdf-profile-6-3-6-t01.xml | 4 +- .../verapdf-profile-6-3-7-t01.xml | 6 +- .../verapdf-profile-6-3-7-t02.xml | 2 +- .../verapdf-profile-6-3-7-t03.xml | 2 +- .../verapdf-profile-6-4-t02.xml | 2 +- .../verapdf-profile-6-4-t03.xml | 2 +- .../verapdf-profile-6-5-3-t02.xml | 6 +- .../verapdf-profile-6-5-3-t04.xml | 6 +- .../verapdf-profile-6-5-3-t05.xml | 6 +- .../verapdf-profile-6-5-3-t06.xml | 6 +- .../verapdf-profile-6-6-1-t01.xml | 2 +- .../verapdf-profile-6-6-1-t03.xml | 2 +- .../verapdf-profile-6-7-11-t01.xml | 6 +- .../verapdf-profile-6-7-11-t02.xml | 6 +- .../verapdf-profile-6-7-11-t03.xml | 6 +- .../verapdf-profile-6-7-2-t01.xml | 6 +- .../verapdf-profile-6-7-2-t02.xml | 6 +- .../verapdf-profile-6-7-3-t01.xml | 4 +- .../verapdf-profile-6-7-3-t02.xml | 4 +- .../verapdf-profile-6-7-3-t04.xml | 4 +- .../verapdf-profile-6-7-3-t05.xml | 4 +- .../verapdf-profile-6-7-3-t06.xml | 4 +- .../verapdf-profile-6-7-3-t07.xml | 4 +- .../verapdf-profile-6-7-3-t08.xml | 4 +- .../verapdf-profile-6-7-5-t01.xml | 6 +- .../verapdf-profile-6-7-5-t02.xml | 6 +- .../verapdf-profile-6-7-8-t01.xml | 4 +- .../verapdf-profile-6-7-8-t03.xml | 4 +- .../verapdf-profile-6-7-8-t04.xml | 4 +- .../verapdf-profile-6-7-8-t05.xml | 4 +- .../verapdf-profile-6-7-8-t06.xml | 4 +- .../verapdf-profile-6-7-8-t07.xml | 4 +- .../verapdf-profile-6-7-8-t08.xml | 4 +- .../verapdf-profile-6-7-8-t09.xml | 4 +- .../verapdf-profile-6-7-8-t10.xml | 4 +- .../verapdf-profile-6-7-8-t11.xml | 4 +- .../verapdf-profile-6-7-8-t12.xml | 4 +- .../verapdf-profile-6-7-8-t13.xml | 4 +- .../verapdf-profile-6-7-8-t14.xml | 4 +- .../verapdf-profile-6-7-8-t15.xml | 4 +- .../verapdf-profile-6-7-8-t16.xml | 4 +- .../verapdf-profile-6-7-8-t17.xml | 4 +- .../verapdf-profile-6-7-8-t18.xml | 4 +- .../verapdf-profile-6-7-8-t19.xml | 4 +- .../verapdf-profile-6-7-9-t01.xml | 2 +- .../verapdf-profile-6-7-9-t02.xml | 2 +- .../verapdf-profile-6-9-t02.xml | 6 +- .../verapdf-profile-6-2-11-7-3-t01.xml | 4 +- .../verapdf-profile-6-6-4-t03.xml | 6 +- .../verapdf-profile-6-7-2-2-t01.xml | 4 +- .../verapdf-profile-6-7-3-3-t01.xml | 4 +- .../verapdf-profile-6-7-3-4-t01.xml | 4 +- .../verapdf-profile-6-7-3-4-t02.xml | 4 +- .../verapdf-profile-6-7-4-t01.xml | 4 +- .../verapdf-profile-6-1-10-t01.xml | 9 +- .../verapdf-profile-6-1-12-t01.xml | 4 +- .../verapdf-profile-6-1-12-t02.xml | 6 +- .../verapdf-profile-6-1-13-t01.xml | 4 +- .../verapdf-profile-6-1-13-t03.xml | 4 +- .../verapdf-profile-6-1-13-t04.xml | 4 +- .../verapdf-profile-6-1-13-t05.xml | 4 +- .../verapdf-profile-6-1-13-t08.xml | 2 +- .../verapdf-profile-6-1-13-t09.xml | 4 +- .../verapdf-profile-6-1-13-t10.xml | 4 +- .../verapdf-profile-6-1-13-t11.xml | 4 +- .../verapdf-profile-6-1-3-t03.xml | 4 +- .../verapdf-profile-6-1-7-1-t01.xml | 4 +- .../verapdf-profile-6-1-7-1-t02.xml | 4 +- .../verapdf-profile-6-1-7-2-t01.xml | 7 +- .../verapdf-profile-6-1-8-t01.xml | 4 +- .../verapdf-profile-6-1-9-t01.xml | 4 +- .../verapdf-profile-6-2-10-t01.xml | 4 +- .../verapdf-profile-6-2-10-t02.xml | 6 +- .../verapdf-profile-6-2-11-2-t07.xml | 4 +- .../verapdf-profile-6-2-11-3-1-t01.xml | 4 +- .../verapdf-profile-6-2-11-3-2-t01.xml | 4 +- .../verapdf-profile-6-2-11-3-3-t01.xml | 4 +- .../verapdf-profile-6-2-11-3-3-t02.xml | 4 +- .../verapdf-profile-6-2-11-3-3-t03.xml | 4 +- .../verapdf-profile-6-2-11-4-1-t01.xml | 4 +- .../verapdf-profile-6-2-11-4-1-t02.xml | 4 +- .../verapdf-profile-6-2-11-4-2-t01.xml | 4 +- .../verapdf-profile-6-2-11-4-2-t02.xml | 4 +- .../verapdf-profile-6-2-11-5-t01.xml | 4 +- .../verapdf-profile-6-2-11-6-t01.xml | 4 +- .../verapdf-profile-6-2-11-6-t02.xml | 16 +- .../verapdf-profile-6-2-11-6-t04.xml | 4 +- .../verapdf-profile-6-2-11-8-t01.xml | 4 +- .../verapdf-profile-6-2-2-t01.xml | 4 +- .../verapdf-profile-6-2-2-t02.xml | 4 +- .../verapdf-profile-6-2-3-t01.xml | 4 +- .../verapdf-profile-6-2-3-t02.xml | 4 +- .../verapdf-profile-6-2-3-t03.xml | 4 +- .../verapdf-profile-6-2-4-2-t01.xml | 4 +- .../verapdf-profile-6-2-4-2-t02.xml | 4 +- .../verapdf-profile-6-2-4-3-t02.xml | 4 +- .../verapdf-profile-6-2-4-3-t03.xml | 4 +- .../verapdf-profile-6-2-4-3-t04.xml | 4 +- .../verapdf-profile-6-2-4-4-t01.xml | 4 +- .../verapdf-profile-6-2-4-4-t02.xml | 4 +- .../verapdf-profile-6-2-5-t04.xml | 4 +- .../verapdf-profile-6-2-5-t05.xml | 4 +- .../verapdf-profile-6-2-5-t06.xml | 4 +- .../verapdf-profile-6-2-6-t01.xml | 4 +- .../verapdf-profile-6-2-8-t02.xml | 2 +- .../verapdf-profile-6-2-8-t03.xml | 4 +- .../verapdf-profile-6-2-8-3-t01.xml | 4 +- .../verapdf-profile-6-2-8-3-t02.xml | 6 +- .../verapdf-profile-6-2-8-3-t03.xml | 4 +- .../verapdf-profile-6-2-8-3-t04.xml | 4 +- .../verapdf-profile-6-2-8-3-t05.xml | 4 +- .../verapdf-profile-6-2-9-t01.xml | 4 +- .../verapdf-profile-6-3-1-t01.xml | 4 +- .../verapdf-profile-6-3-2-t01.xml | 4 +- .../verapdf-profile-6-3-2-t02.xml | 12 +- .../verapdf-profile-6-3-3-t01.xml | 4 +- .../verapdf-profile-6-3-3-t02.xml | 4 +- .../verapdf-profile-6-3-3-t03.xml | 4 +- .../verapdf-profile-6-3-3-t04.xml | 4 +- .../verapdf-profile-6-4-1-t01.xml | 4 +- .../verapdf-profile-6-4-1-t02.xml | 4 +- .../verapdf-profile-6-4-1-t03.xml | 4 +- .../verapdf-profile-6-4-2-t01.xml | 4 +- .../verapdf-profile-6-4-2-t02.xml | 4 +- .../verapdf-profile-6-4-3-t01.xml | 4 +- .../verapdf-profile-6-4-3-t02.xml | 4 +- .../verapdf-profile-6-4-3-t03.xml | 4 +- .../verapdf-profile-6-5-1-t01.xml | 4 +- .../verapdf-profile-6-5-1-t02.xml | 4 +- .../verapdf-profile-6-5-2-t01.xml | 4 +- .../verapdf-profile-6-5-2-t02.xml | 4 +- .../verapdf-profile-6-6-2-1-t01.xml | 6 +- .../verapdf-profile-6-6-2-1-t02.xml | 6 +- .../verapdf-profile-6-6-2-1-t03.xml | 6 +- .../verapdf-profile-6-6-2-1-t04.xml | 6 +- .../verapdf-profile-6-6-2-1-t05.xml | 4 +- .../verapdf-profile-6-6-2-3-1-t01.xml | 7 +- .../verapdf-profile-6-6-2-3-1-t02.xml | 4 +- .../verapdf-profile-6-6-2-3-2-t01.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t02.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t03.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t04.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t05.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t06.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t07.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t08.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t09.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t10.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t11.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t12.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t13.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t14.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t15.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t16.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t17.xml | 4 +- .../verapdf-profile-6-6-2-3-3-t18.xml | 4 +- .../verapdf-profile-6-6-4-t01.xml | 6 +- .../verapdf-profile-6-6-4-t02.xml | 6 +- .../verapdf-profile-6-6-4-t03.xml | 6 +- .../verapdf-profile-6-8-t05.xml | 4 +- .../verapdf-profile-6-9-t01.xml | 4 +- .../verapdf-profile-6-9-t02.xml | 4 +- .../verapdf-profile-6-9-t03.xml | 4 +- .../verapdf-profile-6-9-t04.xml | 4 +- .../verapdf-profile-6-2-11-7-2-t01.xml | 4 +- .../verapdf-profile-6-2-11-7-2-t02.xml | 4 +- .../verapdf-profile-6-6-4-t03.xml | 6 +- .../verapdf-profile-6-6-4-t03.xml | 6 +- .../verapdf-profile-6-2-11-6-t02.xml | 37 + .../verapdf-profile-6-6-4-t02.xml | 8 +- .../verapdf-profile-6-6-4-t03.xml | 8 +- .../verapdf-profile-6-8-t01.xml | 4 +- .../verapdf-profile-6-8-t04.xml | 4 +- .../verapdf-profile-6-6-4-t03.xml | 8 +- .../verapdf-profile-6-1-11-t01.xml | 4 +- .../verapdf-profile-6-1-12-t01.xml | 6 +- .../verapdf-profile-6-1-3-t02.xml | 4 +- .../verapdf-profile-6-1-3-t03.xml | 4 +- .../verapdf-profile-6-1-3-t04.xml | 4 +- .../verapdf-profile-6-1-3-t05.xml | 4 +- .../verapdf-profile-6-1-6-1-t01.xml | 4 +- .../verapdf-profile-6-1-6-2-t01.xml | 7 +- .../verapdf-profile-6-1-7-t01.xml | 4 +- .../verapdf-profile-6-1-8-t01.xml | 4 +- .../verapdf-profile-6-1-9-t01.xml | 7 +- .../verapdf-profile-6-10-t01.xml | 4 +- .../verapdf-profile-6-10-t02.xml | 4 +- .../verapdf-profile-6-10-t03.xml | 4 +- .../verapdf-profile-6-2-10-2-t07.xml | 4 +- .../verapdf-profile-6-2-10-3-1-t01.xml | 4 +- .../verapdf-profile-6-2-10-3-2-t01.xml | 4 +- .../verapdf-profile-6-2-10-3-3-t01.xml | 4 +- .../verapdf-profile-6-2-10-3-3-t02.xml | 4 +- .../verapdf-profile-6-2-10-3-3-t03.xml | 4 +- .../verapdf-profile-6-2-10-4-1-t01.xml | 4 +- .../verapdf-profile-6-2-10-4-1-t02.xml | 4 +- .../verapdf-profile-6-2-10-5-t01.xml | 4 +- .../verapdf-profile-6-2-10-6-t01.xml | 6 +- .../verapdf-profile-6-2-10-6-t02.xml | 4 +- .../verapdf-profile-6-2-10-6-t04.xml | 6 +- .../verapdf-profile-6-2-10-7-t01.xml | 4 +- .../verapdf-profile-6-2-10-8-t01.xml | 4 +- .../verapdf-profile-6-2-10-9-t01.xml | 4 +- .../verapdf-profile-6-2-2-t01.xml | 4 +- .../verapdf-profile-6-2-2-t02.xml | 4 +- .../verapdf-profile-6-2-2-t03.xml | 6 +- .../verapdf-profile-6-2-3-t01.xml | 4 +- .../verapdf-profile-6-2-3-t02.xml | 4 +- .../verapdf-profile-6-2-3-t03.xml | 4 +- .../verapdf-profile-6-2-4-2-t01.xml | 4 +- .../verapdf-profile-6-2-4-2-t02.xml | 4 +- .../verapdf-profile-6-2-4-2-t03.xml | 4 +- .../verapdf-profile-6-2-4-3-t02.xml | 4 +- .../verapdf-profile-6-2-4-3-t03.xml | 4 +- .../verapdf-profile-6-2-4-3-t04.xml | 4 +- .../verapdf-profile-6-2-4-4-t01.xml | 4 +- .../verapdf-profile-6-2-4-4-t02.xml | 4 +- .../verapdf-profile-6-2-5-t04.xml | 4 +- .../verapdf-profile-6-2-5-t05.xml | 4 +- .../verapdf-profile-6-2-5-t06.xml | 4 +- .../verapdf-profile-6-2-7-1-t02.xml | 2 +- .../verapdf-profile-6-2-7-1-t03.xml | 4 +- .../verapdf-profile-6-2-7-3-t01.xml | 4 +- .../verapdf-profile-6-2-7-3-t02.xml | 6 +- .../verapdf-profile-6-2-7-3-t03.xml | 4 +- .../verapdf-profile-6-2-7-3-t04.xml | 4 +- .../verapdf-profile-6-2-7-3-t05.xml | 6 +- .../verapdf-profile-6-2-8-1-t01.xml | 4 +- .../verapdf-profile-6-2-9-t01.xml | 4 +- .../verapdf-profile-6-2-9-t02.xml | 6 +- .../verapdf-profile-6-3-1-t01.xml | 4 +- .../verapdf-profile-6-3-2-t01.xml | 4 +- .../verapdf-profile-6-3-2-t02.xml | 12 +- .../verapdf-profile-6-3-3-t01.xml | 4 +- .../verapdf-profile-6-3-3-t02.xml | 4 +- .../verapdf-profile-6-3-3-t03.xml | 4 +- .../verapdf-profile-6-3-3-t04.xml | 4 +- .../verapdf-profile-6-4-1-t01.xml | 2 +- .../verapdf-profile-6-4-1-t02.xml | 4 +- .../verapdf-profile-6-4-2-t01.xml | 4 +- .../verapdf-profile-6-4-2-t02.xml | 4 +- .../verapdf-profile-6-6-1-t01.xml | 4 +- .../verapdf-profile-6-6-1-t02.xml | 4 +- .../verapdf-profile-6-6-3-t01.xml | 4 +- .../verapdf-profile-6-7-2-1-t01.xml | 6 +- .../verapdf-profile-6-7-2-1-t02.xml | 6 +- .../verapdf-profile-6-7-2-1-t03.xml | 6 +- .../verapdf-profile-6-7-2-1-t04.xml | 6 +- .../verapdf-profile-6-7-2-1-t05.xml | 4 +- .../verapdf-profile-6-7-3-t01.xml | 6 +- .../verapdf-profile-6-7-3-t02.xml | 6 +- .../verapdf-profile-6-7-3-t03.xml | 6 +- .../verapdf-profile-6-7-3-t05.xml | 6 +- .../verapdf-profile-6-9-t01.xml | 4 +- .../verapdf-profile-6-9-t04.xml | 4 +- .../verapdf-profile-6-1-6-1-t03.xml | 4 +- .../verapdf-profile-6-3-1-t01.xml | 4 +- .../verapdf-profile-6-6-1-t01.xml | 4 +- .../verapdf-profile-6-7-3-t03.xml | 6 +- .../verapdf-profile-6-3-1-t01.xml | 4 +- .../verapdf-profile-6-7-3-t03.xml | 6 +- .../verapdf-profile-6-9-t05.xml | 6 +- PDF_A/PDFA-1A.xml | 505 +++++-------- PDF_A/PDFA-1B.xml | 487 +++++------- PDF_A/PDFA-2A.xml | 691 ++++++----------- PDF_A/PDFA-2B.xml | 661 ++++++----------- PDF_A/PDFA-2U.xml | 668 ++++++----------- PDF_A/PDFA-3A.xml | 702 ++++++------------ PDF_A/PDFA-3B.xml | 672 ++++++----------- PDF_A/PDFA-3U.xml | 679 ++++++----------- PDF_A/PDFA-4.xml | 518 ++++--------- PDF_A/PDFA-4E.xml | 536 +++++-------- PDF_A/PDFA-4F.xml | 527 ++++--------- .../verapdf-profile-5-t01.xml | 8 +- .../verapdf-profile-5-t02.xml | 8 +- .../verapdf-profile-5-t03.xml | 2 +- .../verapdf-profile-5-t04.xml | 2 +- .../verapdf-profile-5-t05.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t01.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t02.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t03.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t04.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t05.xml | 6 +- .../1/7.1 General/verapdf-profile-7-1-t06.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t07.xml | 6 +- .../1/7.1 General/verapdf-profile-7-1-t08.xml | 8 +- .../1/7.1 General/verapdf-profile-7-1-t09.xml | 6 +- .../1/7.1 General/verapdf-profile-7-1-t10.xml | 6 +- .../1/7.1 General/verapdf-profile-7-1-t11.xml | 6 +- .../verapdf-profile-7-10-t01.xml | 6 +- .../verapdf-profile-7-10-t02.xml | 6 +- .../verapdf-profile-7-11-t01.xml | 2 +- .../1/7.15 XFA/verapdf-profile-7-15-t01.xml | 2 +- .../verapdf-profile-7-16-t01.xml | 11 +- .../verapdf-profile-7-18-1-t01.xml | 2 +- .../verapdf-profile-7-18-1-t02.xml | 2 +- .../verapdf-profile-7-18-1-t03.xml | 2 +- .../verapdf-profile-7-18-2-t01.xml | 6 +- .../verapdf-profile-7-18-3-t01.xml | 8 +- .../verapdf-profile-7-18-4-t01.xml | 6 +- .../verapdf-profile-7-18-4-t02.xml | 7 +- .../verapdf-profile-7-18-5-t01.xml | 6 +- .../verapdf-profile-7-18-5-t02.xml | 6 +- .../verapdf-profile-7-18-6-2-t01.xml | 6 +- .../verapdf-profile-7-18-6-2-t02.xml | 6 +- .../verapdf-profile-7-18-8-t01.xml | 6 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml | 2 +- .../7.2 Text/verapdf-profile-7-2-t03-t15.xml | 28 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml | 2 +- .../7.2 Text/verapdf-profile-7-2-t17-t20.xml | 10 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml | 2 +- .../7.2 Text/verapdf-profile-7-2-t26-t27.xml | 6 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml | 6 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml | 2 +- .../7.2 Text/verapdf-profile-7-2-t36-t38.xml | 8 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml | 2 +- .../verapdf-profile-7-20-t01.xml | 2 +- .../verapdf-profile-7-20-t02.xml | 6 +- .../verapdf-profile-7-21-3-1-t01.xml | 6 +- .../verapdf-profile-7-21-3-2-t01.xml | 6 +- .../verapdf-profile-7-21-3-3-t01.xml | 6 +- .../verapdf-profile-7-21-3-3-t02.xml | 6 +- .../verapdf-profile-7-21-3-3-t03.xml | 6 +- .../verapdf-profile-7-21-4-1-t01.xml | 6 +- .../verapdf-profile-7-21-4-1-t02.xml | 6 +- .../verapdf-profile-7-21-4-2-t01.xml | 6 +- .../verapdf-profile-7-21-4-2-t02.xml | 6 +- .../verapdf-profile-7-21-5-t01.xml | 6 +- .../verapdf-profile-7-21-6-t01.xml | 6 +- .../verapdf-profile-7-21-6-t02.xml | 6 +- .../verapdf-profile-7-21-6-t03.xml | 2 +- .../verapdf-profile-7-21-6-t04.xml | 6 +- .../verapdf-profile-7-21-7-t01.xml | 6 +- .../verapdf-profile-7-21-7-t02.xml | 8 +- .../verapdf-profile-7-21-8-t01.xml | 6 +- .../7.3 Graphics/verapdf-profile-7-3-t01.xml | 2 +- .../verapdf-profile-7-4-2-t01.xml | 6 +- .../verapdf-profile-7-4-4-t01.xml | 6 +- .../verapdf-profile-7-4-4-t02.xml | 6 +- .../verapdf-profile-7-4-4-t03.xml | 6 +- .../1/7.5 Tables/verapdf-profile-7-5-t01.xml | 5 +- .../1/7.5 Tables/verapdf-profile-7-5-t02.xml | 4 +- .../verapdf-profile-7-7-t01.xml | 2 +- .../verapdf-profile-7-9-t01.xml | 2 +- .../verapdf-profile-7-9-t02.xml | 2 +- PDF_UA/PDFUA-1.xml | 509 +++++-------- PDF_UA/WCAG-21-Complete.xml | 454 +++-------- PDF_UA/WCAG-21-Dev.xml | 76 +- PDF_UA/WCAG-21.xml | 192 ++--- .../verapdf-profile-1-4-3-t01.xml | 6 +- .../verapdf-profile-4-1-2-t01.xml | 6 +- .../verapdf-profile-4-1-2-t02.xml | 6 +- .../verapdf-profile-4-1-2-t03.xml | 6 +- .../verapdf-profile-4-1-2-t06.xml | 6 +- .../verapdf-profile-4-1-2-t07.xml | 6 +- .../verapdf-profile-4-1-2-t08.xml | 6 +- .../verapdf-profile-4-1-2-t09.xml | 6 +- .../verapdf-profile-4-1-2-t10.xml | 6 +- .../verapdf-profile-4-1-2-t11.xml | 6 +- 383 files changed, 3579 insertions(+), 6007 deletions(-) create mode 100644 PDF_A/3b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml diff --git a/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml b/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml index 8439a4f9..ae98d368 100644 --- a/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml +++ b/PDF_A/1a/6.3 Fonts/6.3.8 Unicode character maps/verapdf-profile-6-3-8-t01.xml @@ -6,7 +6,7 @@ as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections. + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections
@@ -16,7 +16,7 @@ as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections. + (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections toUnicode != null The font does not define Unicode character map diff --git a/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml b/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml index a2368708..04aad514 100644 --- a/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - A Level A conforming file shall specify the value of pdfaid:conformance as A. + A Level A conforming file shall specify the value of pdfaid:conformance as A
- A Level A conforming file shall specify the value of pdfaid:conformance as A. + A Level A conforming file shall specify the value of pdfaid:conformance as A conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file conformance diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/6.8.2.2 Mark information dictionary/verapdf-profile-6-8-2-2-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/6.8.2.2 Mark information dictionary/verapdf-profile-6-8-2-2-t01.xml index 1c56c29d..a8d0525a 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/6.8.2.2 Mark information dictionary/verapdf-profile-6-8-2-2-t01.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.2 Tagged PDF/6.8.2.2 Mark information dictionary/verapdf-profile-6-8-2-2-t01.xml @@ -2,13 +2,13 @@
ISO 19005-1:2005 - 6.8.2 Tagged PDF - 6.8.2.2 Mark information dictionary - Marked entry - The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true. + The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true
- The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true. + The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true Marked == true MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml index fbd102e4..202f9214 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.8.3 Artifacts - 6.8.3.4 Structure types - Standard roles All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. + defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root
All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. + defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root circularMappingExist == true Non-standard structure type %1 is not mapped to a standard type diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml index 1f9b096d..44857ef4 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t02.xml @@ -2,13 +2,13 @@
ISO 19005-1:2005 - 6.8.3 Artifacts - 6.8.3.4 Structure types - Circular mapping - A circular mapping shall not exist. + A circular mapping shall not exist
- A circular mapping shall not exist. + A circular mapping shall not exist circularMappingExist != true A circular mapping exists for %1 structure type diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml index a41f252a..a9b91300 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml @@ -4,7 +4,7 @@ ISO 19005-1:2005 - 6.8.4 Natural language specification If the Lang entry is present in the document catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for the - Identification of Languages, as described in PDF Reference 9.8.1. + Identification of Languages, as described in PDF Reference 9.8.1
@@ -12,7 +12,7 @@ If the Lang entry is present in the document catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for - the Identification of Languages, as described in PDF Reference 9.8.1. + the Identification of Languages, as described in PDF Reference 9.8.1
unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})*$/.test(unicodeValue) Value %1 of the Lang entry is not Language-Tag diff --git a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml index 1e60af7e..71cf7fdc 100644 --- a/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml +++ b/PDF_A/1b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -2,13 +2,13 @@
ISO 19005-1:2005 - 6.1.3 File trailer - EOF - No data shall follow the last end-of-file marker except a single optional end-of-line marker. + No data shall follow the last end-of-file marker except a single optional end-of-line marker
- No data shall follow the last end-of-file marker except a single optional end-of-line marker. + No data shall follow the last end-of-file marker except a single optional end-of-line marker postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker diff --git a/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml index 06281884..3e9c89b9 100644 --- a/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/1b/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml @@ -4,7 +4,7 @@ ISO 19005-1:2005 - 6.1.8 Indirect objects - Spacings The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + keywords shall each be followed by an EOL marker
@@ -12,7 +12,7 @@ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' diff --git a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml index 5d0536d8..590d71f5 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.2 Font types/verapdf-profile-6-3-2-t07.xml @@ -5,7 +5,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF). + in the Compact Font Format (CFF)
@@ -14,7 +14,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF). + in the Compact Font Format (CFF) fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" Unsupported font file format %1 of the embedded font diff --git a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.1 General/verapdf-profile-6-3-3-1-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.1 General/verapdf-profile-6-3-3-1-t01.xml index 6856dbca..d423c665 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.1 General/verapdf-profile-6-3-3-1-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.3 Composite fonts/6.3.3.1 General/verapdf-profile-6-3-3-1-t01.xml @@ -11,7 +11,7 @@ For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries - for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. + for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry) diff --git a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml index 7467a1bb..0536b0ab 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.5 Font subsets/verapdf-profile-6-3-5-t01.xml @@ -2,13 +2,13 @@
ISO 19005-1:2005 - 6.3.5 Font subsets - Embedded font programs shall define all font glyphs referenced for rendering with conforming file. + Embedded font programs shall define all font glyphs referenced for rendering with conforming file
- Embedded font programs shall define all font glyphs referenced for rendering with conforming file. + Embedded font programs shall define all font glyphs referenced for rendering with conforming file renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml index 5217b83e..0640b098 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.6 Font metrics/verapdf-profile-6-3-6-t01.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.3.6 Font metrics For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and - in the embedded font program shall be consistent. + in the embedded font program shall be consistent
For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and - in the embedded font program shall be consistent. + in the embedded font program shall be consistent renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml index 1e1cf59c..d1a31849 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t01.xml @@ -5,7 +5,7 @@ All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry
@@ -14,7 +14,7 @@ All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. + If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && containsDifferences == false) @@ -26,7 +26,7 @@ - + diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml index 40edb86b..e2435fd0 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t02.xml @@ -15,7 +15,7 @@ - + diff --git a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml index 0382242e..0557dc71 100644 --- a/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml +++ b/PDF_A/1b/6.3 Fonts/6.3.7 Character encodings/verapdf-profile-6-3-7-t03.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml index 551a8b58..06a53739 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t02.xml @@ -15,7 +15,7 @@ - + diff --git a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml index ca2d43c5..08b5b73e 100644 --- a/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml +++ b/PDF_A/1b/6.4 Transparency/verapdf-profile-6-4-t03.xml @@ -17,7 +17,7 @@ - + diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml index 724ddf92..b5f1853a 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t02.xml @@ -17,10 +17,10 @@ (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5) F - F != null ? (F & 4) >> 2 : null - F != null ? (F & 2) >> 1 : null + F != null ? (F & 4) >> 2 : null + F != null ? (F & 2) >> 1 : null F != null ? (F & 1) : null - F != null ? (F & 32) >> 5 : null + F != null ? (F & 32) >> 5 : null diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml index 018dc85b..1286ac26 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t04.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as - its value shall contain only the N key. + its value shall contain only the N key
For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as - its value shall contain only the N key. + its value shall contain only the N key AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -19,7 +19,7 @@
- + diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t05.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t05.xml index b81bcdce..8b608707 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t05.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t05.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, - the value of the N key shall be an appearance subdictionary. + the value of the N key shall be an appearance subdictionary
If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, - the value of the N key shall be an appearance subdictionary. + the value of the N key shall be an appearance subdictionary AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of @@ -20,7 +20,7 @@
- + diff --git a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t06.xml b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t06.xml index c12b3c5c..f0d128a2 100644 --- a/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t06.xml +++ b/PDF_A/1b/6.5 Annotations/6.5.3 Annotation dictionaries/verapdf-profile-6-5-3-t06.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.5.3 Annotation dictionaries - Normal appearance If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the @@ -21,7 +21,7 @@ - + diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml index 9c92f9ca..da41e097 100644 --- a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -19,7 +19,7 @@ - + diff --git a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml index d8485539..5a4710d1 100644 --- a/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml +++ b/PDF_A/1b/6.6 Actions/6.6.1 General/verapdf-profile-6-6-1-t03.xml @@ -2,7 +2,7 @@
ISO 19005-1:2005 - 6.6.1 Actions General - Form fields - Interactive form fields shall not perform actions of any type. + Interactive form fields shall not perform actions of any type
diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t01.xml index 847bad49..b616dd8a 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t01.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema. - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
- The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml index 9d08a3ce..8cf85c77 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - Part number. - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms
- The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 1 - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file part diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml index 808d2a06..f6b11163 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - Conformance level. - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B
- A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B conformance == "B" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file conformance diff --git a/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml index 09acb030..3c0465fb 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t01.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.7.2 Properties - Contains Metadata Key - The document catalog dictionary of a conforming file shall contain the Metadata key. + The document catalog dictionary of a conforming file shall contain the Metadata key
- The document catalog dictionary of a conforming file shall contain the Metadata key. + The document catalog dictionary of a conforming file shall contain the Metadata key metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key diff --git a/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml index e4876af0..77a40b29 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.2 Properties/verapdf-profile-6-7-2-t02.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.7.2 Properties - Contains Metadata Key - Metadata object stream dictionaries shall not contain the Filter key. + Metadata object stream dictionaries shall not contain the Filter key
- Metadata object stream dictionaries shall not contain the Filter key. + Metadata object stream dictionaries shall not contain the Filter key Filter == null - The metadata object stream dictionary contains the Filter key. + The metadata object stream dictionary contains the Filter key diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml index 50107457..275eab69 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - CreationDate and xmp:CreateDate The value of CreationDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreateDate shall be equivalent. + analogous XMP property xmp:CreateDate shall be equivalent
The value of CreationDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreateDate shall be equivalent. + analogous XMP property xmp:CreateDate shall be equivalent doCreationDatesMatch != false The value of CreationDate entry from the document Info dictionary and its matching XMP property diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml index ce967a5c..54b4dedf 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Title and dc:title The value of Title entry from the document information dictionary, if present, and its - analogous XMP property dc:title['x-default'] shall be equivalent. + analogous XMP property dc:title['x-default'] shall be equivalent
The value of Title entry from the document information dictionary, if present, and its - analogous XMP property dc:title['x-default'] shall be equivalent. + analogous XMP property dc:title['x-default'] shall be equivalent Title == null || Title == XMPTitle The value of Title entry from the document Info dictionary and its matching XMP property diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml index 86009825..39f96452 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Subject and dc:description The value of Subject entry from the document information dictionary, if present, and its - analogous XMP property dc:description['x-default'] shall be equivalent. + analogous XMP property dc:description['x-default'] shall be equivalent
The value of Subject entry from the document information dictionary, if present, and its - analogous XMP property dc:description['x-default'] shall be equivalent. + analogous XMP property dc:description['x-default'] shall be equivalent Subject == null || Subject == XMPDescription The value of Subject entry from the document Info dictionary and its matching XMP property diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml index 1b2b65e5..f74b81d5 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Keywords and pdf:Keywords The value of Keywords entry from the document information dictionary, if present, and its - analogous XMP property pdf:Keywords shall be equivalent. + analogous XMP property pdf:Keywords shall be equivalent
The value of Keywords entry from the document information dictionary, if present, and its - analogous XMP property pdf:Keywords shall be equivalent. + analogous XMP property pdf:Keywords shall be equivalent Keywords == null || Keywords == XMPKeywords The value of Keywords entry from the document Info dictionary and its matching XMP property diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml index c6596d54..9c032222 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Creator and xmp:CreatorTool The value of Creator entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreatorTool shall be equivalent. + analogous XMP property xmp:CreatorTool shall be equivalent
The value of Creator entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreatorTool shall be equivalent. + analogous XMP property xmp:CreatorTool shall be equivalent Creator == null || Creator == XMPCreatorTool The value of Creator entry from the document Info dictionary and its matching XMP property diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml index 173dd0b4..c13ca9d3 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Producer and pdf:Producer The value of Producer entry from the document information dictionary, if present, and its - analogous XMP property pdf:Producer shall be equivalent. + analogous XMP property pdf:Producer shall be equivalent
The value of Producer entry from the document information dictionary, if present, and its - analogous XMP property pdf:Producer shall be equivalent. + analogous XMP property pdf:Producer shall be equivalent Producer == null || Producer == XMPProducer The value of Producer entry from the document Info dictionary and its matching XMP property diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml index 3ba00bdf..c7dfd9de 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - ModDate and xmp:ModifyDate The value of ModDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:ModifyDate shall be equivalent. + analogous XMP property xmp:ModifyDate shall be equivalent
The value of ModDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:ModifyDate shall be equivalent. + analogous XMP property xmp:ModifyDate shall be equivalent doModDatesMatch != false The value of ModDate entry from the document Info dictionary and its matching XMP property diff --git a/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml index 7b4fd5fe..e98be2bc 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t01.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.7.5 XMP header - bytes attribute - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet
- The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute diff --git a/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml index dd162847..b18f3093 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.5 XMP Header/verapdf-profile-6-7-5-t02.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.7.5 XMP header - encoding attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet
- The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml index 3515e8bd..c9b16515 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t01.xml @@ -2,13 +2,13 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Container schema fields - Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. + Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause
- Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. + Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause containsUndefinedFields == false An extension schema object contains field(s) %1 not defined by the specification diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml index 3e31bd7c..fe699f70 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t03.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - schema field Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. + and shall have type Text and namespace prefix 'pdfaSchema'
Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. + and shall have type Text and namespace prefix 'pdfaSchema' isSchemaValidText == true && schemaPrefix == "pdfaSchema" Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml index 12f79308..307a12be 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t04.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - namespaceURI field Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. + present and shall have type URI and namespace prefix 'pdfaSchema'
Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. + present and shall have type URI and namespace prefix 'pdfaSchema' isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml index 6ed75d55..ebf64e4a 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t05.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - prefix field Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. + and shall have type Text and namespace prefix 'pdfaSchema'
Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. + and shall have type Text and namespace prefix 'pdfaSchema' isPrefixValidText == true && prefixPrefix == "pdfaSchema" Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml index d9681156..151723eb 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t06.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - property field Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have - type Seq Property and namespace prefix 'pdfaSchema'. + type Seq Property and namespace prefix 'pdfaSchema'
Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq Property and namespace prefix 'pdfaSchema'. + Seq Property and namespace prefix 'pdfaSchema' isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t07.xml index ac255125..bec94fe6 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t07.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t07.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema definition - valueType field Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. + Seq ValueType and namespace prefix 'pdfaSchema'
Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. + Seq ValueType and namespace prefix 'pdfaSchema' isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t08.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t08.xml index 97e85784..cf1e3fdc 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t08.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t08.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - name field Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. + and shall have type Text and namespace prefix 'pdfaProperty'
Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. + and shall have type Text and namespace prefix 'pdfaProperty' isNameValidText == true && namePrefix == "pdfaProperty" Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t09.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t09.xml index 39e5351b..5e233c0f 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t09.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t09.xml @@ -4,7 +4,7 @@ ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - valueType field Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. + be defined
@@ -12,7 +12,7 @@ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. + be defined isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t10.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t10.xml index 466e5346..53d816c1 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t10.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t10.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - category field Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty' isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty" diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t11.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t11.xml index ca3441ff..3910b555 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t11.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t11.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema property - description field Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. + present and shall have type Text and namespace prefix 'pdfaProperty'
Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. + present and shall have type Text and namespace prefix 'pdfaProperty' isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t12.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t12.xml index b6c66a3e..0ebe7115 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t12.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t12.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - type field Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. + and shall have type Text and namespace prefix 'pdfaType'
Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. + and shall have type Text and namespace prefix 'pdfaType' isTypeValidText == true && typePrefix == "pdfaType" Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t13.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t13.xml index a7f2826c..12afb4dd 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t13.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t13.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - namespaceURI field Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. + present and shall have type URI and namespace prefix 'pdfaType'
Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. + present and shall have type URI and namespace prefix 'pdfaType' isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml index a6f5f311..0f65a5ac 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t14.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - prefix field Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. + shall have type Text and namespace prefix 'pdfaType'
Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. + shall have type Text and namespace prefix 'pdfaType' isPrefixValidText == true && prefixPrefix == "pdfaType" Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t15.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t15.xml index ac065153..971daedf 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t15.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t15.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - description field Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. + present and shall have type Text and namespace prefix 'pdfaType'
Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. + present and shall have type Text and namespace prefix 'pdfaType' isDescriptionValidText == true && descriptionPrefix == "pdfaType" Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t16.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t16.xml index 19835165..5368d800 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t16.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t16.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema ValueType type - field field Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. + Seq Field and namespace prefix 'pdfaType'
Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. + Seq Field and namespace prefix 'pdfaType' isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t17.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t17.xml index 6bd1aa44..4d3ae0e7 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t17.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t17.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema Field type - name field Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. + and namespace prefix 'pdfaField'
Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. + and namespace prefix 'pdfaField' isNameValidText == true && namePrefix == "pdfaField" Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t18.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t18.xml index d344bbf3..551ffe20 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t18.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t18.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema Field type - valueType field Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t19.xml b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t19.xml index 17709112..83db104d 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t19.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.8 Extension schemas/verapdf-profile-6-7-8-t19.xml @@ -3,14 +3,14 @@
ISO 19005-1:2005 - 6.7.8 Extension schemas - Extension schema Field type - description field Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. + Text and namespace prefix 'pdfaField'
Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. + Text and namespace prefix 'pdfaField' isDescriptionValidText == true && descriptionPrefix == "pdfaField" Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml index e76d21e2..43e4d97b 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t01.xml @@ -11,7 +11,7 @@ The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions isSerializationValid - The serialization of the metadata stream does not conform to XMP Specification. + The serialization of the metadata stream does not conform to XMP Specification diff --git a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml index fcc25e82..0f1b07ca 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.9 Validation/verapdf-profile-6-7-9-t02.xml @@ -13,7 +13,7 @@ or extension schemas that comply with XMP Specification isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true - A property is either not defined in XMP Specification, or is not defined in any of the extension schemas. + A property is either not defined in XMP Specification, or is not defined in any of the extension schemas diff --git a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml index 471a2d2f..217d6fb0 100644 --- a/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml +++ b/PDF_A/1b/6.9 Interactive Forms/verapdf-profile-6-9-t02.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.9 Interactive Forms - Form field appearance - Every form field shall have an appearance dictionary associated with the field's data. + Every form field shall have an appearance dictionary associated with the field's data
- Every form field shall have an appearance dictionary associated with the field's data. + Every form field shall have an appearance dictionary associated with the field's data AP != null - Form field does not have an appearance dictionary associated with the field's data. + Form field does not have an appearance dictionary associated with the field's data diff --git a/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.3 Level A conformance/verapdf-profile-6-2-11-7-3-t01.xml b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.3 Level A conformance/verapdf-profile-6-2-11-7-3-t01.xml index 07e1e95a..b419b7be 100644 --- a/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.3 Level A conformance/verapdf-profile-6-2-11-7-3-t01.xml +++ b/PDF_A/2a/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.3 Level A conformance/verapdf-profile-6-2-11-7-3-t01.xml @@ -5,7 +5,7 @@ For any character, regardless of its rendering mode, that is mapped to a code or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a - character is a part. + character is a part
@@ -14,7 +14,7 @@ For any character, regardless of its rendering mode, that is mapped to a code or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a - character is a part. + character is a part unicodePUA == false || actualTextPresent == true The character has Unicode value from Private Use Area, and no replacement text present diff --git a/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index b067867b..bfa53a13 100644 --- a/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -3,17 +3,17 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U
A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-2A conforming file conformance diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml index 0d1fda49..3dfb158d 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.2 Tagged PDF/6.7.2.2 Mark information dictionary/verapdf-profile-6-7-2-2-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.7.2 Tagged PDF - 6.7.2.2 Mark information dictionary - The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true
- The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true Marked == true MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.3 Structure hierarchy/verapdf-profile-6-7-3-3-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.3 Structure hierarchy/verapdf-profile-6-7-3-3-t01.xml index 595be74c..57cdacc1 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.3 Structure hierarchy/verapdf-profile-6-7-3-3-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.3 Structure hierarchy/verapdf-profile-6-7-3-3-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.7.3 Artefacts - StructTreeRoot The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry - of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. + of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7
The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry - of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. + of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7 StructTreeRoot_size == 1 StructTreeRoot entry is not present in the document catalog diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml index 5103c0b8..84d03e24 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.7.3 Artefacts - Standard roles All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root
All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root circularMappingExist == true Non-standard structure type %1 is not mapped to a standard type diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t02.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t02.xml index 3bb8e013..945ce98b 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t02.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t02.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.7.3 Artefacts - Circular mapping - A circular mapping shall not exist. + A circular mapping shall not exist
- A circular mapping shall not exist. + A circular mapping shall not exist circularMappingExist != true A circular mapping exists for %1 structure type diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml index f41ae25d..37f9c2a1 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml @@ -5,7 +5,7 @@ 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag - as defined in RFC 3066, Tags for the Identification of Languages. + as defined in RFC 3066, Tags for the Identification of Languages
@@ -14,7 +14,7 @@ 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag - as defined in RFC 3066, Tags for the Identification of Languages. + as defined in RFC 3066, Tags for the Identification of Languages
unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) Value %1 of the Lang entry is not Language-Tag diff --git a/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml index dec9fd98..be515253 100644 --- a/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.10 Inline image dictionaries/verapdf-profile-6-1-10-t01.xml @@ -3,24 +3,23 @@
ISO 19005-2:2011 - 6.1.10 Inline image dictionaries The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. + or an array containing any such value
The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. + or an array containing any such value internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || - internalRepresentation == "CCF" || internalRepresentation == "DCT" - + internalRepresentation == "CCF" || internalRepresentation == "DCT" - Inline image uses %1 filter + Inline image uses not permitted or unknown filter %1 internalRepresentation diff --git a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml index 805626c2..8c58ba94 100644 --- a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.1.12 Permissions - UR3 and DocMDP - No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258)
- No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258) entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP diff --git a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml index b5235cfa..b7678748 100644 --- a/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.12 Permissions/verapdf-profile-6-1-12-t02.xml @@ -3,18 +3,18 @@
ISO 19005-2:2011 - 6.1.12 Permissions - Digest keys If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) - shall not contain the keys DigestLocation, DigestMethod, and DigestValue. + shall not contain the keys DigestLocation, DigestMethod, and DigestValue
If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) - shall not contain the keys DigestLocation, DigestMethod, and DigestValue. + shall not contain the keys DigestLocation, DigestMethod, and DigestValue permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').toString() diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml index cf2b38dd..24c1595d 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.1.13 Implementation limits - Integer - A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648
- A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648 (intValue <= 2147483647) && (intValue >= -2147483648) Integer value %1 out of range diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml index 996cd9f0..64c3e9f7 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t03.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.1.13 Implementation limits - String - A conforming file shall not contain any string longer than 32767 bytes. + A conforming file shall not contain any string longer than 32767 bytes
- A conforming file shall not contain any string longer than 32767 bytes. + A conforming file shall not contain any string longer than 32767 bytes value.length() < 32768 String length (%1) exceeded 32767 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml index 0d335cad..8c8663e1 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t04.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.1.13 Implementation limits - Name - A conforming file shall not contain any name longer than 127 bytes. + A conforming file shall not contain any name longer than 127 bytes
- A conforming file shall not contain any name longer than 127 bytes. + A conforming file shall not contain any name longer than 127 bytes internalRepresentation.length() <= 127 Name length (%1) exceeded 127 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml index a98f4b93..77340679 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t05.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.1.13 Implementation limits - Real (min) - A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38)
- A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38) realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) Non-zero real value %1 is too close to 0.0 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml index 7c548309..cfef63bf 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t08.xml @@ -2,7 +2,7 @@
ISO 19005-2:2011 - 6.1.13 Implementation limits - Graphics state nesting - A conforming file shall not nest q/Q pairs by more than 28 nesting levels. + A conforming file shall not nest q/Q pairs by more than 28 nesting levels
diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml index e7e9c9ef..d176dff8 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t09.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.1.13 Implementation limits - DeviceN components - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + A conforming file shall not contain a DeviceN colour space with more than 32 colourants
- A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + A conforming file shall not contain a DeviceN colour space with more than 32 colourants nrComponents <= 32 Number of DeviceN components (%1) exceeded 32 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml index aa2fe8ac..9bd9d345 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t10.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.1.13 Implementation limits - CID - A conforming file shall not contain a CID value greater than 65535. + A conforming file shall not contain a CID value greater than 65535
- A conforming file shall not contain a CID value greater than 65535. + A conforming file shall not contain a CID value greater than 65535 maximalCID <= 65535 Value of a CID (%1) exceeded 65,535 diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml index ddbe57f9..93ccd999 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.1.13 Implementation limits - page boundaries The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, - nor shall it be greater than 14 400 units in either direction. + nor shall it be greater than 14 400 units in either direction
The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units - in either direction, nor shall it be greater than 14 400 units in either direction. + in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) diff --git a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml index a8e42681..0b3b5d93 100644 --- a/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml +++ b/PDF_A/2b/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.1.3 File trailer - EOF - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5
- No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5 postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t01.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t01.xml index 849e8567..85f83376 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - Correct Length The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + after the stream keyword and preceding the EOL marker before the endstream keyword
The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t02.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t02.xml index c24889ed..2f7a39ba 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t02.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.1 General/verapdf-profile-6-1-7-1-t02.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.1.7 Stream objects - 6.1.7.1 General - Keywords spacing The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. - The endstream keyword shall be preceded by an EOL marker. + The endstream keyword shall be preceded by an EOL marker
The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker. + character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' diff --git a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.2 Filters/verapdf-profile-6-1-7-2-t01.xml b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.2 Filters/verapdf-profile-6-1-7-2-t01.xml index cd9b7f6d..fd8003d5 100644 --- a/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.2 Filters/verapdf-profile-6-1-7-2-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.7 Stream objects/6.1.7.2 Filters/verapdf-profile-6-1-7-2-t01.xml @@ -5,7 +5,7 @@ All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be - used. + used
@@ -14,14 +14,13 @@ All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be - used. + used
internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || - (internalRepresentation == "Crypt" && decodeParms == "Identity") - + (internalRepresentation == "Crypt" && decodeParms == "Identity") Unknown or not permitted Stream filter %1 is used diff --git a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml index 208553da..6f9477cb 100644 --- a/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.8 Name objects/verapdf-profile-6-1-8-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.1.8 Name objects Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences isValidUtf8 == true The name value %1 does not represent a correct UTF-8 character sequence diff --git a/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml index 93ef724b..a7624cb0 100644 --- a/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml +++ b/PDF_A/2b/6.1 File structure/6.1.9 Indirect objects/verapdf-profile-6-1-9-t01.xml @@ -4,7 +4,7 @@ ISO 19005-2:2011 - 6.1.9 Indirect objects - Spacings The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + keywords shall each be followed by an EOL marker
@@ -12,7 +12,7 @@ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + keywords shall each be followed by an EOL marker
spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml index abf165ee..f33cd5b1 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.10 Transparency - Blend modes - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary
- Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || diff --git a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml index 983c2444..ade963be 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.10 Transparency/verapdf-profile-6-2-10-t02.xml @@ -4,7 +4,7 @@ ISO 19005-2:2011 - 6.2.10 Transparency - Page transparency If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that - Group key shall include a CS entry whose value shall be used as the default blending colour space. + Group key shall include a CS entry whose value shall be used as the default blending colour space
@@ -12,10 +12,10 @@ If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that - Group key shall include a CS entry whose value shall be used as the default blending colour space. + Group key shall include a CS entry whose value shall be used as the default blending colour space gOutputCS != null || containsGroupCS == true || containsTransparency == false - The page contains transparent objects with no blending colour space defined. + The page contains transparent objects with no blending colour space defined diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml index e3dedfc8..290e2ca0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.2 Font types/verapdf-profile-6-2-11-2-t07.xml @@ -5,7 +5,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4
@@ -14,7 +14,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4 fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" Unsupported font file format %1 of the embedded font diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.1 General/verapdf-profile-6-2-11-3-1-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.1 General/verapdf-profile-6-2-11-3-1-t01.xml index 95dadf08..0c667230 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.1 General/verapdf-profile-6-2-11-3-1-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.1 General/verapdf-profile-6-2-11-3-1-t01.xml @@ -7,7 +7,7 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
@@ -18,7 +18,7 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml index dd1d6bd7..739976f1 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.2 CIDFonts/verapdf-profile-6-2-11-3-2-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CIDToGIDMap ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117 Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml index f0fe2ac6..77161776 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CMaps All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. + in ISO 32000-1:2008, 9.7.5
All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. + in ISO 32000-1:2008, 9.7.5 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" || diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t02.xml index 6e516e49..8510c97e 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t02.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - WMode 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. + value in the embedded CMap stream
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. + in the embedded CMap stream WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml index 1570e449..76218788 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.3 Composite fonts/6.2.11.3.3 CMaps/verapdf-profile-6-2-11-3-3-t03.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.3 Composite fonts - CMaps - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
- A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 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" || diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml index c068a283..2c0b5957 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - General - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
- The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t02.xml index 2082c996..dd3de977 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.1 General/verapdf-profile-6-2-11-4-1-t02.xml @@ -6,7 +6,7 @@ A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + a non-standard mapping chosen by the conforming processor
@@ -16,7 +16,7 @@ A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t01.xml index ce8b605d..52ff9b71 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CharSet entry in Type1 fonts If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml index 6c7739f9..38f9e6b7 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.4 Embedding/6.2.11.4.2 Subset embedding/verapdf-profile-6-2-11-4-2-t02.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.4 Embedding - CIDSet entry in CID Fonts If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + regardless of whether a CID in the font is referenced or used by the PDF or not
If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + regardless of whether a CID in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml index fc55d1b5..e415b527 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.5 Font metrics/verapdf-profile-6-2-11-5-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.5 Font metrics For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. + font program shall be consistent
For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. + font program shall be consistent renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml index 7d2079f9..ff535ebf 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - cmaps for non-symbolic TrueType fonts For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + cmap entries such that all necessary glyph lookups can be carried out
For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + cmap entries such that all necessary glyph lookups can be carried out isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml index 2a24346c..6f083448 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml @@ -4,10 +4,10 @@ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Non-symbolic TrueType fonts 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. + dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic + TrueType fonts shall not 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
@@ -15,10 +15,10 @@ 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. + dictionary that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic + TrueType fonts shall not 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 isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml index 0a40327e..88141219 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t04.xml @@ -4,7 +4,7 @@ ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.6 Character encodings - cmaps in the symbolic TrueType font program The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + Encoding ID=0) encoding
@@ -12,7 +12,7 @@ The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + Encoding ID=0) encoding isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and diff --git a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml index b613a58a..b1659635 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.11 Fonts/6.2.11.8 Use of .notdef glyph/verapdf-profile-6-2-11-8-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.8 Use of .notdef glyph A PDF/A-2 compliant document 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. + regardless of text rendering mode, in any content stream
A PDF/A-2 compliant document 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. + operators, regardless of text rendering mode, in any content stream name != ".notdef" The document contains a reference to the .notdef glyph diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml index 3a8e4696..859d43d9 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml @@ -2,14 +2,14 @@
ISO 19005-2:2011 - 6.2.2 Content streams - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators. + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators
Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators. + by the BX/EX compatibility operators false A content stream contains operator %1 not defined in ISO 32000-1 diff --git a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml index 031a5081..b6997b91 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.2 Content streams - Resources dictionary A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3
A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3 inheritedResourceNames == '' A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml index cd085089..990220fd 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.3 Output intent - Valid ICC output profile The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK" (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml index 8a21cd75..cb9e9fb5 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml @@ -4,7 +4,7 @@ ISO 19005-2:2011 - 6.2.3 Output intent - Matching multiple output profiles If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same - indirect object, which shall be a valid ICC profile stream. + indirect object, which shall be a valid ICC profile stream
@@ -13,7 +13,7 @@ If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. + profile stream sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) diff --git a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index 0307fe9f..0a40aa0a 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.3 Output intent - DestOutputProfileRef entry - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent
- In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent S != 'GTS_PDFX' || containsDestOutputProfileRef == false The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml index 4e7400f3..097a5c37 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased colour spaces - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1
- The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1 (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml index 027a02ea..11a46f79 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml @@ -4,7 +4,7 @@ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased CMYK and OPM Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + fill is set to true, or both
@@ -12,7 +12,7 @@ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + fill is set to true, or both
overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml index 382aa596..547515ad 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceRGB DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the - DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile
DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. + or if the file has a PDF/A OutputIntent that contains an RGB destination profile gOutputCS != null && gOutputCS == "RGB " DeviceRGB colour space is used without RGB output intent profile diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml index c06b2b6a..65a36046 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceCMYK DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile
DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. + has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile gOutputCS != null && gOutputCS == "CMYK" DeviceCMYK colour space is used without CMYK output intent profile diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml index 02cf7e4b..60050c66 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceGray DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present. + or if a PDF/A OutputIntent is present
DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present. + or if a PDF/A OutputIntent is present gOutputCS != null DeviceGray colour space is used without output intent profile diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml index 4792b5bb..7317188a 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - DeviceN colorants - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
- For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present areColorantsPresent == true A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary diff --git a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml index 322f3df1..c6ad33b0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml @@ -4,7 +4,7 @@ ISO 19005-2:2011 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - Consistency of Separations All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the - use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. + use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
@@ -13,7 +13,7 @@ All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. + and whether or not an object is direct or indirect shall be ignored areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml index a230c37d..17e7ed8e 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone type - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key
- All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type %1 instead of 1 or 5 diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml index 6c6f2945..679a62ad 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.5 Extended graphics state - Halftone name - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key
- Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key HalftoneName == null A Halftone dictionary contains the HalftoneName key diff --git a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml index ac8177ba..2c0f2578 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.5 Extended graphics state - TransferFunction in halftones - The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1
- The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1 colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) diff --git a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml index 805bd057..662af6f0 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.6 Rendering intents/verapdf-profile-6-2-6-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.6 Rendering intents Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation
Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. + Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value %1 is used diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml index 8608bc2b..de6b8064 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t02.xml @@ -2,7 +2,7 @@
ISO 19005-2:2011 - 6.2.8 Images - OPI - An Image dictionary shall not contain the OPI key. + An Image dictionary shall not contain the OPI key
diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml index ecfcce18..80712cb1 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.1 General/verapdf-profile-6-2-8-t03.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.8 Images - Interpolate If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, - the I key shall have a value of false. + the I key shall have a value of false
If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false. + For an inline image, the I key shall have a value of false Interpolate == false The value of the Interpolate key in the Image dictionary is true diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml index e3a78a83..85513a9c 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Number of channels - The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
- The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4 nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml index b5d88b90..77d74f3c 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t02.xml @@ -3,17 +3,17 @@
ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Colour spaces with APPROX field If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + specification that has the value 0x01 in the APPROX field
If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + specification that has the value 0x01 in the APPROX field hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field) nrColorSpacesWithApproxField diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml index fc5c7bcd..be9f6f2c 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t03.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Colour specification method The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only - that colour space and shall ignore all other colour space specifications. + that colour space and shall ignore all other colour space specifications
The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only - that colour space and shall ignore all other colour space specifications. + that colour space and shall ignore all other colour space specifications hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml index de44f229..806190c8 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t04.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Enumerated colour space - JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
- JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml index 221f08b4..df6fffe2 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.8 Images/6.2.8.3 JPEG2000/verapdf-profile-6-2-8-3-t05.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.8.3 JPEG2000 - Bit-depth - The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
- The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range diff --git a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml index 1890b64b..8d943e01 100644 --- a/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml +++ b/PDF_A/2b/6.2 Graphics/6.2.9 XObjects/6.2.9.1 Form XObjects/verapdf-profile-6-2-9-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.9 Form XObjects - 6.2.9.1 Form XObjects - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key
- A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key diff --git a/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml index 4fb8a5ed..42a3eda5 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.3.1 Annotation types - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted
- Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml index 6ae471aa..c474d7ce 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - F key - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
- Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key Subtype == "Popup" || F != null A dictionary of %1 annotation does not contain F key diff --git a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml index c763eb17..f5682ab0 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml @@ -2,24 +2,24 @@
ISO 19005-2:2011 - 6.3.2 Annotation dictionaries - Generic flag values - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
- If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0 F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) F - (F & 4) >> 2 - (F & 2) >> 1 + (F & 4) >> 2 + (F & 2) >> 1 (F & 1) - (F & 32) >> 5 - (F & 256) >> 8 + (F & 32) >> 5 + (F & 256) >> 8 diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml index 25648df4..449a5c9b 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml @@ -5,7 +5,7 @@ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. + - annotations whose Subtype value is Popup or Link
@@ -14,7 +14,7 @@ Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. + - annotations whose Subtype value is Popup or Link (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml index 0c72c58b..ed505b31 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as - its value shall contain only the N key. + its value shall contain only the N key
For all annotation dictionaries containing an AP key, the appearance dictionary that it defines - as its value shall contain only the N key. + as its value shall contain only the N key AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml index aef4058d..a3b97e45 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, - the value of the N key shall be an appearance subdictionary. + the value of the N key shall be an appearance subdictionary
If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, the value of the N key shall be an appearance subdictionary. + Btn, the value of the N key shall be an appearance subdictionary AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of diff --git a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml index 7ac5357e..60bc76a9 100644 --- a/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml +++ b/PDF_A/2b/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.3.3 Annotations appearances - Normal appearance If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index 8d86e69d..06d090f1 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.4 Interactive Fields - 6.4.1 General - Widget annotation actions - A Widget annotation dictionary shall not contains the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys
- A Widget annotation dictionary shall not contains the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml index ff7fae46..cbb1eb29 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.4 Interactive forms - 6.4.1 General - Form field actions - A Field dictionary shall not contains the A or AA keys. + A Field dictionary shall not contains the A or AA keys
- A Field dictionary shall not contains the A or AA keys. + A Field dictionary shall not contains the A or AA keys containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml index ede4cf7b..9bfc3305 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t03.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.1 General - NeedAppearances flag - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
- The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false The interactive form dictionary contains the NeedAppearances flag with value true diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml index 820c3e3b..f954b49f 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.2 XFA forms - XFA key The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, - if present, shall not contain the XFA key. + if present, shall not contain the XFA key
The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, - if present, shall not contain the XFA key. + if present, shall not contain the XFA key containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml index 2355550d..50ca3dc5 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.4 Interactive Forms - 6.4.2 XFA forms - NeedsRendering flag - A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key
- A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key NeedsRendering == false A document's Catalog contains NeedsRendering flag set to true diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml index aa463d59..f6036e78 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.4.3 Digital signatures - ByteRange When computing the digest for the file, it shall be computed over the entire file, including the signature - dictionary but excluding the PDF Signature itself. + dictionary but excluding the PDF Signature itself
When computing the digest for the file, it shall be computed over the entire file, including the signature - dictionary but excluding the PDF Signature itself. + dictionary but excluding the PDF Signature itself doesByteRangeCoverEntireDocument == true ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml index 7fb045a4..cc00ec8f 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t02.xml @@ -4,7 +4,7 @@ ISO 19005-2:2011 - 6.4.3 Digital signatures - Certificate of PKCS#7 object The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate. + minimum, it shall include the signer's X.509 signing certificate
@@ -12,7 +12,7 @@ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate. + minimum, it shall include the signer's X.509 signing certificate
signingCertificatePresent == true The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml index 2a624ebe..c440dcbf 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.3 Digital signatures/verapdf-profile-6-4-3-t03.xml @@ -4,7 +4,7 @@ ISO 19005-2:2011 - 6.4.3 Digital signatures - Signer of PKCS#7 object The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature
@@ -12,7 +12,7 @@ The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature SignerInfoCount == 1 The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml index cdc22218..a2a7f77d 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.5 Actions - 6.5.1 General - Action types The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted
The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. + Additionally, the deprecated set-state and no-op actions shall not be permitted S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted Action type %1 diff --git a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml index 2b56926a..ee777b92 100644 --- a/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.1 General/verapdf-profile-6-5-1-t02.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.5 Actions - 6.5.1 General - Named actions - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
- Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml index ac7a170d..a0660d20 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.5.2 Trigger events - Document - The document's Catalog shall not include an AA entry for an additional-actions dictionary. + The document's Catalog shall not include an AA entry for an additional-actions dictionary
- The document's Catalog shall not include an AA entry for an additional-actions dictionary. + The document's Catalog shall not include an AA entry for an additional-actions dictionary containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml index 2ed9d508..a8c5436f 100644 --- a/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml +++ b/PDF_A/2b/6.5 Action/6.5.2 Trigger events/verapdf-profile-6-5-2-t02.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.5.2 Trigger events - Page - The Page dictionary shall not include an AA entry for an additional-actions dictionary. + The Page dictionary shall not include an AA entry for an additional-actions dictionary
- The Page dictionary shall not include an AA entry for an additional-actions dictionary. + The Page dictionary shall not include an AA entry for an additional-actions dictionary containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml index 8c79378b..e44a6914 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t01.xml @@ -2,16 +2,16 @@
ISO 19005-2:2011 - 6.6.2.1 General - Metadata key in the Catalog - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
- The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml index 8d745bf7..f90c03d9 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t02.xml @@ -2,16 +2,16 @@
ISO 19005-2:2011 - 6.6.2.1 General - bytes attribute - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet
- The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t03.xml index 14e9ec72..7ac14b62 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t03.xml @@ -2,16 +2,16 @@
ISO 19005-2:2011 - 6.6.2.1 General - encoding attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet
- The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml index e55babaa..103abb9f 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t04.xml @@ -3,17 +3,17 @@
ISO 19005-2:2011 - 6.6.2.1 General - Conforms to XMP Specification. All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, - as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised)
All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, - as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised) isSerializationValid - A metadata stream is serialized incorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml index 5df80a91..0a8ada6c 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.1 General/verapdf-profile-6-6-2-1-t05.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.6.2.1 General - Conforms to XMP Specification. - All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
- All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8 actualEncoding == "UTF-8" The XMP package uses encoding %1 different from UTF-8 diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml index 698e1219..bf4eba1c 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t01.xml @@ -3,17 +3,18 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - All properties are defined All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - XMP property is either not predefined, or is not defined in any XMP extension schema. + XMP property is either not predefined, or is not defined in any XMP extension schema + diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t02.xml index 6d083713..2a6db16b 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t02.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.1 General/verapdf-profile-6-6-2-3-1-t02.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Property's type All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2
All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isValueTypeCorrect == true XMP property does not correspond to type %1 diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.2 Extension schemas/verapdf-profile-6-6-2-3-2-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.2 Extension schemas/verapdf-profile-6-6-2-3-2-t01.xml index 3c0e14e8..9a5559bb 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.2 Extension schemas/verapdf-profile-6-6-2-3-2-t01.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.2 Extension schemas/verapdf-profile-6-6-2-3-2-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Container schema Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each - of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + of the tables in 6.6.2.3.3 shall be present in any extension schema container schema
Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each - of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + of the tables in 6.6.2.3.3 shall be present in any extension schema container schema containsUndefinedFields == false An extension schema object contains field(s) %1 not defined by the specification diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml index 59b3ee58..c63baf60 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t02.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - schema field Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. + and shall have type Text and namespace prefix 'pdfaSchema'
Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. + and shall have type Text and namespace prefix 'pdfaSchema' isSchemaValidText == true && schemaPrefix == "pdfaSchema" Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml index ddf8a875..cb7f3851 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t03.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - namespaceURI field Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. + present and shall have type URI and namespace prefix 'pdfaSchema'
Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. + present and shall have type URI and namespace prefix 'pdfaSchema' isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml index b36af644..4ff704a6 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t04.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - prefix field Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. + and shall have type Text and namespace prefix 'pdfaSchema'
Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. + and shall have type Text and namespace prefix 'pdfaSchema' isPrefixValidText == true && prefixPrefix == "pdfaSchema" Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml index 8fc444b5..3ea06503 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t05.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - property field Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have - type Seq Property and namespace prefix 'pdfaSchema'. + type Seq Property and namespace prefix 'pdfaSchema'
Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq Property and namespace prefix 'pdfaSchema'. + Seq Property and namespace prefix 'pdfaSchema' isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t06.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t06.xml index 1ccfe684..6215df74 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t06.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t06.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema definition - valueType field Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. + Seq ValueType and namespace prefix 'pdfaSchema'
Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. + Seq ValueType and namespace prefix 'pdfaSchema' isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t07.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t07.xml index 42cf4537..2fefe92c 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t07.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t07.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - name field Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. + and shall have type Text and namespace prefix 'pdfaProperty'
Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. + and shall have type Text and namespace prefix 'pdfaProperty' isNameValidText == true && namePrefix == "pdfaProperty" Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t08.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t08.xml index ba1b9697..050ddc09 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t08.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t08.xml @@ -4,7 +4,7 @@ ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - valueType field Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. + be defined
@@ -12,7 +12,7 @@ Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. + be defined
isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t09.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t09.xml index b5108df3..68e13571 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t09.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t09.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - category field Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'
Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. + present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty' isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty" diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t10.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t10.xml index e8525554..76859beb 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t10.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t10.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema property - description field Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. + present and shall have type Text and namespace prefix 'pdfaProperty'
Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. + present and shall have type Text and namespace prefix 'pdfaProperty' isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t11.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t11.xml index 448254d2..01a3bc7c 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t11.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t11.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - type field Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. + and shall have type Text and namespace prefix 'pdfaType'
Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. + and shall have type Text and namespace prefix 'pdfaType' isTypeValidText == true && typePrefix == "pdfaType" Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t12.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t12.xml index 5c0ad363..1680a5e4 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t12.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t12.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - namespaceURI field Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. + present and shall have type URI and namespace prefix 'pdfaType'
Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. + present and shall have type URI and namespace prefix 'pdfaType' isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml index 9b2a5e3c..f1628105 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t13.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - prefix field Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. + shall have type Text and namespace prefix 'pdfaType'
Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. + shall have type Text and namespace prefix 'pdfaType' isPrefixValidText == true && prefixPrefix == "pdfaType" Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t14.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t14.xml index 26400edb..55100094 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t14.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t14.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - description field Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. + present and shall have type Text and namespace prefix 'pdfaType'
Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. + present and shall have type Text and namespace prefix 'pdfaType' isDescriptionValidText == true && descriptionPrefix == "pdfaType" Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t15.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t15.xml index a0d385ab..791d03b1 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t15.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t15.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema ValueType type - field field Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. + Seq Field and namespace prefix 'pdfaType'
Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. + Seq Field and namespace prefix 'pdfaType' isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t16.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t16.xml index 71c7d4a9..5730c8f5 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t16.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t16.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema Field type - name field Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. + and namespace prefix 'pdfaField'
Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. + and namespace prefix 'pdfaField' isNameValidText == true && namePrefix == "pdfaField" Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t17.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t17.xml index e2992899..60e8edb2 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t17.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t17.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema Field type - valueType field Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined
Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. + Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t18.xml b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t18.xml index f61fd362..50e9aee2 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t18.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.2 Metadata streams/6.6.2.3 Schemas/6.6.2.3.3 Extension schema container schemas/verapdf-profile-6-6-2-3-3-t18.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.6.2.3 Schemas - Extension schema Field type - description field Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. + Text and namespace prefix 'pdfaField'
Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. + Text and namespace prefix 'pdfaField' isDescriptionValidText == true && descriptionPrefix == "pdfaField" Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t01.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t01.xml index 6f5c8798..18b6bc37 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t01.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t01.xml @@ -2,16 +2,16 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema. - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema
- The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml index c5d6b28b..2dfb17b2 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml @@ -2,16 +2,16 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Part number. - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms
- The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 2 - The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file part diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index b36d68c7..4deb2317 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -3,17 +3,17 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U
A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U conformance == "B" || conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file conformance diff --git a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml index 7a88641b..4f444a6c 100644 --- a/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml +++ b/PDF_A/2b/6.8 Embedded files/verapdf-profile-6-8-t05.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.8 Embedded files - EF key A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file - is compliant with either ISO 19005-1 or this part of ISO 19005. + is compliant with either ISO 19005-1 or this part of ISO 19005
A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is - compliant with either ISO 19005-1 or this part of ISO 19005. + compliant with either ISO 19005-1 or this part of ISO 19005 isValidPDFA12 == true An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml index 22e8d2a3..739ac117 100644 --- a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.9 Optional content - Name key present Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + value of the Configs key in the OCProperties dictionary, shall contain the Name key
Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml index 5ddeb1cf..50110707 100644 --- a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t02.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.9 Optional content - Name key unique Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-2 file. + dictionaries within the PDF/A-2 file
Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-2 file. + dictionaries within the PDF/A-2 file hasDuplicateName == false Optional content configuration dictionary has duplicated name %1 diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml index f681b608..48d00379 100644 --- a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t03.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.9 Optional content - Order key If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + to all OCGs in the conforming file
If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + to all OCGs in the conforming file OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml index 4ff7063c..c041f715 100644 --- a/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml +++ b/PDF_A/2b/6.9 Optional content/verapdf-profile-6-9-t04.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.9 Optional content - AS key - The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary
- The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary AS == null AS key is present in the optional content configuration dictionary diff --git a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t01.xml b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t01.xml index 4fcb5cf4..a563ed95 100644 --- a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t01.xml +++ b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t01.xml @@ -3,14 +3,14 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - Unicode mapping 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 ISO 19005-2:2011, 6.2.11.7.2. + or other mechanisms as defined in ISO 19005-2:2011, 6.2.11.7.2
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 ISO 19005-2, 6.2.11.7.2. + or other mechanisms as defined in ISO 19005-2, 6.2.11.7.2 toUnicode != null The glyph can not be mapped to Unicode diff --git a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml index 13d8db85..179ed98f 100644 --- a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml +++ b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.2.11 Fonts - 6.2.11.7 Unicode character maps - Valid Unicode values - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
- The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE diff --git a/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index d30108a3..362fcd12 100644 --- a/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -3,17 +3,17 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U
A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file conformance diff --git a/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 1776dd9c..eb4a6fc8 100644 --- a/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -3,17 +3,17 @@
ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Conformance level. A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U
A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-3A conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-3A conforming file conformance diff --git a/PDF_A/3b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml b/PDF_A/3b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml new file mode 100644 index 00000000..81db226c --- /dev/null +++ b/PDF_A/3b/6.2 Graphics/6.2.11 Fonts/6.2.11.6 Character encodings/verapdf-profile-6-2-11-6-t02.xml @@ -0,0 +1,37 @@ + + +
+ ISO 19005-3:2012 - 6.2.11 Fonts - 6.2.11.6 Character encodings - Non-symbolic TrueType fonts + 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic + TrueType fonts shall not 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 +
+ + + + + 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic + TrueType fonts shall not 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + + Encoding + containsDifferences + differencesAreUnicodeCompliant + + + + + + +
diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml index 7162cb02..d79fe3e0 100644 --- a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml +++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml @@ -1,17 +1,17 @@
- ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Part number. - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Part number. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms
- The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 3 - The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file part diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 76e28647..166db69d 100644 --- a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -1,19 +1,19 @@
- ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. + ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Conformance level. A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U
A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U conformance == "B" || conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-3B conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-3B conforming file conformance diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml index 702ba00c..d3317941 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t01.xml @@ -3,14 +3,14 @@
ISO 19005-3:2012 - 6.8 Embedded files - Subtype The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. - If the MIME type is not known, the "application/octet-stream" shall be used. + If the MIME type is not known, the "application/octet-stream" shall be used
The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. - If the MIME type is not known, the "application/octet-stream" shall be used. + If the MIME type is not known, the "application/octet-stream" shall be used Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) MIME type %1 of an embedded file is missing or invalid diff --git a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml index d50b6a3e..2ea6d988 100644 --- a/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml +++ b/PDF_A/3b/6.8 Embedded files/verapdf-profile-6-8-t04.xml @@ -3,14 +3,14 @@
ISO 19005-3:2012 - 6.8 Embedded files - AF arrays The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship - between the embedded file and the PDF document or the part of the PDF document with which it is associated. + between the embedded file and the PDF document or the part of the PDF document with which it is associated
The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship - between the embedded file and the PDF document or the part of the PDF document with which it is associated. + between the embedded file and the PDF document or the part of the PDF document with which it is associated isAssociatedFile == true The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts diff --git a/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index faec74d9..24285de0 100644 --- a/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -1,19 +1,19 @@
- ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. + ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Conformance level. A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U
A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. + pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-3U conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-3U conforming file conformance diff --git a/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml b/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml index 28f14d57..c8edf294 100644 --- a/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.11 Permissions/verapdf-profile-6-1-11-t01.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.1.11 Permissions - UR3 and DocMDP - No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263)
- No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263) entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP diff --git a/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml index 131b0928..0984561a 100644 --- a/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.12 Document catalog dictionary/verapdf-profile-6-1-12-t01.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.1.12 Document catalog dictionary - Version If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third - character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. + character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3
@@ -12,11 +12,11 @@ If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third - character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. + character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3 Version == null || /^2\.[0-9]$/.test(Version) The Version key with value %1 does not match the pattern 2.n, - where 'n' is a single digit number between 0 and 9. + where 'n' is a single digit number between 0 and 9 Version diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml index fb277ec8..efab0fbf 100644 --- a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t02.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.1.3 File trailer - Encrypt - The Encrypt key shall not be present in the trailer dictionary. + The Encrypt key shall not be present in the trailer dictionary
- The Encrypt key shall not be present in the trailer dictionary. + The Encrypt key shall not be present in the trailer dictionary isEncrypted != true The Encrypt key is present in the trailer dictionary diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml index 4ae03de6..33cf5219 100644 --- a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t03.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.1.3 File trailer - EOF - No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. + No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5
- No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. + No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5 postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml index 204f3020..3c387f43 100644 --- a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t04.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.1.3 File trailer - Info key - The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary. + The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary
- The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary. + The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary containsPieceInfo == true || containsInfo == false The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary diff --git a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml index ee5d0674..436316c8 100644 --- a/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml +++ b/PDF_A/4/6.1 File structure/6.1.3 File trailer/verapdf-profile-6-1-3-t05.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.1.3 File trailer - ModDate - If a document information dictionary is present, it shall only contain a ModDate entry. + If a document information dictionary is present, it shall only contain a ModDate entry
- If a document information dictionary is present, it shall only contain a ModDate entry. + If a document information dictionary is present, it shall only contain a ModDate entry size == 1 && ModDate != null Document information dictionary is present and contains %1 key(s), but allowed only ModDate diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml index f808fd45..75630db0 100644 --- a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.1.6 Stream objects - 6.1.6.1 General - Correct Length The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + after the stream keyword and preceding the EOL marker before the endstream keyword
The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) diff --git a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml index 9a949b29..839b98a0 100644 --- a/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.6 Stream objects/6.1.6.2 Filters/verapdf-profile-6-1-6-2-t01.xml @@ -5,7 +5,7 @@ All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters - dictionary is Identity. + dictionary is Identity
@@ -14,14 +14,13 @@ All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode - parameters dictionary is Identity. + parameters dictionary is Identity internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || - (internalRepresentation == "Crypt" && decodeParms == "Identity") - + (internalRepresentation == "Crypt" && decodeParms == "Identity") Unknown or not permitted Stream filter %1 is used diff --git a/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml b/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml index 401f2da8..60ffc925 100644 --- a/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.7 Name objects/verapdf-profile-6-1-7-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.1.7 Name objects Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences
Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences isValidUtf8 == true The name value %1 does not represent a correct UTF-8 character sequence diff --git a/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml b/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml index ada733b4..f55b41ed 100644 --- a/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.8 Indirect objects/verapdf-profile-6-1-8-t01.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.1.8 Indirect objects - Spacings The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + keywords shall each be followed by an EOL marker
@@ -12,7 +12,7 @@ The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' diff --git a/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml b/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml index 033395c3..dacd8bb5 100644 --- a/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml +++ b/PDF_A/4/6.1 File structure/6.1.9 Inline image dictionaries/verapdf-profile-6-1-9-t01.xml @@ -3,22 +3,21 @@
ISO 19005-4:2020 - 6.1.9 Inline image dictionaries The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, - or an array containing any such value. + or an array containing any such value
The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, - or an array containing any such value. + or an array containing any such value internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || - internalRepresentation == "CCF" || internalRepresentation == "DCT" - + internalRepresentation == "CCF" || internalRepresentation == "DCT" Inline image uses not permitted or unknown filter %1 diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml index 63ed0a7e..90aa1b2f 100644 --- a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.10 Optional content - Name key present Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + value of the Configs key in the OCProperties dictionary, shall contain the Name key
Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null Missing Name entry of the optional content configuration dictionary diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml index b06de32c..416870ae 100644 --- a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t02.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.10 Optional content - Name key unique Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-4 file. + dictionaries within the PDF/A-4 file
Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-4 file. + dictionaries within the PDF/A-4 file hasDuplicateName == false Optional content configuration dictionary has duplicated name %1 diff --git a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml index 6e498cca..626143b5 100644 --- a/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml +++ b/PDF_A/4/6.10 Optional content/verapdf-profile-6-10-t03.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.10 Optional content - Order key If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + to all OCGs in the conforming file
If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + to all OCGs in the conforming file OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml index 125c3df7..b40db706 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.2 Font types/verapdf-profile-6-2-10-2-t07.xml @@ -5,7 +5,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4
@@ -14,7 +14,7 @@ All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. + in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22
fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" Unsupported font file format %1 of the embedded font diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml index 8d60833f..06d85f52 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.1 General/verapdf-profile-6-2-10-3-1-t01.xml @@ -8,7 +8,7 @@ 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 greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap. + be greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap
@@ -20,7 +20,7 @@ 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. + be less than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml index 67f6e190..b635efd0 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.2 CIDFonts/verapdf-profile-6-2-10-3-2-t01.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - CIDToGIDMap ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. + the name Identity, as described in ISO 32000-2:2020, 9.7.4 Table 115
@@ -12,7 +12,7 @@ ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. + or the name Identity, as described in ISO 32000-2:2020, 9.7.4 Table 115 Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml index cea99bc5..c499f135 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - CMaps All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, 9.7.5.2 - Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5. + Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5
All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, - 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5. + 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5 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" || diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml index 2a37cd5b..e05a8fc9 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t02.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - WMode 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. + shall be identical to the WMode value in the embedded CMap stream
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. + shall be identical to the WMode value in the embedded CMap stream WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml index 8aad07f1..965ed00c 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.3 Composite fonts/6.2.10.3.3 CMaps/verapdf-profile-6-2-10-3-3-t03.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.3 Composite fonts - CMaps - A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116. + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
- A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116. + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116 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" || diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t01.xml index 77cdcbd5..325521fe 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.4 Embedding - General 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. + within that file, as defined in ISO 32000-2:2020, 9.9
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. + within that file, as defined in ISO 32000-2:2020, 9.9 Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml index d72da3bf..ba075374 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.4 Embedding/6.2.10.4.1 General/verapdf-profile-6-2-10-4-1-t02.xml @@ -6,7 +6,7 @@ A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of - a non-standard mapping chosen by the conforming processor. + a non-standard mapping chosen by the conforming processor
@@ -16,7 +16,7 @@ A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of - a non-standard mapping chosen by the conforming processor. + a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml index 831a1af0..10483834 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.5 Font metrics/verapdf-profile-6-2-10-5-t01.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.5 Font metrics For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that - are referenced only with rendering mode 3 are exempt from this requirement. + are referenced only with rendering mode 3 are exempt from this requirement
@@ -12,7 +12,7 @@ For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for - rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. + rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement
renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml index 5d4b5bf3..fdcc04e7 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - cmaps for non-symbolic TrueType fonts 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 that all necessary glyph lookups are able to be carried out. + 'cmap' subtable that all necessary glyph lookups are able to be carried out
@@ -12,11 +12,11 @@ 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 that all necessary glyph lookups are able to be carried out. + 'cmap' subtable that all necessary glyph lookups are able to be carried out isSymbolic == true || cmap31Present == true || cmap10Present == true The embedded font program for a non-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. + Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml index f15e5ef4..b8b843e5 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t02.xml @@ -7,7 +7,7 @@ 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' subtable. + Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' subtable
@@ -18,7 +18,7 @@ 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' subtable. + Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' subtable isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml index 4b40645e..6232ef31 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t04.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.6 Character encodings - cmaps in the symbolic TrueType font program The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, - Encoding ID=0) encoding. + Encoding ID=0) encoding
@@ -12,11 +12,11 @@ The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, - Encoding ID=0) encoding. + Encoding ID=0) encoding isSymbolic == false || cmap30Present == true || cmap10Present == true 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. + Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml index 15a4f043..b784c27f 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.7 Unicode character maps - Valid Unicode values If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than - zero (0), but not equal to either U+FEFF or U+FFFE. + zero (0), but not equal to either U+FEFF or U+FFFE
If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than - zero (0), but not equal to either U+FEFF or U+FFFE. + zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml index ef3d902d..e47f1d1c 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.8 Use of ActualText - The ActualText entry shall not contain any PUA values. + The ActualText entry shall not contain any PUA values
- The ActualText entry shall not contain any PUA values. + The ActualText entry shall not contain any PUA values containsPUA == false The ActualText entry contains a Private Unicoide Area value diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.9 Use of .notdef glyph/verapdf-profile-6-2-10-9-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.9 Use of .notdef glyph/verapdf-profile-6-2-10-9-t01.xml index 0ad63abe..45f3dad8 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.9 Use of .notdef glyph/verapdf-profile-6-2-10-9-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.9 Use of .notdef glyph/verapdf-profile-6-2-10-9-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.2.10 Fonts - 6.2.10.9 Use of .notdef glyph A PDF/A-4 compliant document 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. + regardless of text rendering mode, in any content stream
A PDF/A-4 compliant document 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. + operators, regardless of text rendering mode, in any content stream name != ".notdef" The document contains a reference to the .notdef glyph diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml index f51d6e8e..e6d8fb91 100644 --- a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t01.xml @@ -2,14 +2,14 @@
ISO 19005-4:2020 - 6.2.2 Content streams - Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed by the BX/EX compatibility operators. + Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed by the BX/EX compatibility operators
Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed - by the BX/EX compatibility operators. + by the BX/EX compatibility operators false A content stream contains operator %1 not defined in ISO 32000-2:2020 diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml index fe7625ef..8e2a773e 100644 --- a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t02.xml @@ -5,7 +5,7 @@ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this - content stream. + content stream
@@ -14,7 +14,7 @@ A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources - referenced by this content stream. + referenced by this content stream inheritedResourceNames == '' A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary diff --git a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml index 18653fdf..82e5ced8 100644 --- a/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.2 Content streams/verapdf-profile-6-2-2-t03.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.2.2 Content streams - Resources dictionary A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which - they can be referred to. + they can be referred to
@@ -12,10 +12,10 @@ A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which - they can be referred to. + they can be referred to undefinedResourceNames == '' - A content stream references named resource(s) %1 not defined by a resource dictionary. + A content stream references named resource(s) %1 not defined by a resource dictionary undefinedResourceNames diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml index 4774f08b..ea9e2821 100644 --- a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.2.3 Output intent - Valid ICC output profile The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK"
The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". + (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK" (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml index c10cbea8..fdafb147 100644 --- a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t02.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.2.3 Output intent - Matching multiple output profiles If any OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a DestOutputProfile key shall have as the value of that key the same - indirect object, which shall be a valid ICC profile stream. + indirect object, which shall be a valid ICC profile stream
@@ -13,7 +13,7 @@ If any OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. + profile stream sameOutputProfileIndirect == true OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) diff --git a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml index 5b2d00f4..dfd668e4 100644 --- a/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.3 Output intent/verapdf-profile-6-2-3-t03.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.3 Output intent - DestOutputProfileRef entry - The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary
- The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml index 45f3d292..347c3bd8 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t01.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased colour spaces - The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5. + The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5
- The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5. + The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5 (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml index 050c1c3a..b0570225 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t02.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased color spaces Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + fill is set to true, or both
@@ -12,7 +12,7 @@ Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + fill is set to true, or both overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml index 08e324c5..a0cfaa03 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.2 ICCBased colour spaces/verapdf-profile-6-2-4-2-t03.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.2 ICCBased color spaces An ICCBased colour space shall not be used where the profile is a CMYK destination profile and is - identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace
An ICCBased colour space shall not be used where the profile is a CMYK destination profile and - is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. + is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml index e5c7d7c6..fe167f12 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t02.xml @@ -5,7 +5,7 @@ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, when the - DeviceRGB colour space is used, contains an 'RGB ' destination profile. + DeviceRGB colour space is used, contains an 'RGB ' destination profile
@@ -14,7 +14,7 @@ DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, - when the DeviceRGB colour space is used, contains an 'RGB ' destination profile. + when the DeviceRGB colour space is used, contains an 'RGB ' destination profile (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml index 81119d7f..55076fe3 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t03.xml @@ -5,7 +5,7 @@ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or if the current transparency blending space, when the DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A OutputIntent, - when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. + when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile
@@ -14,7 +14,7 @@ DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or if the current transparency blending space, when the DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A - OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. + OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' DeviceCMYK colour space is used without CMYK output intent profile and without current diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml index 2ecc3fd9..893cdaee 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.3 Uncalibrated Device colour spaces/verapdf-profile-6-2-4-3-t04.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.3 Uncalibrated/Device colour spaces - DeviceGray DeviceGray shall only be used if a device independent DefaultGray colour space has been set when - the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect. + the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect
DeviceGray shall only be used if a device independent DefaultGray colour space has been set when - the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect. + the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect gPageOutputCS != null || gDocumentOutputCS != null DeviceGray colour space is used without output intent profile diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml index e9402136..32c9b4c6 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t01.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - DeviceN colorants - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present
- For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present areColorantsPresent == true A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary diff --git a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml index 1dbf7c6b..e781eaf1 100644 --- a/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.4 Colour spaces/6.2.4.4 Separation and DeviceN colour spaces/verapdf-profile-6-2-4-4-t02.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.2.4 Colour Spaces - 6.2.4.4 Separation and DeviceN colour spaces - Consistency of Separations All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the - use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored. + use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored
@@ -13,7 +13,7 @@ All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. + and whether or not an object is direct or indirect shall be ignored areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml index 99802721..b867bb4d 100644 --- a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t04.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.5 Extended graphics state - Halftone type - All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key
- All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type %1 instead of 1 or 5 diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml index 7606b3ac..eae5fcf2 100644 --- a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t05.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.5 Extended graphics state - Halftone name - Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key
- Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key HalftoneName == null A Halftone dictionary contains the HalftoneName key diff --git a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml index 1b386064..cb2f175d 100644 --- a/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml +++ b/PDF_A/4/6.2 Graphics/6.2.5 Extended graphics state/verapdf-profile-6-2-5-t06.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.5 Extended graphics state - TransferFunction in halftones - The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020
- The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020 colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml index edbb97a6..f52ebc43 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t02.xml @@ -2,7 +2,7 @@
ISO 19005-4:2020 - 6.2.7 Images - 6.2.7.1 General - OPI - An Image dictionary shall not contain the OPI key. + An Image dictionary shall not contain the OPI key
diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t03.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t03.xml index 5e1ab1bc..1e08ffdb 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.1 General/verapdf-profile-6-2-7-1-t03.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.2.7 Images - 6.2.7.1 General - Interpolate If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, - the I key, if present, shall have a value of false. + the I key, if present, shall have a value of false
If an Image dictionary contains the Interpolate key, its value shall be false. For an inline - image, the I key, if present, shall have a value of false. + image, the I key, if present, shall have a value of false Interpolate == false The value of the Interpolate key in the Image dictionary is true diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml index 784407f7..4b367f39 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t01.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Number of channels - The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4
- The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4 nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml index 243cacdf..a7c2e5e0 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t02.xml @@ -3,17 +3,17 @@
ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Colour spaces with APPROX field If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + specification that has the value 0x01 in the APPROX field
If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + specification that has the value 0x01 in the APPROX field hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field) nrColorSpacesWithApproxField diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml index 8c588ae8..b47396fe 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t03.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Colour specification method The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only - that colour space and shall ignore all other colour space specifications. + that colour space and shall ignore all other colour space specifications
The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only - that colour space and shall ignore all other colour space specifications. + that colour space and shall ignore all other colour space specifications hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml index 495685b8..3437e8cd 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t04.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Enumerated colour space - JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used
- JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A diff --git a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml index b74ec1f0..ce3b3ae7 100644 --- a/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml +++ b/PDF_A/4/6.2 Graphics/6.2.7 Images/6.2.7.3 JPEG2000/verapdf-profile-6-2-7-3-t05.xml @@ -2,14 +2,14 @@
ISO 19005-4:2020 - 6.2.7.3 JPEG2000 - Bit-depth - The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth
- The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. - bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2) diff --git a/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.1 Form XObjects/verapdf-profile-6-2-8-1-t01.xml b/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.1 Form XObjects/verapdf-profile-6-2-8-1-t01.xml index ec4ef829..04f6e5cd 100644 --- a/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.1 Form XObjects/verapdf-profile-6-2-8-1-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.8 XObjects/6.2.8.1 Form XObjects/verapdf-profile-6-2-8-1-t01.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.2.8 Form XObjects - 6.2.8.1 Form XObjects - A form XObject dictionary shall not contain an OPI key. + A form XObject dictionary shall not contain an OPI key
- A form XObject dictionary shall not contain an OPI key. + A form XObject dictionary shall not contain an OPI key containsOPI == false The form XObject dictionary contains an OPI key diff --git a/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml index d23cfb21..5b286a8c 100644 --- a/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.2.9 Transparency - Blend modes Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM key - in a graphic state dictionary or an annotation dictionary. + in a graphic state dictionary or an annotation dictionary
Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM - key in a graphic state dictionary or an annotation dictionary. + key in a graphic state dictionary or an annotation dictionary internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || diff --git a/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t02.xml b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t02.xml index 5f3d827c..755aa746 100644 --- a/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t02.xml +++ b/PDF_A/4/6.2 Graphics/6.2.9 Transparency/verapdf-profile-6-2-9-t02.xml @@ -5,7 +5,7 @@ If the document does not contain a PDF/A output intent, then all pages that contain transparency shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall - be used as the default blending colour space. + be used as the default blending colour space
@@ -14,10 +14,10 @@ If the document does not contain a PDF/A output intent, then all pages that contain transparency shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall - be used as the default blending colour space. + be used as the default blending colour space
gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false - The page contains transparent objects with no blending colour space defined. + The page contains transparent objects with no blending colour space defined diff --git a/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml index 4707973b..2c03da04 100644 --- a/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml +++ b/PDF_A/4/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.3.1 Annotation types Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. - Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted. + Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted
Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. - Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted. + Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || diff --git a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml index ff3a6c75..7cc4480f 100644 --- a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml +++ b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t01.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.3.2 Annotation dictionaries - F key - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key
- Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key Subtype == "Popup" || F != null A dictionary of %1 annotation does not contain F key diff --git a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml index 61c823af..44792027 100644 --- a/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml +++ b/PDF_A/4/6.3 Annotations/6.3.2 Annotation dictionaries/verapdf-profile-6-3-2-t02.xml @@ -2,24 +2,24 @@
ISO 19005-4:2020 - 6.3.2 Annotation dictionaries - Generic flag values - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0
- If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0 F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) F - (F & 4) >> 2 - (F & 2) >> 1 + (F & 4) >> 2 + (F & 2) >> 1 (F & 1) - (F & 32) >> 5 - (F & 256) >> 8 + (F & 32) >> 5 + (F & 256) >> 8 diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml index e148c3b2..3646ef04 100644 --- a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml +++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t01.xml @@ -6,7 +6,7 @@ for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - - annotations whose Subtype value is Popup, Link or Projection. + - annotations whose Subtype value is Popup, Link or Projection
@@ -16,7 +16,7 @@ except for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - - annotations whose Subtype value is Popup, Link or Projection.
+ - annotations whose Subtype value is Popup, Link or Projection (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null An annotation does not contain an appearance dictionary diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml index bf2469ad..0916b357 100644 --- a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml +++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t02.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as - its value shall contain only the N key. + its value shall contain only the N key
For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as - its value shall contain only the N key. + its value shall contain only the N key AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml index 830f4ac5..8ded92b6 100644 --- a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml +++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t03.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, - the value of the N key shall be an appearance subdictionary. + the value of the N key shall be an appearance subdictionary
If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, - the value of the N key shall be an appearance subdictionary. + the value of the N key shall be an appearance subdictionary AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of diff --git a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml index 865a6c83..25b28d5c 100644 --- a/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml +++ b/PDF_A/4/6.3 Annotations/6.3.3 Annotation appearances/verapdf-profile-6-3-3-t04.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.3.3 Annotations appearances - Normal appearance If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream
If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. + with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the diff --git a/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index 82c93a50..28ad9563 100644 --- a/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -8,7 +8,7 @@ - A Widget annotation dictionary shall not contain the A key. + A Widget annotation dictionary shall not contain the A key containsA == false A Widget annotation contains A entry diff --git a/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml index 00c9f123..7148faf7 100644 --- a/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml +++ b/PDF_A/4/6.4 Interactive forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.4 Interactive Forms - 6.4.1 General - NeedAppearances flag - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false
- The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false The interactive form dictionary contains the NeedAppearances flag with value true diff --git a/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml index b838c6eb..7f2100ed 100644 --- a/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml +++ b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.4 Interactive Forms - 6.4.2 XFA forms - XFA key The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, - if present, shall not contain the XFA key. + if present, shall not contain the XFA key
The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, - if present, shall not contain the XFA key. + if present, shall not contain the XFA key containsXFA == false The interactive form dictionary contains the XFA key diff --git a/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml index a3af5895..538ce39f 100644 --- a/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml +++ b/PDF_A/4/6.4 Interactive forms/6.4.2 XFA forms/verapdf-profile-6-4-2-t02.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.4 Interactive Forms - 6.4.2 XFA forms - NeedsRendering flag - A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key
- A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key NeedsRendering == false A document's Catalog contains NeedsRendering flag set to true diff --git a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml index 3d449a6c..27ecfabb 100644 --- a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml +++ b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -3,7 +3,7 @@
ISO 19005-4:2020 - 6.6 Actions - 6.6.1 General - Action types The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView - actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted. + actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted
@@ -11,7 +11,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall - not be permitted. + not be permitted S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" diff --git a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml index 567abea2..75aeb597 100644 --- a/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml +++ b/PDF_A/4/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t02.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.6 Actions - 6.6.1 General - Named actions - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted
- Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 diff --git a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml index 527f476a..a0784a09 100644 --- a/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml +++ b/PDF_A/4/6.6 Action/6.6.3 Trigger events/verapdf-profile-6-6-3-t01.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.6.3 Trigger events If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) - shall only contain keys from the following list: E, X, D, U, Fo, and Bl. + shall only contain keys from the following list: E, X, D, U, Fo, and Bl
@@ -12,7 +12,7 @@ If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) - shall only contain keys from the following list: E, X, D, U, Fo, and Bl. + shall only contain keys from the following list: E, X, D, U, Fo, and Bl
parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == '' diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t01.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t01.xml index 5b74410f..f9656143 100644 --- a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t01.xml +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t01.xml @@ -3,17 +3,17 @@
ISO 19005-4:2020 - 6.7.2.1 General - Metadata key in the Catalog The document 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.2. + a metadata stream as defined in ISO 32000-2:2020, 14.3.2
The document 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.2. + is a metadata stream as defined in ISO 32000-2:2020, 14.3.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml index df98b1ad..1b8495e9 100644 --- a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t02.xml @@ -2,16 +2,16 @@
ISO 19005-4:2020 - 6.7.2.1 General - bytes attribute - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet
- The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t03.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t03.xml index 4e1dd98d..597fba83 100644 --- a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t03.xml +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t03.xml @@ -2,16 +2,16 @@
ISO 19005-4:2020 - 6.7.2.1 General - encoding attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet
- The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml index 844398e5..0d22a88c 100644 --- a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t04.xml @@ -3,17 +3,17 @@
ISO 19005-4:2020 - 6.7.2.1 General - Conforms to XMP Specification. All content of all XMP packets located in any metadata stream present in the PDF shall be - well-formed as defined by XMP (ISO 16684-1). + well-formed as defined by XMP (ISO 16684-1)
All content of all XMP packets located in any metadata stream present in the PDF shall be - well-formed as defined by XMP (ISO 16684-1). + well-formed as defined by XMP (ISO 16684-1) isSerializationValid - A metadata stream is serialized incorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed diff --git a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml index 4484abcf..e2159959 100644 --- a/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml +++ b/PDF_A/4/6.7 Metadata/6.7.2 Metadata streams/6.7.2.1 General/verapdf-profile-6-7-2-1-t05.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.7.2.1 General - Conforms to XMP Specification. - All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8
- All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8 actualEncoding == "UTF-8" The XMP package uses encoding %1 different from UTF-8 diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml index 53af6778..04018bb7 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t01.xml @@ -3,17 +3,17 @@
ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema. The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/"
The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/" Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml index a39f0deb..f459a7fc 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml @@ -2,16 +2,16 @@
ISO 19005-4:2020 - 6.7.3 Version identification - Part number. - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms
- The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 4 - The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file part diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml index 690c9382..32867992 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -2,16 +2,16 @@
ISO 19005-4:2020 - 6.7.3 Version identification - Conformance level. - A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance. + A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance
- A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance. + A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance conformance == null - The "conformance" property of the PDF/A Identification Schema is %1 instead of null for PDF/A-4 conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of null for PDF/A-4 conforming file conformance diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml index 441fa292..d681e7ba 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml @@ -2,16 +2,16 @@
ISO 19005-4:2020 - 6.7.3 Version identification - rev property - The value of pdfaid:rev shall be the four digit year. + The value of pdfaid:rev shall be the four digit year
- The value of pdfaid:rev shall be the four digit year. + The value of pdfaid:rev shall be the four digit year /^\d{4}$/.test(rev) - The value of pdfaid:rev (%1) not the four digit year. + The value of pdfaid:rev (%1) not the four digit year rev diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml index 68722b73..32890ad4 100644 --- a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml +++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t01.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.9 Embedded files - Subtype The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. - If the MIME type is not known, the value "application/octet-stream" shall be used. + If the MIME type is not known, the value "application/octet-stream" shall be used
The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. - If the MIME type is not known, the value "application/octet-stream" shall be used. + If the MIME type is not known, the value "application/octet-stream" shall be used Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) MIME type %1 of an embedded file is missing or invalid diff --git a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml index dd5c1042..b43ff5ff 100644 --- a/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml +++ b/PDF_A/4/6.9 Embedded files/verapdf-profile-6-9-t04.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.9 Embedded files - AFRelationship Each embedded file’s file specification dictionary shall contain an AFRelationship key - (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. + (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF
Each embedded file’s file specification dictionary shall contain an AFRelationship key - (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. + (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF containsEF == false || AFRelationship != null The file specification dictionary for an embedded file does not contain the AFRelationship key diff --git a/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml b/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml index d4155563..c2ba9e34 100644 --- a/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml +++ b/PDF_A/4e/6.1 File structure/6.1.6 Stream objects/6.1.6.1 General/verapdf-profile-6-1-6-1-t03.xml @@ -3,14 +3,14 @@
ISO 19005-4:2020 - 6.1.6 Stream objects - 6.1.6.1 General - 3D stream The Subtype entry in a 3D stream dictionary (ISO 32000-2:2020, 13.6.3) shall have a value which is - either U3D or PRC as described in Annex B. + either U3D or PRC as described in Annex B
The Subtype entry in a 3D stream dictionary (ISO 32000-2:2020, 13.6.3) shall have a value which - is either U3D or PRC as described in Annex B. + is either U3D or PRC as described in Annex B Subtype == 'U3D' || Subtype == 'PRC' The Subtype entry in the 3D stream dictionary (ISO 32000-2:2020, 13.6.3) has value %1 that is diff --git a/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml index 8b1d70da..562a4f16 100644 --- a/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml +++ b/PDF_A/4e/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.3.1 Annotation types Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. Additionally, the Sound, Screen and Movie and FileAttachment types shall not be permitted. 3D and RichMedia - types shall only be permitted in a PDF/A-4e compliant file as described in Annex B. + types shall only be permitted in a PDF/A-4e compliant file as described in Annex B
@@ -12,7 +12,7 @@ Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. Additionally, the Sound, Screen, Movie and FileAttachment types shall not be permitted. 3D and RichMedia - types shall only be permitted in a PDF/A-4e compliant file as described in Annex B. + types shall only be permitted in a PDF/A-4e compliant file as described in Annex B Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || diff --git a/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml index d9fb0e52..041a79ee 100644 --- a/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml +++ b/PDF_A/4e/6.6 Action/6.6.1 General/verapdf-profile-6-6-1-t01.xml @@ -4,7 +4,7 @@ ISO 19005-4:2020 - 6.6 Actions - 6.6.1 General - Action types The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The SetOCGState - and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in Annex B. + and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in Annex B
@@ -13,7 +13,7 @@ The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in - Annex B. + Annex B
S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "SetOCGState" || S == "GoTo3DView" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" diff --git a/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml index 0b24ff25..68373524 100644 --- a/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -2,16 +2,16 @@
ISO 19005-4:2020 - 6.7.3 Version and conformance level identification - Conformance level. - A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E. + A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E
- A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E. + A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E conformance == "E" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "E" for PDF/A-4E conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "E" for PDF/A-4E conforming file conformance diff --git a/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml b/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml index ea99b340..3567fb85 100644 --- a/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml +++ b/PDF_A/4f/6.3 Annotations/6.3.1 Annotation types/verapdf-profile-6-3-1-t01.xml @@ -3,7 +3,7 @@
ISO 19005-4:2020 - 6.3.1 Annotation types Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. - Additionally, the Sound, Screen, Movie, 3D and RichMedia types shall not be permitted. + Additionally, the Sound, Screen, Movie, 3D and RichMedia types shall not be permitted
@@ -11,7 +11,7 @@ Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. Additionally, the Sound, Screen, Movie, 3D and RichMedia types shall not be permitted. The FileAttachment type shall - only be permitted in a PDF/A-4f compliant file as described in Annex A. + only be permitted in a PDF/A-4f compliant file as described in Annex A Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || diff --git a/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml index 8c95d7a4..a36c458f 100644 --- a/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -2,16 +2,16 @@
ISO 19005-4:2020 - 6.7.3 Version and conformance level identification - Conformance level. - A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F. + A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F
- A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F. + A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F conformance == "F" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "F" for PDF/A-4F conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "F" for PDF/A-4F conforming file conformance diff --git a/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t05.xml b/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t05.xml index 6c061d0e..07ca9a30 100644 --- a/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t05.xml +++ b/PDF_A/4f/6.9 Embedded files/verapdf-profile-6-9-t05.xml @@ -3,18 +3,18 @@
ISO 19005-4:2020 - 6.9 Embedded files A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the - document catalog dictionary. + document catalog dictionary
A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the - document catalog dictionary. + document catalog dictionary containsEmbeddedFiles == true A PDF/A-4f conforming file does not contain an EmbeddedFiles key in the name dictionary of the - document catalog dictionary. + document catalog dictionary diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index c41168e6..031351c1 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -8,8 +8,7 @@ - The % character of the file header shall occur at byte offset 0 of the file. - The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + The % character of the file header shall occur at byte offset 0 of the file. The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-n.m @@ -24,12 +23,10 @@ - The file header line shall be immediately followed by a comment consisting of a % character followed by at - least four characters, each of whose encoded byte values shall have a decimal value greater than 127 + The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not start with 4 bytes with byte values - above 127 (first four bytes = %1, %2, %3, %4) + Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4) headerByte1 headerByte2 @@ -41,8 +38,7 @@ - The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, - as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 (isLinearized == true) ? (firstPageID != null) : (lastID != null) Missing ID in the document trailer @@ -62,7 +58,7 @@ - No data shall follow the last end-of-file marker except a single optional end-of-line marker. + No data shall follow the last end-of-file marker except a single optional end-of-line marker postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker @@ -74,8 +70,7 @@ - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical (isLinearized != true) || lastID == null || (firstPageID == lastID) Last ID (%1) is present in the Linearized PDF and does not match the first page ID (%2) @@ -142,8 +137,7 @@ - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file - following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) @@ -156,8 +150,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -181,9 +174,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword - shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -194,7 +185,7 @@ The LZWDecode filter shall not be permitted - internalRepresentation != "LZWDecode" + internalRepresentation != "LZWDecode" Unknown or not permitted Stream filter %1 is used @@ -206,7 +197,7 @@ The LZWDecode filter shall not be permitted - internalRepresentation != "LZWDecode" && internalRepresentation != "LZW" + internalRepresentation != "LZWDecode" && internalRepresentation != "LZW" LZW compression is used in the inline image @@ -389,9 +380,8 @@ - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents - array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information @@ -402,8 +392,7 @@ - If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) @@ -416,8 +405,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.4 requirements @@ -432,10 +420,8 @@ - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2) @@ -450,7 +436,7 @@ DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space - gOutputCS != null && gOutputCS == "RGB " + gOutputCS != null && gOutputCS == "RGB " DeviceRGB colour space is used without RGB output intent profile @@ -460,7 +446,7 @@ DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space - gOutputCS != null && gOutputCS == "CMYK" + gOutputCS != null && gOutputCS == "CMYK" DeviceCMYK colour space is used without CMYK output intent profile @@ -510,8 +496,7 @@ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4 or 8 - BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || - BitsPerComponent == 8 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 The value of the BitsPerComponent key in the Image dictionary is %1 @@ -525,7 +510,7 @@ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && containsPS == false + (Subtype2 == null || Subtype2 != "PS") && containsPS == false The form XObject dictionary contains a PS key or Subtype2 key with value PS @@ -545,7 +530,7 @@ A conforming file shall not contain any PostScript XObjects - Subtype != "PS" + Subtype != "PS" The document contains a PostScript XObject @@ -565,7 +550,7 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + TR2 == null || TR2 == "Default" An ExtGState dictionary contains the TR2 key with value %1 other than Default @@ -576,9 +561,8 @@ - Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value %1 is used @@ -589,8 +573,7 @@ - A content stream shall not contain any operators not defined in PDF Reference - even if such operators are bracketed by the BX/EX compatibility operators + A content stream shall not contain any operators not defined in PDF Reference even if such operators are bracketed by the BX/EX compatibility operators false A content stream contains operator %1 not defined in PDF Reference @@ -602,9 +585,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" A Font dictionary has value %1 of Type entry instead of Font @@ -620,11 +602,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" Invalid Subtype entry in font dictionary with value %1 @@ -640,9 +619,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type @@ -656,8 +634,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null A non-standard simple font dictionary has missing or invalid FirstChar entry @@ -670,8 +647,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -684,8 +660,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) Widths array is missing or has invalid size %1 instead of %2 @@ -701,11 +676,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are - Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF). - fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" Unsupported font file format %1 of the embedded font @@ -719,14 +691,10 @@ - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries - for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry) + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry) - Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4) + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4) CIDFontOrdering CMapOrdering @@ -741,9 +709,8 @@ - For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 - Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 + Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -756,9 +723,9 @@ All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 - CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 - A CMap is different from "Identity-H" or "Identity-V" and is not embedded + A CMap is different from "Identity-H" or "Identity-V" and is not embedded @@ -780,9 +747,8 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3 - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -793,7 +759,7 @@ - Embedded font programs shall define all font glyphs referenced for rendering with conforming file. + Embedded font programs shall define all font glyphs referenced for rendering with conforming file renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -803,8 +769,7 @@ - For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) A Type1 font subset does not define CharSet entry in its Descriptor dictionary @@ -816,12 +781,10 @@ - For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 fontName.search(/[A-Z]{6}\+/) != 0 || (containsCIDSet == true && cidSetListsAllGlyphs == true) - A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs - present in the embedded font subset and used for rendering + A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs present in the embedded font subset and used for rendering @@ -830,10 +793,8 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and - in the embedded font program shall be consistent. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -847,22 +808,17 @@ - All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as - the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the - dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || - Encoding == "WinAnsiEncoding") && containsDifferences == false) + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && containsDifferences == false) - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2) + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2) Encoding containsDifferences - + @@ -874,12 +830,12 @@ - + - Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding isSymbolic == false || nrCmaps == 1 The embedded font program for a symbolic TrueType font contains %1 cmap subtables @@ -888,16 +844,12 @@ - + - The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, - as described in PDF Reference 5.9, unless the font meets any of the following three conditions: - (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; - (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; - (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections. + The font dictionary shall include a ToUnicode entry whose value is a CMap stream object that maps character codes to Unicode values, as described in PDF Reference 5.9, unless the font meets any of the following three conditions: (*) fonts that use the predefined encodings MacRomanEncoding, MacExpertEncoding or WinAnsiEncoding, or that use the predefined Identity-H or Identity-V CMaps; (*) Type 1 fonts whose character names are taken from the Adobe standard Latin character set or the set of named characters in the Symbol font, as defined in PDF Reference Appendix D; (*) Type 0 fonts whose descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1 or Adobe-Korea1 character collections toUnicode != null The font does not define Unicode character map @@ -908,7 +860,7 @@ If an SMask key appears in an ExtGState dictionary, its value shall be None - SMask == null || SMask == "None" + SMask == null || SMask == "None" An ExtGState contains SMask key with value %1 instead of None @@ -926,26 +878,25 @@ - + - A Group object with an S key with a value of Transparency shall not be included in a form XObject. - A Group object with an S key with a value of Transparency shall not be included in a page dictionary - S != "Transparency" + A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionary + S != "Transparency" A transparency group is present in a form XObject or page dictionary - + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible - BM == null || BM == "Normal" || BM == "Compatible" + BM == null || BM == "Normal" || BM == "Compatible" An ExtGState dictionary contains the BM key (blend mode) with value %1 that is neither Normal or Compatible @@ -980,12 +931,8 @@ - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, - Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, Sound and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" Unknown or not permitted Annotation type %1 @@ -1010,27 +957,24 @@ - An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, - Invisible and NoView flag bits shall be set to 0 + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, Invisible and NoView flag bits shall be set to 0 F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - Annotation flags are either missing or set the annotation to be hidden/invisible or non-printable - (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5) + Annotation flags are either missing or set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5) F - F != null ? (F & 4) >> 2 : null - F != null ? (F & 2) >> 1 : null + F != null ? (F & 4) >> 2 : null + F != null ? (F & 2) >> 1 : null F != null ? (F & 1) : null - F != null ? (F & 32) >> 5 : null + F != null ? (F & 32) >> 5 : null - An annotation dictionary shall not contain the C array or the IC array unless the colour space of the - DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (containsC == false && containsIC == false) || gOutputCS == "RGB " + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + (containsC == false && containsIC == false) || gOutputCS == "RGB " Annotation's color (C present = %1) or interior color (IC present = %2) is used without specifying RGB-based destination output profile @@ -1042,9 +986,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as - its value shall contain only the N key. - AP == null || AP == "N" + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key + AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -1052,47 +995,42 @@ - + - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, - the value of the N key shall be an appearance subdictionary. - AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) - An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, but the value of the N key is %1 instead of appearance subdictionary + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary N_type - + - If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. - AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" - An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the - value of the N key is not an appearance stream + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream Subtype FT - + - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) - S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted Action type %1 @@ -1100,13 +1038,13 @@ - + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 @@ -1159,32 +1097,30 @@ - The document catalog dictionary of a conforming file shall contain the Metadata key. + The document catalog dictionary of a conforming file shall contain the Metadata key metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key - Metadata object stream dictionaries shall not contain the Filter key. + Metadata object stream dictionaries shall not contain the Filter key Filter == null - The metadata object stream dictionary contains the Filter key. + The metadata object stream dictionary contains the Filter key - The value of CreationDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreateDate shall be equivalent. + The value of CreationDate entry from the document information dictionary, if present, and its analogous XMP property xmp:CreateDate shall be equivalent doCreationDatesMatch != false - The value of CreationDate entry from the document Info dictionary and its matching XMP property - xmp:CreateDate are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) + The value of CreationDate entry from the document Info dictionary and its matching XMP property xmp:CreateDate are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) CreationDate XMPCreateDate @@ -1196,12 +1132,10 @@ - The value of Title entry from the document information dictionary, if present, and its - analogous XMP property dc:title['x-default'] shall be equivalent. + The value of Title entry from the document information dictionary, if present, and its analogous XMP property dc:title['x-default'] shall be equivalent Title == null || Title == XMPTitle - The value of Title entry from the document Info dictionary and its matching XMP property - dc:title['x-default'] are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2) + The value of Title entry from the document Info dictionary and its matching XMP property dc:title['x-default'] are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2) Title XMPTitle @@ -1213,12 +1147,10 @@ - The value of Author entry from the document information dictionary, if present, and its - analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry + The value of Author entry from the document information dictionary, if present, and its analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry Author == null || (Author == XMPCreator && XMPCreatorSize == 1) - The value of Author entry from the document Info dictionary and its matching XMP property - dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) + The value of Author entry from the document Info dictionary and its matching XMP property dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) Author XMPCreator @@ -1230,12 +1162,10 @@ - The value of Subject entry from the document information dictionary, if present, and its - analogous XMP property dc:description['x-default'] shall be equivalent. + The value of Subject entry from the document information dictionary, if present, and its analogous XMP property dc:description['x-default'] shall be equivalent Subject == null || Subject == XMPDescription - The value of Subject entry from the document Info dictionary and its matching XMP property - dc:description['x-default'] are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) + The value of Subject entry from the document Info dictionary and its matching XMP property dc:description['x-default'] are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) Subject XMPDescription @@ -1247,12 +1177,10 @@ - The value of Keywords entry from the document information dictionary, if present, and its - analogous XMP property pdf:Keywords shall be equivalent. + The value of Keywords entry from the document information dictionary, if present, and its analogous XMP property pdf:Keywords shall be equivalent Keywords == null || Keywords == XMPKeywords - The value of Keywords entry from the document Info dictionary and its matching XMP property - pdf:Keywords are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) + The value of Keywords entry from the document Info dictionary and its matching XMP property pdf:Keywords are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) Keywords XMPKeywords @@ -1264,12 +1192,10 @@ - The value of Creator entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreatorTool shall be equivalent. + The value of Creator entry from the document information dictionary, if present, and its analogous XMP property xmp:CreatorTool shall be equivalent Creator == null || Creator == XMPCreatorTool - The value of Creator entry from the document Info dictionary and its matching XMP property - xmp:CreatorTool are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) + The value of Creator entry from the document Info dictionary and its matching XMP property xmp:CreatorTool are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) Creator XMPCreatorTool @@ -1281,12 +1207,10 @@ - The value of Producer entry from the document information dictionary, if present, and its - analogous XMP property pdf:Producer shall be equivalent. + The value of Producer entry from the document information dictionary, if present, and its analogous XMP property pdf:Producer shall be equivalent Producer == null || Producer == XMPProducer - The value of Producer entry from the document Info dictionary and its matching XMP property - pdf:Producer are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) + The value of Producer entry from the document Info dictionary and its matching XMP property pdf:Producer are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) Producer XMPProducer @@ -1298,12 +1222,10 @@ - The value of ModDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:ModifyDate shall be equivalent. + The value of ModDate entry from the document information dictionary, if present, and its analogous XMP property xmp:ModifyDate shall be equivalent doModDatesMatch != false - The value of ModDate entry from the document Info dictionary and its matching XMP property - xmp:ModifyDate are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) + The value of ModDate entry from the document Info dictionary and its matching XMP property xmp:ModifyDate are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) ModDate XMPModifyDate @@ -1315,27 +1237,27 @@ - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute - Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. + Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause containsUndefinedFields == false An extension schema object contains field(s) %1 not defined by the specification @@ -1349,12 +1271,10 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". - The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas - isValidBag == true && prefix == "pdfaExtension" + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" - The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix - 'pdfaExtension' (prefix = %2) + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2) isValidBag prefix @@ -1366,12 +1286,10 @@ - Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isSchemaValidText == true && schemaPrefix == "pdfaSchema" + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isSchemaValidText == true && schemaPrefix == "pdfaSchema" - Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) schemaPrefix isSchemaValidText @@ -1383,12 +1301,10 @@ - Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" - Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1400,12 +1316,10 @@ - Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isPrefixValidText == true && prefixPrefix == "pdfaSchema" + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isPrefixValidText == true && prefixPrefix == "pdfaSchema" - Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1417,12 +1331,10 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema' + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq @@ -1434,12 +1346,10 @@ - Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. - isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema' + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") - Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) valueTypePrefix isValueTypeValidSeq @@ -1451,12 +1361,10 @@ - Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. - isNameValidText == true && namePrefix == "pdfaProperty" + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isNameValidText == true && namePrefix == "pdfaProperty" - Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1466,14 +1374,10 @@ - Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" - Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or - value of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1484,14 +1388,10 @@ - Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. - isCategoryValidText == true && (category == "external" || category == "internal") && - categoryPrefix == "pdfaProperty" + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty' + isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty" - Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or - has value different from external or internal (category value = %3) + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3) categoryPrefix isCategoryValidText @@ -1502,12 +1402,10 @@ - Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. - isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" - Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1517,12 +1415,10 @@ - Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. - isTypeValidText == true && typePrefix == "pdfaType" + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isTypeValidText == true && typePrefix == "pdfaType" - Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) typePrefix isTypeValidText @@ -1532,12 +1428,10 @@ - Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" - Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1547,12 +1441,10 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. - isPrefixValidText == true && prefixPrefix == "pdfaType" + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isPrefixValidText == true && prefixPrefix == "pdfaType" - Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1562,12 +1454,10 @@ - Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. - isDescriptionValidText == true && descriptionPrefix == "pdfaType" + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isDescriptionValidText == true && descriptionPrefix == "pdfaType" - Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1577,12 +1467,10 @@ - Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. - isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType' + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") - Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' - (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) fieldPrefix isFieldValidSeq @@ -1592,12 +1480,10 @@ - Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. - isNameValidText == true && namePrefix == "pdfaField" + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isNameValidText == true && namePrefix == "pdfaField" - Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' - (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1607,13 +1493,10 @@ - Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" - Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value - of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1624,12 +1507,10 @@ - Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. - isDescriptionValidText == true && descriptionPrefix == "pdfaField" + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isDescriptionValidText == true && descriptionPrefix == "pdfaField" - Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1642,7 +1523,7 @@ The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions isSerializationValid - The serialization of the metadata stream does not conform to XMP Specification. + The serialization of the metadata stream does not conform to XMP Specification @@ -1651,19 +1532,17 @@ - Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, - or extension schemas that comply with XMP Specification + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true - A property is either not defined in XMP Specification, or is not defined in any of the extension schemas. + A property is either not defined in XMP Specification, or is not defined in any of the extension schemas - Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, - or extension schemas that comply with XMP Specification + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification isValueTypeCorrect == true XMP property does not correspond to type %1 @@ -1675,20 +1554,20 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 1 - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file part @@ -1697,10 +1576,10 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. - conformance == "A" + A Level A conforming file shall specify the value of pdfaid:conformance as A + conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file conformance @@ -1710,7 +1589,7 @@ Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid - partPrefix == null || partPrefix == "pdfaid" + partPrefix == null || partPrefix == "pdfaid" Property part of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1722,7 +1601,7 @@ Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid - conformancePrefix == null || conformancePrefix == "pdfaid" + conformancePrefix == null || conformancePrefix == "pdfaid" Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1734,7 +1613,7 @@ Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid - amdPrefix == null || amdPrefix == "pdfaid" + amdPrefix == null || amdPrefix == "pdfaid" Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1745,11 +1624,10 @@ - The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true. + The document catalog dictionary shall include a MarkInfo dictionary with a Marked entry in it, whose value shall be true Marked == true - MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or - is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2) + MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2) MarkInfo Marked @@ -1773,8 +1651,7 @@ - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root. + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root circularMappingExist == true Non-standard structure type %1 is not mapped to a standard type @@ -1802,9 +1679,7 @@ - If the Lang entry is present in the document catalog dictionary or in a structure element - dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for - the Identification of Languages, as described in PDF Reference 9.8.1. + If the Lang entry is present in the document catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for the Identification of Languages, as described in PDF Reference 9.8.1 unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})*$/.test(unicodeValue) Value %1 of the Lang entry is not Language-Tag @@ -1829,10 +1704,10 @@ - Every form field shall have an appearance dictionary associated with the field's data. + Every form field shall have an appearance dictionary associated with the field's data AP != null - Form field does not have an appearance dictionary associated with the field's data. + Form field does not have an appearance dictionary associated with the field's data @@ -1841,7 +1716,7 @@ null - S == "GTS_PDFA1" ? colorSpace : gOutputCS + S == "GTS_PDFA1" ? colorSpace : gOutputCS
diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 23f43db3..9b184f57 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -8,8 +8,7 @@ - The % character of the file header shall occur at byte offset 0 of the file. - The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms + The % character of the file header shall occur at byte offset 0 of the file. The first line of a PDF file is a header identifying the version of the PDF specification to which the file conforms headerOffset == 0 && /%PDF-\d\.\d/.test(header) File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-n.m @@ -24,12 +23,10 @@ - The file header line shall be immediately followed by a comment consisting of a % character followed by at - least four characters, each of whose encoded byte values shall have a decimal value greater than 127 + The file header line shall be immediately followed by a comment consisting of a % character followed by at least four characters, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not start with 4 bytes with byte values - above 127 (first four bytes = %1, %2, %3, %4) + Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4) headerByte1 headerByte2 @@ -41,8 +38,7 @@ - The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, - as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 + The file trailer dictionary shall contain the ID keyword. The file trailer referred to is either the last trailer dictionary in a PDF file, as described in PDF Reference 3.4.4 and 3.4.5, or the first page trailer in a linearized PDF file, as described in PDF Reference F.2 (isLinearized == true) ? (firstPageID != null) : (lastID != null) Missing ID in the document trailer @@ -62,7 +58,7 @@ - No data shall follow the last end-of-file marker except a single optional end-of-line marker. + No data shall follow the last end-of-file marker except a single optional end-of-line marker postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker @@ -74,8 +70,7 @@ - In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary - and the last trailer dictionary, the value to both instances of the ID keyword shall be identical + In a linearized PDF, if the ID keyword is present in both the first page trailer dictionary and the last trailer dictionary, the value to both instances of the ID keyword shall be identical (isLinearized != true) || lastID == null || (firstPageID == lastID) Last ID (%1) is present in the Linearized PDF and does not match the first page ID (%2) @@ -142,8 +137,7 @@ - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file - following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED character after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) @@ -156,8 +150,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence - or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -181,9 +174,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword - shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -194,7 +185,7 @@ The LZWDecode filter shall not be permitted - internalRepresentation != "LZWDecode" + internalRepresentation != "LZWDecode" Unknown or not permitted Stream filter %1 is used @@ -206,7 +197,7 @@ The LZWDecode filter shall not be permitted - internalRepresentation != "LZWDecode" && internalRepresentation != "LZW" + internalRepresentation != "LZWDecode" && internalRepresentation != "LZW" LZW compression is used in the inline image @@ -389,9 +380,8 @@ - A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents - array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 + A PDF/A-1 OutputIntent is an OutputIntent dictionary, as defined by PDF Reference 9.10.4, that is included in the file's OutputIntents array and has GTS_PDFA1 as the value of its S key and a valid ICC profile stream as the value its DestOutputProfile key + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 3.0 The embedded PDF/A Output Intent colour profile is either invalid or does not provide BToA information @@ -402,8 +392,7 @@ - If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile - key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream + If a file's OutputIntents array contains more than one entry, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) @@ -416,8 +405,7 @@ All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5 - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 3.0 The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.4 requirements @@ -432,10 +420,8 @@ - All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. - The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. - As of PDF 1.4, N must be 1, 3, or 4 - N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) + All ICCBased colour spaces shall be embedded as ICC profile streams as described in PDF Reference 4.5. The number of color components in the color space described by the ICC profile data must match the number of components actually in the ICC profile. As of PDF 1.4, N must be 1, 3, or 4 + N != null && ((N == 1 && colorSpace == "GRAY") || (N == 3 && (colorSpace == "RGB " || colorSpace == "Lab ")) || (N == 4 && colorSpace == "CMYK")) The N entry (value %1) in the ICC profile dictionary is missing or does not match the number of components in the embedded ICC profile (color space %2) @@ -450,7 +436,7 @@ DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space - gOutputCS != null && gOutputCS == "RGB " + gOutputCS != null && gOutputCS == "RGB " DeviceRGB colour space is used without RGB output intent profile @@ -460,7 +446,7 @@ DeviceCMYK may be used only if the file has a PDF/A-1 OutputIntent that uses a CMYK colour space - gOutputCS != null && gOutputCS == "CMYK" + gOutputCS != null && gOutputCS == "CMYK" DeviceCMYK colour space is used without CMYK output intent profile @@ -510,8 +496,7 @@ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4 or 8 - BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || - BitsPerComponent == 8 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 The value of the BitsPerComponent key in the Image dictionary is %1 @@ -525,7 +510,7 @@ A form XObject dictionary shall not contain the Subtype2 key with a value of PS or the PS key - (Subtype2 == null || Subtype2 != "PS") && containsPS == false + (Subtype2 == null || Subtype2 != "PS") && containsPS == false The form XObject dictionary contains a PS key or Subtype2 key with value PS @@ -545,7 +530,7 @@ A conforming file shall not contain any PostScript XObjects - Subtype != "PS" + Subtype != "PS" The document contains a PostScript XObject @@ -565,7 +550,7 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + TR2 == null || TR2 == "Default" An ExtGState dictionary contains the TR2 key with value %1 other than Default @@ -576,9 +561,8 @@ - Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference - RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + Where a rendering intent is specified, its value shall be one of the four values defined in PDF Reference RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value %1 is used @@ -589,8 +573,7 @@ - A content stream shall not contain any operators not defined in PDF Reference - even if such operators are bracketed by the BX/EX compatibility operators + A content stream shall not contain any operators not defined in PDF Reference even if such operators are bracketed by the BX/EX compatibility operators false A content stream contains operator %1 not defined in PDF Reference @@ -602,9 +585,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" A Font dictionary has value %1 of Type entry instead of Font @@ -620,11 +602,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" Invalid Subtype entry in font dictionary with value %1 @@ -640,9 +619,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type @@ -656,8 +634,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null A non-standard simple font dictionary has missing or invalid FirstChar entry @@ -670,8 +647,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -684,8 +660,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) Widths array is missing or has invalid size %1 instead of %2 @@ -701,11 +676,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are - Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF). - fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.4 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF) and CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" Unsupported font file format %1 of the embedded font @@ -719,14 +691,10 @@ - For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its - CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries - for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry) + For any given composite (Type 0) font referenced within a conforming file, the CIDSystemInfo entries of its CIDFont and CMap dictionaries shall be compatible. In other words, the Registry and Ordering strings of the CIDSystemInfo dictionaries for that font shall be identical, unless the value of the Encoding key in the font dictionary is Identity-H or Identity-V + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry) - Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4) + Registry and Ordering entries in the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4) CIDFontOrdering CMapOrdering @@ -741,9 +709,8 @@ - For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 - Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 + For all Type 2 CIDFonts that are used for rendering, 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 PDF Reference Table 5.13 + Subtype != "CIDFontType2" || CIDToGIDMap != null || renderingMode == 3 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -756,9 +723,9 @@ All CMaps used within a conforming file, except Identity-H and Identity-V, shall be embedded in that file as described in PDF Reference 5.6.4 - CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 + CMapName == "Identity-H" || CMapName == "Identity-V" || embeddedFile_size == 1 - A CMap is different from "Identity-H" or "Identity-V" and is not embedded + A CMap is different from "Identity-H" or "Identity-V" and is not embedded @@ -780,9 +747,8 @@ - The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, - except when the fonts are used exclusively with text rendering mode 3 - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + The font programs for all fonts used within a conforming file shall be embedded within that file, as defined in PDF Reference 5.8, except when the fonts are used exclusively with text rendering mode 3 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -793,7 +759,7 @@ - Embedded font programs shall define all font glyphs referenced for rendering with conforming file. + Embedded font programs shall define all font glyphs referenced for rendering with conforming file renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -803,8 +769,7 @@ - For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string - listing the character names defined in the font subset, as described in PDF Reference Table 5.18 + For all Type 1 font subsets referenced within a conforming file, the font descriptor dictionary shall include a CharSet string listing the character names defined in the font subset, as described in PDF Reference Table 5.18 fontName.search(/[A-Z]{6}\+/) != 0 || (CharSet != null && charSetListsAllGlyphs == true) A Type1 font subset does not define CharSet entry in its Descriptor dictionary @@ -816,12 +781,10 @@ - For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a - CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 + For all CIDFont subsets referenced within a conforming file, the font descriptor dictionary shall include a CIDSet stream identifying which CIDs are present in the embedded CIDFont file, as described in PDF Reference Table 5.20 fontName.search(/[A-Z]{6}\+/) != 0 || (containsCIDSet == true && cidSetListsAllGlyphs == true) - A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs - present in the embedded font subset and used for rendering + A CIDSet entry in the Font descriptor is missing or does not correctly identify all glyphs present in the embedded font subset and used for rendering @@ -830,10 +793,8 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and - in the embedded font program shall be consistent. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -847,22 +808,17 @@ - All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as - the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the - dictionary that is the value of the Encoding entry in the font dictionary. - If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || - Encoding == "WinAnsiEncoding") && containsDifferences == false) + All non-symbolic TrueType fonts shall specify MacRomanEncoding or WinAnsiEncoding, either as the value of the Encoding entry in the font dictionary or as the value of the BaseEncoding entry in the dictionary that is the value of the Encoding entry in the font dictionary. If the value of the Encoding entry is a dictionary, it shall not contain a Differences entry + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && containsDifferences == false) - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2) + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2) Encoding containsDifferences - + @@ -874,12 +830,12 @@ - + - Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding + Font programs' "cmap" tables for all symbolic TrueType fonts shall contain exactly one encoding isSymbolic == false || nrCmaps == 1 The embedded font program for a symbolic TrueType font contains %1 cmap subtables @@ -888,13 +844,13 @@ - + If an SMask key appears in an ExtGState dictionary, its value shall be None - SMask == null || SMask == "None" + SMask == null || SMask == "None" An ExtGState contains SMask key with value %1 instead of None @@ -912,26 +868,25 @@ - + - A Group object with an S key with a value of Transparency shall not be included in a form XObject. - A Group object with an S key with a value of Transparency shall not be included in a page dictionary - S != "Transparency" + A Group object with an S key with a value of Transparency shall not be included in a form XObject. A Group object with an S key with a value of Transparency shall not be included in a page dictionary + S != "Transparency" A transparency group is present in a form XObject or page dictionary - + The following keys, if present in an ExtGState object, shall have the values shown: BM - Normal or Compatible - BM == null || BM == "Normal" || BM == "Compatible" + BM == null || BM == "Normal" || BM == "Compatible" An ExtGState dictionary contains the BM key (blend mode) with value %1 that is neither Normal or Compatible @@ -966,12 +921,8 @@ - Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, - Sound and Movie types shall not be permitted - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || - Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || - Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" + Annotation types not defined in PDF Reference shall not be permitted. Additionally, the FileAttachment, Sound and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" Unknown or not permitted Annotation type %1 @@ -996,27 +947,24 @@ - An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, - Invisible and NoView flag bits shall be set to 0 + An annotation dictionary shall contain the F key. The F key’s Print flag bit shall be set to 1 and its Hidden, Invisible and NoView flag bits shall be set to 0 F != null && (F & 4) == 4 && (F & 1) == 0 && (F & 2) == 0 && (F & 32) == 0 - Annotation flags are either missing or set the annotation to be hidden/invisible or non-printable - (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5) + Annotation flags are either missing or set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5) F - F != null ? (F & 4) >> 2 : null + F != null ? (F & 4) >> 2 : null + F != null ? (F & 2) >> 1 : null F != null ? (F & 1) : null - F != null ? (F & 2) >> 1 : null - F != null ? (F & 32) >> 5 : null + F != null ? (F & 32) >> 5 : null - An annotation dictionary shall not contain the C array or the IC array unless the colour space of the - DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB - (containsC == false && containsIC == false) || gOutputCS == "RGB " + An annotation dictionary shall not contain the C array or the IC array unless the colour space of the DestOutputProfile in the PDF/A-1 OutputIntent dictionary, defined in 6.2.2, is RGB + (containsC == false && containsIC == false) || gOutputCS == "RGB " Annotation's color (C present = %1) or interior color (IC present = %2) is used without specifying RGB-based destination output profile @@ -1028,9 +976,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as - its value shall contain only the N key. - AP == null || AP == "N" + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key + AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -1038,47 +985,42 @@ - + - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, - the value of the N key shall be an appearance subdictionary. - AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) - An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, but the value of the N key is %1 instead of appearance subdictionary + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary N_type - + - If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. - AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" - An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the - value of the N key is not an appearance stream + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream Subtype FT - + - The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) - S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + The Launch, Sound, Movie, ResetForm, ImportData and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The Hide action shall not be permitted (Corrigendum 2) + S == "GoTo" || S == "GoToR" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted Action type %1 @@ -1086,13 +1028,13 @@ - + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 @@ -1145,32 +1087,30 @@ - The document catalog dictionary of a conforming file shall contain the Metadata key. + The document catalog dictionary of a conforming file shall contain the Metadata key metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key - Metadata object stream dictionaries shall not contain the Filter key. + Metadata object stream dictionaries shall not contain the Filter key Filter == null - The metadata object stream dictionary contains the Filter key. + The metadata object stream dictionary contains the Filter key - The value of CreationDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreateDate shall be equivalent. + The value of CreationDate entry from the document information dictionary, if present, and its analogous XMP property xmp:CreateDate shall be equivalent doCreationDatesMatch != false - The value of CreationDate entry from the document Info dictionary and its matching XMP property - xmp:CreateDate are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) + The value of CreationDate entry from the document Info dictionary and its matching XMP property xmp:CreateDate are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) CreationDate XMPCreateDate @@ -1182,12 +1122,10 @@ - The value of Title entry from the document information dictionary, if present, and its - analogous XMP property dc:title['x-default'] shall be equivalent. + The value of Title entry from the document information dictionary, if present, and its analogous XMP property dc:title['x-default'] shall be equivalent Title == null || Title == XMPTitle - The value of Title entry from the document Info dictionary and its matching XMP property - dc:title['x-default'] are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2) + The value of Title entry from the document Info dictionary and its matching XMP property dc:title['x-default'] are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2) Title XMPTitle @@ -1199,12 +1137,10 @@ - The value of Author entry from the document information dictionary, if present, and its - analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry + The value of Author entry from the document information dictionary, if present, and its analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry Author == null || (Author == XMPCreator && XMPCreatorSize == 1) - The value of Author entry from the document Info dictionary and its matching XMP property - dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) + The value of Author entry from the document Info dictionary and its matching XMP property dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) Author XMPCreator @@ -1216,12 +1152,10 @@ - The value of Subject entry from the document information dictionary, if present, and its - analogous XMP property dc:description['x-default'] shall be equivalent. + The value of Subject entry from the document information dictionary, if present, and its analogous XMP property dc:description['x-default'] shall be equivalent Subject == null || Subject == XMPDescription - The value of Subject entry from the document Info dictionary and its matching XMP property - dc:description['x-default'] are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) + The value of Subject entry from the document Info dictionary and its matching XMP property dc:description['x-default'] are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) Subject XMPDescription @@ -1233,12 +1167,10 @@ - The value of Keywords entry from the document information dictionary, if present, and its - analogous XMP property pdf:Keywords shall be equivalent. + The value of Keywords entry from the document information dictionary, if present, and its analogous XMP property pdf:Keywords shall be equivalent Keywords == null || Keywords == XMPKeywords - The value of Keywords entry from the document Info dictionary and its matching XMP property - pdf:Keywords are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) + The value of Keywords entry from the document Info dictionary and its matching XMP property pdf:Keywords are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) Keywords XMPKeywords @@ -1250,12 +1182,10 @@ - The value of Creator entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreatorTool shall be equivalent. + The value of Creator entry from the document information dictionary, if present, and its analogous XMP property xmp:CreatorTool shall be equivalent Creator == null || Creator == XMPCreatorTool - The value of Creator entry from the document Info dictionary and its matching XMP property - xmp:CreatorTool are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) + The value of Creator entry from the document Info dictionary and its matching XMP property xmp:CreatorTool are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) Creator XMPCreatorTool @@ -1267,12 +1197,10 @@ - The value of Producer entry from the document information dictionary, if present, and its - analogous XMP property pdf:Producer shall be equivalent. + The value of Producer entry from the document information dictionary, if present, and its analogous XMP property pdf:Producer shall be equivalent Producer == null || Producer == XMPProducer - The value of Producer entry from the document Info dictionary and its matching XMP property - pdf:Producer are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) + The value of Producer entry from the document Info dictionary and its matching XMP property pdf:Producer are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) Producer XMPProducer @@ -1284,12 +1212,10 @@ - The value of ModDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:ModifyDate shall be equivalent. + The value of ModDate entry from the document information dictionary, if present, and its analogous XMP property xmp:ModifyDate shall be equivalent doModDatesMatch != false - The value of ModDate entry from the document Info dictionary and its matching XMP property - xmp:ModifyDate are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) + The value of ModDate entry from the document Info dictionary and its matching XMP property xmp:ModifyDate are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) ModDate XMPModifyDate @@ -1301,27 +1227,27 @@ - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute - Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause. + Extension schema descriptions shall be specified using the PDF/A extension schema description schema defined in this clause containsUndefinedFields == false An extension schema object contains field(s) %1 not defined by the specification @@ -1335,12 +1261,10 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". - The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas - isValidBag == true && prefix == "pdfaExtension" + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" - The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix - 'pdfaExtension' (prefix = %2) + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2) isValidBag prefix @@ -1352,12 +1276,10 @@ - Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isSchemaValidText == true && schemaPrefix == "pdfaSchema" + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isSchemaValidText == true && schemaPrefix == "pdfaSchema" - Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) schemaPrefix isSchemaValidText @@ -1369,12 +1291,10 @@ - Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" - Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1386,12 +1306,10 @@ - Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isPrefixValidText == true && prefixPrefix == "pdfaSchema" + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isPrefixValidText == true && prefixPrefix == "pdfaSchema" - Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1403,12 +1321,10 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema' + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq @@ -1420,12 +1336,10 @@ - Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. - isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema' + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") - Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) valueTypePrefix isValueTypeValidSeq @@ -1437,12 +1351,10 @@ - Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. - isNameValidText == true && namePrefix == "pdfaProperty" + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isNameValidText == true && namePrefix == "pdfaProperty" - Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1452,14 +1364,10 @@ - Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" - Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or - value of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1470,14 +1378,10 @@ - Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. - isCategoryValidText == true && (category == "external" || category == "internal") && - categoryPrefix == "pdfaProperty" + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty' + isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty" - Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or - has value different from external or internal (category value = %3) + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3) categoryPrefix isCategoryValidText @@ -1488,12 +1392,10 @@ - Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. - isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" - Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1503,12 +1405,10 @@ - Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. - isTypeValidText == true && typePrefix == "pdfaType" + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isTypeValidText == true && typePrefix == "pdfaType" - Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) typePrefix isTypeValidText @@ -1518,12 +1418,10 @@ - Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" - Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1533,12 +1431,10 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. - isPrefixValidText == true && prefixPrefix == "pdfaType" + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isPrefixValidText == true && prefixPrefix == "pdfaType" - Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1548,12 +1444,10 @@ - Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. - isDescriptionValidText == true && descriptionPrefix == "pdfaType" + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isDescriptionValidText == true && descriptionPrefix == "pdfaType" - Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1563,12 +1457,10 @@ - Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. - isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType' + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") - Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' - (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) fieldPrefix isFieldValidSeq @@ -1578,12 +1470,10 @@ - Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. - isNameValidText == true && namePrefix == "pdfaField" + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isNameValidText == true && namePrefix == "pdfaField" - Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' - (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1593,13 +1483,10 @@ - Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" - Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value - of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1610,12 +1497,10 @@ - Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. - isDescriptionValidText == true && descriptionPrefix == "pdfaField" + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isDescriptionValidText == true && descriptionPrefix == "pdfaField" - Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1628,7 +1513,7 @@ The metadata stream shall conform to XMP Specification and well formed PDFAExtension Schema for all extensions isSerializationValid - The serialization of the metadata stream does not conform to XMP Specification. + The serialization of the metadata stream does not conform to XMP Specification @@ -1637,19 +1522,17 @@ - Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, - or extension schemas that comply with XMP Specification + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification isPredefinedInXMP2004 == true || isDefinedInCurrentPackage == true - A property is either not defined in XMP Specification, or is not defined in any of the extension schemas. + A property is either not defined in XMP Specification, or is not defined in any of the extension schemas - Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, - or extension schemas that comply with XMP Specification + Properties specified in XMP form shall use either the predefined schemas defined in XMP Specification, or extension schemas that comply with XMP Specification isValueTypeCorrect == true XMP property does not correspond to type %1 @@ -1661,20 +1544,20 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 1 - The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file part @@ -1683,10 +1566,10 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. - conformance == "B" || conformance == "A" + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B + conformance == "B" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file conformance @@ -1696,7 +1579,7 @@ Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid - partPrefix == null || partPrefix == "pdfaid" + partPrefix == null || partPrefix == "pdfaid" Property part of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1708,7 +1591,7 @@ Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid - conformancePrefix == null || conformancePrefix == "pdfaid" + conformancePrefix == null || conformancePrefix == "pdfaid" Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1720,7 +1603,7 @@ Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid - amdPrefix == null || amdPrefix == "pdfaid" + amdPrefix == null || amdPrefix == "pdfaid" Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1741,10 +1624,10 @@ - Every form field shall have an appearance dictionary associated with the field's data. + Every form field shall have an appearance dictionary associated with the field's data AP != null - Form field does not have an appearance dictionary associated with the field's data. + Form field does not have an appearance dictionary associated with the field's data @@ -1753,7 +1636,7 @@ null - S == "GTS_PDFA1" ? colorSpace : gOutputCS + S == "GTS_PDFA1" ? colorSpace : gOutputCS
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index ff483c9f..6a3643d0 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -8,12 +8,10 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h) + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, - where 'n' is a single digit number between 0 and 7 + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7 header headerOffset @@ -23,12 +21,10 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not start with 4 bytes with byte values - above 127 (first four bytes = %1, %2, %3, %4) + Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4) headerByte1 headerByte2 @@ -62,7 +58,7 @@ - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5 postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker @@ -108,8 +104,7 @@ - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) @@ -122,8 +117,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker. + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -145,17 +139,8 @@ - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of - LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode - parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be - used. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || - internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || - (internalRepresentation == "Crypt" && decodeParms == "Identity") - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity") Unknown or not permitted Stream filter %1 is used @@ -166,8 +151,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences isValidUtf8 == true The name value %1 does not represent a correct UTF-8 character sequence @@ -181,9 +165,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -193,16 +175,8 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || - internalRepresentation == "AHx" || internalRepresentation == "A85" || - internalRepresentation == "Fl" || internalRepresentation == "RL" || - internalRepresentation == "CCF" || internalRepresentation == "DCT" - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT" Inline image uses not permitted or unknown filter %1 @@ -213,7 +187,7 @@ - No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258) entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -227,12 +201,10 @@ - If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) - shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || - elem == 'DigestMethod' || elem == 'DigestValue').length == 0 + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').toString() @@ -244,7 +216,7 @@ - A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648 (intValue <= 2147483647) && (intValue >= -2147483648) Integer value %1 out of range @@ -268,7 +240,7 @@ - A conforming file shall not contain any string longer than 32767 bytes. + A conforming file shall not contain any string longer than 32767 bytes value.length() < 32768 String length (%1) exceeded 32767 @@ -280,7 +252,7 @@ - A conforming file shall not contain any name longer than 127 bytes. + A conforming file shall not contain any name longer than 127 bytes internalRepresentation.length() <= 127 Name length (%1) exceeded 127 @@ -292,7 +264,7 @@ - A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38) realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) Non-zero real value %1 is too close to 0.0 @@ -328,7 +300,7 @@ - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + A conforming file shall not contain a DeviceN colour space with more than 32 colourants nrComponents <= 32 Number of DeviceN components (%1) exceeded 32 @@ -340,7 +312,7 @@ - A conforming file shall not contain a CID value greater than 65535. + A conforming file shall not contain a CID value greater than 65535 maximalCID <= 65535 Value of a CID (%1) exceeded 65,535 @@ -352,8 +324,7 @@ - The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units - in either direction, nor shall it be greater than 14 400 units in either direction. + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) @@ -366,8 +337,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators. + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators false A content stream contains operator %1 not defined in ISO 32000-1 @@ -379,8 +349,7 @@ - A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3 inheritedResourceNames == '' A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary @@ -394,9 +363,8 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK" + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) @@ -411,10 +379,7 @@ - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) @@ -426,21 +391,20 @@ - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent S != 'GTS_PDFX' || containsDestOutputProfileRef == false The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef - + - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements @@ -455,9 +419,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is - used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting @@ -471,9 +433,8 @@ - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile + gOutputCS != null && gOutputCS == "RGB " DeviceRGB colour space is used without RGB output intent profile @@ -482,9 +443,8 @@ - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - gOutputCS != null && gOutputCS == "CMYK" + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile + gOutputCS != null && gOutputCS == "CMYK" DeviceCMYK colour space is used without CMYK output intent profile @@ -493,8 +453,7 @@ - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present. + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present gOutputCS != null DeviceGray colour space is used without output intent profile @@ -504,7 +463,7 @@ - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present areColorantsPresent == true A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -516,10 +475,7 @@ - All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -540,7 +496,7 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + TR2 == null || TR2 == "Default" An ExtGState dictionary contains the TR2 key with value %1 other than Default @@ -561,7 +517,7 @@ - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type %1 instead of 1 or 5 @@ -573,7 +529,7 @@ - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -583,10 +539,8 @@ - The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || - colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? - TransferFunction == null : TransferFunction != null) + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1 + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -597,9 +551,8 @@ - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value %1 is used @@ -630,8 +583,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false Interpolate == false The value of the Interpolate key in the Image dictionary is true @@ -642,8 +594,7 @@ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 - BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || - BitsPerComponent == 8 || BitsPerComponent == 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16 The value of the BitsPerComponent key in the Image dictionary is %1 @@ -656,7 +607,7 @@ - The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4 nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 @@ -668,11 +619,10 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field) nrColorSpacesWithApproxField @@ -681,8 +631,7 @@ - The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only - that colour space and shall ignore all other colour space specifications. + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 @@ -694,7 +643,7 @@ - JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A @@ -704,11 +653,10 @@ - The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. - bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range - ('bpcc' box present = %1, bit depth = %2) + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2) bpccBoxPresent bitDepth @@ -718,8 +666,8 @@ - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -739,7 +687,7 @@ A conforming file shall not contain any PostScript XObjects - Subtype != "PS" + Subtype != "PS" The document contains a PostScript XObject @@ -748,16 +696,8 @@ - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - internalRepresentation == "Normal" || internalRepresentation == "Compatible" || - internalRepresentation == "Multiply" || internalRepresentation == "Screen" || - internalRepresentation == "Overlay" || internalRepresentation == "Darken" || - internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || - internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || - internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || - internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || - internalRepresentation == "Saturation" || internalRepresentation == "Color" || - internalRepresentation == "Luminosity" + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" The document uses the blend mode %1 not defined in ISO 32000-1:2008 @@ -770,12 +710,10 @@ - If the document does not contain a PDF/A OutputIntent, then all Page objects - that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that - Group key shall include a CS entry whose value shall be used as the default blending colour space. + If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space gOutputCS != null || containsGroupCS == true || containsTransparency == false - The page contains transparent objects with no blending colour space defined. + The page contains transparent objects with no blending colour space defined @@ -784,10 +722,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" A Font dictionary has value %1 of Type entry instead of Font @@ -803,12 +739,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" Invalid Subtype entry in font dictionary with value %1 @@ -826,10 +758,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type @@ -842,9 +772,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null A non-standard simple font dictionary has missing or invalid FirstChar entry @@ -857,9 +785,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -872,9 +798,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) Widths array is missing or has invalid size %1 instead of %2 @@ -890,11 +814,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are - Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. - fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4 + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" Unsupported font file format %1 of the embedded font @@ -909,19 +830,10 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && - CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, - CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) CIDFontOrdering CMapOrdering @@ -935,9 +847,8 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -948,24 +859,8 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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" || - embeddedFile_size == 1 + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 A non-standard CMap %1 is not embedded @@ -978,8 +873,7 @@ - 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. + 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 WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical @@ -992,23 +886,8 @@ - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. - 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" + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" A CMap references another non-standard CMap %1 @@ -1021,8 +900,8 @@ - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -1033,11 +912,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -1049,8 +924,7 @@ - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -1060,8 +934,7 @@ - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset @@ -1071,10 +944,8 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -1086,8 +957,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries @@ -1097,17 +967,10 @@ - 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. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && - (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding containsDifferences @@ -1128,13 +991,10 @@ - The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either - exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains %1 cmap subtables and - does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) nrCmaps @@ -1143,8 +1003,7 @@ - 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 ISO 19005-2, 6.2.11.7.2. + 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 ISO 19005-2, 6.2.11.7.2 toUnicode != null The glyph can not be mapped to Unicode @@ -1156,8 +1015,8 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1166,10 +1025,7 @@ - For any character, regardless of its rendering mode, that is mapped to a code - or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in - ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a - character is a part. + For any character, regardless of its rendering mode, that is mapped to a code or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a character is a part unicodePUA == false || actualTextPresent == true The character has Unicode value from Private Use Area, and no replacement text present @@ -1181,9 +1037,8 @@ - A PDF/A-2 compliant document 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. - name != ".notdef" + A PDF/A-2 compliant document 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 + name != ".notdef" The document contains a reference to the .notdef glyph @@ -1192,13 +1047,8 @@ - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" Unknown or not permitted Annotation type %1 @@ -1211,8 +1061,8 @@ - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key + Subtype == "Popup" || F != null A dictionary of %1 annotation does not contain F key @@ -1223,29 +1073,25 @@ - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0 F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - Annotation flags are set the annotation to be hidden/invisible or non-printable - (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) F - (F & 4) >> 2 - (F & 2) >> 1 + (F & 4) >> 2 + (F & 2) >> 1 (F & 1) - (F & 32) >> 5 - (F & 256) >> 8 + (F & 32) >> 5 + (F & 256) >> 8 - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. - (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary @@ -1254,9 +1100,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines - as its value shall contain only the N key. - AP == null || AP == "N" + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key + AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -1267,12 +1112,10 @@ - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, the value of the N key shall be an appearance subdictionary. - AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) - An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, but the value of the N key is %1 instead of appearance subdictionary + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary N_type @@ -1281,12 +1124,10 @@ - If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. - AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" - An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the - value of the N key is not an appearance stream + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream Subtype FT @@ -1296,7 +1137,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1308,7 +1149,7 @@ - A Field dictionary shall not contains the A or AA keys. + A Field dictionary shall not contains the A or AA keys containsAA == false A Form field dictionary contains the AA entry @@ -1318,7 +1159,7 @@ - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false The interactive form dictionary contains the NeedAppearances flag with value true @@ -1328,8 +1169,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, - if present, shall not contain the XFA key. + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key containsXFA == false The interactive form dictionary contains the XFA key @@ -1339,7 +1179,7 @@ - A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key NeedsRendering == false A document's Catalog contains NeedsRendering flag set to true @@ -1349,8 +1189,7 @@ - When computing the digest for the file, it shall be computed over the entire file, including the signature - dictionary but excluding the PDF Signature itself. + When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself doesByteRangeCoverEntireDocument == true ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1363,9 +1202,7 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate signingCertificatePresent == true The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1378,13 +1215,10 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature SignerInfoCount == 1 - The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) in the PDF Signature instead of one + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1396,9 +1230,8 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted Action type %1 @@ -1411,8 +1244,8 @@ - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 @@ -1425,7 +1258,7 @@ - The document's Catalog shall not include an AA entry for an additional-actions dictionary. + The document's Catalog shall not include an AA entry for an additional-actions dictionary containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1435,7 +1268,7 @@ - The Page dictionary shall not include an AA entry for an additional-actions dictionary. + The Page dictionary shall not include an AA entry for an additional-actions dictionary containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1445,10 +1278,10 @@ - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key @@ -1457,31 +1290,30 @@ - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, - as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised) isSerializationValid - A metadata stream is serialized incorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed @@ -1492,7 +1324,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8 actualEncoding == "UTF-8" The XMP package uses encoding %1 different from UTF-8 @@ -1506,18 +1338,17 @@ - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - XMP property is either not predefined, or is not defined in any XMP extension schema. + XMP property is either not predefined, or is not defined in any XMP extension schema + - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isValueTypeCorrect == true XMP property does not correspond to type %1 @@ -1529,8 +1360,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each - of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema containsUndefinedFields == false An extension schema object contains field(s) %1 not defined by the specification @@ -1542,12 +1372,10 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". - The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas - isValidBag == true && prefix == "pdfaExtension" + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" - The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix - 'pdfaExtension' (prefix = %2) + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2) isValidBag prefix @@ -1557,12 +1385,10 @@ - Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isSchemaValidText == true && schemaPrefix == "pdfaSchema" + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isSchemaValidText == true && schemaPrefix == "pdfaSchema" - Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) schemaPrefix isSchemaValidText @@ -1572,12 +1398,10 @@ - Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" - Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1587,12 +1411,10 @@ - Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isPrefixValidText == true && prefixPrefix == "pdfaSchema" + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isPrefixValidText == true && prefixPrefix == "pdfaSchema" - Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1602,12 +1424,10 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema' + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq @@ -1617,12 +1437,10 @@ - Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. - isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema' + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") - Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) valueTypePrefix isValueTypeValidSeq @@ -1632,12 +1450,10 @@ - Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. - isNameValidText == true && namePrefix == "pdfaProperty" + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isNameValidText == true && namePrefix == "pdfaProperty" - Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1647,14 +1463,10 @@ - Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" - Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or - value of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1665,14 +1477,10 @@ - Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. - isCategoryValidText == true && (category == "external" || category == "internal") && - categoryPrefix == "pdfaProperty" + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty' + isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty" - Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or - has value different from external or internal (category value = %3) + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3) categoryPrefix isCategoryValidText @@ -1683,12 +1491,10 @@ - Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. - isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" - Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1698,12 +1504,10 @@ - Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. - isTypeValidText == true && typePrefix == "pdfaType" + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isTypeValidText == true && typePrefix == "pdfaType" - Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) typePrefix isTypeValidText @@ -1713,12 +1517,10 @@ - Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" - Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1728,12 +1530,10 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. - isPrefixValidText == true && prefixPrefix == "pdfaType" + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isPrefixValidText == true && prefixPrefix == "pdfaType" - Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1743,12 +1543,10 @@ - Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. - isDescriptionValidText == true && descriptionPrefix == "pdfaType" + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isDescriptionValidText == true && descriptionPrefix == "pdfaType" - Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1758,12 +1556,10 @@ - Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. - isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType' + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") - Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' - (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) fieldPrefix isFieldValidSeq @@ -1773,12 +1569,10 @@ - Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. - isNameValidText == true && namePrefix == "pdfaField" + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isNameValidText == true && namePrefix == "pdfaField" - Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' - (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1788,13 +1582,10 @@ - Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" - Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value - of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1805,12 +1596,10 @@ - Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. - isDescriptionValidText == true && descriptionPrefix == "pdfaField" + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isDescriptionValidText == true && descriptionPrefix == "pdfaField" - Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1820,20 +1609,20 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 2 - The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file part @@ -1842,11 +1631,10 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. - conformance == "A" + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2b conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-2A conforming file conformance @@ -1856,7 +1644,7 @@ Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid - partPrefix == null || partPrefix == "pdfaid" + partPrefix == null || partPrefix == "pdfaid" Property part of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1868,7 +1656,7 @@ Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid - conformancePrefix == null || conformancePrefix == "pdfaid" + conformancePrefix == null || conformancePrefix == "pdfaid" Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1880,7 +1668,7 @@ Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid - amdPrefix == null || amdPrefix == "pdfaid" + amdPrefix == null || amdPrefix == "pdfaid" Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1892,7 +1680,7 @@ Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid - corrPrefix == null || corrPrefix == "pdfaid" + corrPrefix == null || corrPrefix == "pdfaid" Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1903,11 +1691,10 @@ - The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true Marked == true - MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or - is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2) + MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2) MarkInfo Marked @@ -1919,8 +1706,7 @@ - The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry - of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7 StructTreeRoot_size == 1 StructTreeRoot entry is not present in the document catalog @@ -1932,8 +1718,7 @@ - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root circularMappingExist == true Non-standard structure type %1 is not mapped to a standard type @@ -1947,7 +1732,7 @@ - A circular mapping shall not exist. + A circular mapping shall not exist circularMappingExist != true A circular mapping exists for %1 structure type @@ -1961,10 +1746,7 @@ - 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-1:2008, 14.9.2. - A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag - as defined in RFC 3066, Tags for the Identification of Languages. + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) Value %1 of the Lang entry is not Language-Tag @@ -1982,8 +1764,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or UF key - (F = %1, UF = %2) + The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2) F UF @@ -1993,8 +1774,7 @@ - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is - compliant with either ISO 19005-1 or this part of ISO 19005. + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is compliant with either ISO 19005-1 or this part of ISO 19005 isValidPDFA12 == true An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 @@ -2004,8 +1784,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary @@ -2015,8 +1794,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-2 file. + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file hasDuplicateName == false Optional content configuration dictionary has duplicated name %1 @@ -2028,8 +1806,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary @@ -2041,7 +1818,7 @@ - The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary AS == null AS key is present in the optional content configuration dictionary @@ -2083,7 +1860,7 @@ null - S == "GTS_PDFA1" ? colorSpace : gOutputCS + S == "GTS_PDFA1" ? colorSpace : gOutputCS diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index a890c1e8..b95a663c 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -8,12 +8,10 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h) + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, - where 'n' is a single digit number between 0 and 7 + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7 header headerOffset @@ -23,12 +21,10 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not start with 4 bytes with byte values - above 127 (first four bytes = %1, %2, %3, %4) + Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4) headerByte1 headerByte2 @@ -62,7 +58,7 @@ - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5 postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker @@ -108,8 +104,7 @@ - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) @@ -122,8 +117,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker. + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -145,17 +139,8 @@ - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of - LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode - parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be - used. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || - internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || - (internalRepresentation == "Crypt" && decodeParms == "Identity") - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity") Unknown or not permitted Stream filter %1 is used @@ -166,8 +151,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences isValidUtf8 == true The name value %1 does not represent a correct UTF-8 character sequence @@ -181,9 +165,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -193,16 +175,8 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || - internalRepresentation == "AHx" || internalRepresentation == "A85" || - internalRepresentation == "Fl" || internalRepresentation == "RL" || - internalRepresentation == "CCF" || internalRepresentation == "DCT" - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT" Inline image uses not permitted or unknown filter %1 @@ -213,7 +187,7 @@ - No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258) entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -227,12 +201,10 @@ - If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) - shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || - elem == 'DigestMethod' || elem == 'DigestValue').length == 0 + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').toString() @@ -244,7 +216,7 @@ - A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648 (intValue <= 2147483647) && (intValue >= -2147483648) Integer value %1 out of range @@ -268,7 +240,7 @@ - A conforming file shall not contain any string longer than 32767 bytes. + A conforming file shall not contain any string longer than 32767 bytes value.length() < 32768 String length (%1) exceeded 32767 @@ -280,7 +252,7 @@ - A conforming file shall not contain any name longer than 127 bytes. + A conforming file shall not contain any name longer than 127 bytes internalRepresentation.length() <= 127 Name length (%1) exceeded 127 @@ -292,7 +264,7 @@ - A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38) realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) Non-zero real value %1 is too close to 0.0 @@ -328,7 +300,7 @@ - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + A conforming file shall not contain a DeviceN colour space with more than 32 colourants nrComponents <= 32 Number of DeviceN components (%1) exceeded 32 @@ -340,7 +312,7 @@ - A conforming file shall not contain a CID value greater than 65535. + A conforming file shall not contain a CID value greater than 65535 maximalCID <= 65535 Value of a CID (%1) exceeded 65,535 @@ -352,8 +324,7 @@ - The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units - in either direction, nor shall it be greater than 14 400 units in either direction. + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) @@ -366,8 +337,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators. + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators false A content stream contains operator %1 not defined in ISO 32000-1 @@ -379,8 +349,7 @@ - A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3 inheritedResourceNames == '' A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary @@ -394,9 +363,8 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK" + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) @@ -411,10 +379,7 @@ - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) @@ -426,21 +391,20 @@ - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent S != 'GTS_PDFX' || containsDestOutputProfileRef == false The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef - + - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements @@ -455,9 +419,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is - used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting @@ -471,9 +433,8 @@ - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile + gOutputCS != null && gOutputCS == "RGB " DeviceRGB colour space is used without RGB output intent profile @@ -482,9 +443,8 @@ - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - gOutputCS != null && gOutputCS == "CMYK" + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile + gOutputCS != null && gOutputCS == "CMYK" DeviceCMYK colour space is used without CMYK output intent profile @@ -493,8 +453,7 @@ - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present. + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present gOutputCS != null DeviceGray colour space is used without output intent profile @@ -504,7 +463,7 @@ - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present areColorantsPresent == true A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -516,10 +475,7 @@ - All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -540,7 +496,7 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + TR2 == null || TR2 == "Default" An ExtGState dictionary contains the TR2 key with value %1 other than Default @@ -561,7 +517,7 @@ - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type %1 instead of 1 or 5 @@ -573,7 +529,7 @@ - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -583,10 +539,8 @@ - The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || - colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? - TransferFunction == null : TransferFunction != null) + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1 + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -597,9 +551,8 @@ - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value %1 is used @@ -630,8 +583,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false Interpolate == false The value of the Interpolate key in the Image dictionary is true @@ -642,8 +594,7 @@ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 - BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || - BitsPerComponent == 8 || BitsPerComponent == 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16 The value of the BitsPerComponent key in the Image dictionary is %1 @@ -656,7 +607,7 @@ - The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4 nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 @@ -668,11 +619,10 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field) nrColorSpacesWithApproxField @@ -681,8 +631,7 @@ - The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only - that colour space and shall ignore all other colour space specifications. + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 @@ -694,7 +643,7 @@ - JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A @@ -704,11 +653,10 @@ - The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. - bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range - ('bpcc' box present = %1, bit depth = %2) + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2) bpccBoxPresent bitDepth @@ -718,8 +666,8 @@ - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -739,7 +687,7 @@ A conforming file shall not contain any PostScript XObjects - Subtype != "PS" + Subtype != "PS" The document contains a PostScript XObject @@ -748,16 +696,8 @@ - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - internalRepresentation == "Normal" || internalRepresentation == "Compatible" || - internalRepresentation == "Multiply" || internalRepresentation == "Screen" || - internalRepresentation == "Overlay" || internalRepresentation == "Darken" || - internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || - internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || - internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || - internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || - internalRepresentation == "Saturation" || internalRepresentation == "Color" || - internalRepresentation == "Luminosity" + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" The document uses the blend mode %1 not defined in ISO 32000-1:2008 @@ -770,12 +710,10 @@ - If the document does not contain a PDF/A OutputIntent, then all Page objects - that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that - Group key shall include a CS entry whose value shall be used as the default blending colour space. + If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space gOutputCS != null || containsGroupCS == true || containsTransparency == false - The page contains transparent objects with no blending colour space defined. + The page contains transparent objects with no blending colour space defined @@ -784,10 +722,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" A Font dictionary has value %1 of Type entry instead of Font @@ -803,12 +739,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" Invalid Subtype entry in font dictionary with value %1 @@ -826,10 +758,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type @@ -842,9 +772,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null A non-standard simple font dictionary has missing or invalid FirstChar entry @@ -857,9 +785,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -872,9 +798,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) Widths array is missing or has invalid size %1 instead of %2 @@ -890,11 +814,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are - Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. - fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4 + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" Unsupported font file format %1 of the embedded font @@ -909,19 +830,10 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && - CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, - CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) CIDFontOrdering CMapOrdering @@ -935,9 +847,8 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -948,24 +859,8 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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" || - embeddedFile_size == 1 + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 A non-standard CMap %1 is not embedded @@ -978,8 +873,7 @@ - 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. + 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 WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical @@ -992,23 +886,8 @@ - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. - 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" + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" A CMap references another non-standard CMap %1 @@ -1021,8 +900,8 @@ - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -1033,11 +912,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -1049,8 +924,7 @@ - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -1060,8 +934,7 @@ - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset @@ -1071,10 +944,8 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -1086,8 +957,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries @@ -1097,17 +967,10 @@ - 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. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && - (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding containsDifferences @@ -1128,13 +991,10 @@ - The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either - exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains %1 cmap subtables and - does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) nrCmaps @@ -1143,9 +1003,8 @@ - A PDF/A-2 compliant document 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. - name != ".notdef" + A PDF/A-2 compliant document 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 + name != ".notdef" The document contains a reference to the .notdef glyph @@ -1154,13 +1013,8 @@ - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" Unknown or not permitted Annotation type %1 @@ -1173,8 +1027,8 @@ - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key + Subtype == "Popup" || F != null A dictionary of %1 annotation does not contain F key @@ -1185,29 +1039,25 @@ - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0 F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - Annotation flags are set the annotation to be hidden/invisible or non-printable - (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) F - (F & 4) >> 2 - (F & 2) >> 1 + (F & 4) >> 2 + (F & 2) >> 1 (F & 1) - (F & 32) >> 5 - (F & 256) >> 8 + (F & 32) >> 5 + (F & 256) >> 8 - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. - (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary @@ -1216,9 +1066,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines - as its value shall contain only the N key. - AP == null || AP == "N" + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key + AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -1229,12 +1078,10 @@ - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, the value of the N key shall be an appearance subdictionary. - AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) - An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, but the value of the N key is %1 instead of appearance subdictionary + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary N_type @@ -1243,12 +1090,10 @@ - If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. - AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" - An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the - value of the N key is not an appearance stream + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream Subtype FT @@ -1258,7 +1103,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1270,7 +1115,7 @@ - A Field dictionary shall not contains the A or AA keys. + A Field dictionary shall not contains the A or AA keys containsAA == false A Form field dictionary contains the AA entry @@ -1280,7 +1125,7 @@ - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false The interactive form dictionary contains the NeedAppearances flag with value true @@ -1290,8 +1135,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, - if present, shall not contain the XFA key. + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key containsXFA == false The interactive form dictionary contains the XFA key @@ -1301,7 +1145,7 @@ - A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key NeedsRendering == false A document's Catalog contains NeedsRendering flag set to true @@ -1311,8 +1155,7 @@ - When computing the digest for the file, it shall be computed over the entire file, including the signature - dictionary but excluding the PDF Signature itself. + When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself doesByteRangeCoverEntireDocument == true ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1325,9 +1168,7 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate signingCertificatePresent == true The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1340,13 +1181,10 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature SignerInfoCount == 1 - The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) in the PDF Signature instead of one + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1358,9 +1196,8 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted Action type %1 @@ -1373,8 +1210,8 @@ - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 @@ -1387,7 +1224,7 @@ - The document's Catalog shall not include an AA entry for an additional-actions dictionary. + The document's Catalog shall not include an AA entry for an additional-actions dictionary containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1397,7 +1234,7 @@ - The Page dictionary shall not include an AA entry for an additional-actions dictionary. + The Page dictionary shall not include an AA entry for an additional-actions dictionary containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1407,10 +1244,10 @@ - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key @@ -1419,31 +1256,30 @@ - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, - as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised) isSerializationValid - A metadata stream is serialized incorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed @@ -1454,7 +1290,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8 actualEncoding == "UTF-8" The XMP package uses encoding %1 different from UTF-8 @@ -1468,18 +1304,17 @@ - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - XMP property is either not predefined, or is not defined in any XMP extension schema. + XMP property is either not predefined, or is not defined in any XMP extension schema + - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isValueTypeCorrect == true XMP property does not correspond to type %1 @@ -1491,8 +1326,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each - of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema containsUndefinedFields == false An extension schema object contains field(s) %1 not defined by the specification @@ -1504,12 +1338,10 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". - The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas - isValidBag == true && prefix == "pdfaExtension" + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" - The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix - 'pdfaExtension' (prefix = %2) + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2) isValidBag prefix @@ -1519,12 +1351,10 @@ - Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isSchemaValidText == true && schemaPrefix == "pdfaSchema" + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isSchemaValidText == true && schemaPrefix == "pdfaSchema" - Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) schemaPrefix isSchemaValidText @@ -1534,12 +1364,10 @@ - Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" - Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1549,12 +1377,10 @@ - Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isPrefixValidText == true && prefixPrefix == "pdfaSchema" + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isPrefixValidText == true && prefixPrefix == "pdfaSchema" - Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1564,12 +1390,10 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema' + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq @@ -1579,12 +1403,10 @@ - Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. - isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema' + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") - Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) valueTypePrefix isValueTypeValidSeq @@ -1594,12 +1416,10 @@ - Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. - isNameValidText == true && namePrefix == "pdfaProperty" + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isNameValidText == true && namePrefix == "pdfaProperty" - Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1609,14 +1429,10 @@ - Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" - Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or - value of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1627,14 +1443,10 @@ - Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. - isCategoryValidText == true && (category == "external" || category == "internal") && - categoryPrefix == "pdfaProperty" + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty' + isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty" - Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or - has value different from external or internal (category value = %3) + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3) categoryPrefix isCategoryValidText @@ -1645,12 +1457,10 @@ - Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. - isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" - Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1660,12 +1470,10 @@ - Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. - isTypeValidText == true && typePrefix == "pdfaType" + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isTypeValidText == true && typePrefix == "pdfaType" - Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) typePrefix isTypeValidText @@ -1675,12 +1483,10 @@ - Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" - Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1690,12 +1496,10 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. - isPrefixValidText == true && prefixPrefix == "pdfaType" + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isPrefixValidText == true && prefixPrefix == "pdfaType" - Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1705,12 +1509,10 @@ - Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. - isDescriptionValidText == true && descriptionPrefix == "pdfaType" + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isDescriptionValidText == true && descriptionPrefix == "pdfaType" - Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1720,12 +1522,10 @@ - Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. - isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType' + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") - Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' - (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) fieldPrefix isFieldValidSeq @@ -1735,12 +1535,10 @@ - Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. - isNameValidText == true && namePrefix == "pdfaField" + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isNameValidText == true && namePrefix == "pdfaField" - Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' - (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1750,13 +1548,10 @@ - Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" - Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value - of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1767,12 +1562,10 @@ - Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. - isDescriptionValidText == true && descriptionPrefix == "pdfaField" + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isDescriptionValidText == true && descriptionPrefix == "pdfaField" - Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1782,20 +1575,20 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 2 - The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file part @@ -1804,11 +1597,10 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. - conformance == "B" || conformance == "U" || conformance == "A" + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + conformance == "B" || conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file conformance @@ -1818,7 +1610,7 @@ Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid - partPrefix == null || partPrefix == "pdfaid" + partPrefix == null || partPrefix == "pdfaid" Property part of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1830,7 +1622,7 @@ Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid - conformancePrefix == null || conformancePrefix == "pdfaid" + conformancePrefix == null || conformancePrefix == "pdfaid" Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1842,7 +1634,7 @@ Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid - amdPrefix == null || amdPrefix == "pdfaid" + amdPrefix == null || amdPrefix == "pdfaid" Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1854,7 +1646,7 @@ Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid - corrPrefix == null || corrPrefix == "pdfaid" + corrPrefix == null || corrPrefix == "pdfaid" Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1868,8 +1660,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or UF key - (F = %1, UF = %2) + The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2) F UF @@ -1879,8 +1670,7 @@ - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is - compliant with either ISO 19005-1 or this part of ISO 19005. + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is compliant with either ISO 19005-1 or this part of ISO 19005 isValidPDFA12 == true An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 @@ -1890,8 +1680,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary @@ -1901,8 +1690,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-2 file. + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file hasDuplicateName == false Optional content configuration dictionary has duplicated name %1 @@ -1914,8 +1702,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary @@ -1927,7 +1714,7 @@ - The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary AS == null AS key is present in the optional content configuration dictionary @@ -1969,7 +1756,7 @@ null - S == "GTS_PDFA1" ? colorSpace : gOutputCS + S == "GTS_PDFA1" ? colorSpace : gOutputCS diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 11cfbd61..a8e34e41 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -8,12 +8,10 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h) + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, - where 'n' is a single digit number between 0 and 7 + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7 header headerOffset @@ -23,12 +21,10 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not start with 4 bytes with byte values - above 127 (first four bytes = %1, %2, %3, %4) + Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4) headerByte1 headerByte2 @@ -62,7 +58,7 @@ - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5 postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker @@ -108,8 +104,7 @@ - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) @@ -122,8 +117,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker. + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -145,17 +139,8 @@ - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of - LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode - parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be - used. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || - internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || - (internalRepresentation == "Crypt" && decodeParms == "Identity") - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity") Unknown or not permitted Stream filter %1 is used @@ -166,8 +151,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences isValidUtf8 == true The name value %1 does not represent a correct UTF-8 character sequence @@ -181,9 +165,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -193,16 +175,8 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || - internalRepresentation == "AHx" || internalRepresentation == "A85" || - internalRepresentation == "Fl" || internalRepresentation == "RL" || - internalRepresentation == "CCF" || internalRepresentation == "DCT" - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT" Inline image uses not permitted or unknown filter %1 @@ -213,7 +187,7 @@ - No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258) entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -227,12 +201,10 @@ - If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) - shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || - elem == 'DigestMethod' || elem == 'DigestValue').length == 0 + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').toString() @@ -244,7 +216,7 @@ - A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648 (intValue <= 2147483647) && (intValue >= -2147483648) Integer value %1 out of range @@ -268,7 +240,7 @@ - A conforming file shall not contain any string longer than 32767 bytes. + A conforming file shall not contain any string longer than 32767 bytes value.length() < 32768 String length (%1) exceeded 32767 @@ -280,7 +252,7 @@ - A conforming file shall not contain any name longer than 127 bytes. + A conforming file shall not contain any name longer than 127 bytes internalRepresentation.length() <= 127 Name length (%1) exceeded 127 @@ -292,7 +264,7 @@ - A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38) realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) Non-zero real value %1 is too close to 0.0 @@ -328,7 +300,7 @@ - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + A conforming file shall not contain a DeviceN colour space with more than 32 colourants nrComponents <= 32 Number of DeviceN components (%1) exceeded 32 @@ -340,7 +312,7 @@ - A conforming file shall not contain a CID value greater than 65535. + A conforming file shall not contain a CID value greater than 65535 maximalCID <= 65535 Value of a CID (%1) exceeded 65,535 @@ -352,8 +324,7 @@ - The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units - in either direction, nor shall it be greater than 14 400 units in either direction. + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) @@ -366,8 +337,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators. + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators false A content stream contains operator %1 not defined in ISO 32000-1 @@ -379,8 +349,7 @@ - A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3 inheritedResourceNames == '' A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary @@ -394,9 +363,8 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK" + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) @@ -411,10 +379,7 @@ - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) @@ -426,21 +391,20 @@ - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent S != 'GTS_PDFX' || containsDestOutputProfileRef == false The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef - + - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements @@ -455,9 +419,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is - used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting @@ -471,9 +433,8 @@ - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile + gOutputCS != null && gOutputCS == "RGB " DeviceRGB colour space is used without RGB output intent profile @@ -482,9 +443,8 @@ - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - gOutputCS != null && gOutputCS == "CMYK" + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile + gOutputCS != null && gOutputCS == "CMYK" DeviceCMYK colour space is used without CMYK output intent profile @@ -493,8 +453,7 @@ - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present. + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present gOutputCS != null DeviceGray colour space is used without output intent profile @@ -504,7 +463,7 @@ - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present areColorantsPresent == true A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -516,10 +475,7 @@ - All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. + All Separation arrays within a single PDF/A-2 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -540,7 +496,7 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + TR2 == null || TR2 == "Default" An ExtGState dictionary contains the TR2 key with value %1 other than Default @@ -561,7 +517,7 @@ - All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-2 file shall have the value 1 or 5 for the HalftoneType key HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type %1 instead of 1 or 5 @@ -573,7 +529,7 @@ - Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-2 file shall not contain a HalftoneName key HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -583,10 +539,8 @@ - The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || - colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? - TransferFunction == null : TransferFunction != null) + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1 + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -597,9 +551,8 @@ - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value %1 is used @@ -630,8 +583,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false Interpolate == false The value of the Interpolate key in the Image dictionary is true @@ -642,8 +594,7 @@ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 - BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || - BitsPerComponent == 8 || BitsPerComponent == 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16 The value of the BitsPerComponent key in the Image dictionary is %1 @@ -656,7 +607,7 @@ - The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4 nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 @@ -668,11 +619,10 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field) nrColorSpacesWithApproxField @@ -681,8 +631,7 @@ - The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only - that colour space and shall ignore all other colour space specifications. + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 @@ -694,7 +643,7 @@ - JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A @@ -704,11 +653,10 @@ - The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. - bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range - ('bpcc' box present = %1, bit depth = %2) + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2) bpccBoxPresent bitDepth @@ -718,8 +666,8 @@ - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -739,7 +687,7 @@ A conforming file shall not contain any PostScript XObjects - Subtype != "PS" + Subtype != "PS" The document contains a PostScript XObject @@ -748,16 +696,8 @@ - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - internalRepresentation == "Normal" || internalRepresentation == "Compatible" || - internalRepresentation == "Multiply" || internalRepresentation == "Screen" || - internalRepresentation == "Overlay" || internalRepresentation == "Darken" || - internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || - internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || - internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || - internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || - internalRepresentation == "Saturation" || internalRepresentation == "Color" || - internalRepresentation == "Luminosity" + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" The document uses the blend mode %1 not defined in ISO 32000-1:2008 @@ -770,12 +710,10 @@ - If the document does not contain a PDF/A OutputIntent, then all Page objects - that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that - Group key shall include a CS entry whose value shall be used as the default blending colour space. + If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space gOutputCS != null || containsGroupCS == true || containsTransparency == false - The page contains transparent objects with no blending colour space defined. + The page contains transparent objects with no blending colour space defined @@ -784,10 +722,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" A Font dictionary has value %1 of Type entry instead of Font @@ -803,12 +739,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" Invalid Subtype entry in font dictionary with value %1 @@ -826,10 +758,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type @@ -842,9 +772,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null A non-standard simple font dictionary has missing or invalid FirstChar entry @@ -857,9 +785,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -872,9 +798,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) Widths array is missing or has invalid size %1 instead of %2 @@ -890,11 +814,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are - Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. - fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4 + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" Unsupported font file format %1 of the embedded font @@ -909,19 +830,10 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && - CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, - CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) CIDFontOrdering CMapOrdering @@ -935,9 +847,8 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -948,24 +859,8 @@ - All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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" || - embeddedFile_size == 1 + All CMaps used within a PDF/A-2 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 A non-standard CMap %1 is not embedded @@ -978,8 +873,7 @@ - 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. + 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 WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical @@ -992,23 +886,8 @@ - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. - 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" + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" A CMap references another non-standard CMap %1 @@ -1021,8 +900,8 @@ - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -1033,11 +912,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -1049,8 +924,7 @@ - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -1060,8 +934,7 @@ - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset @@ -1071,10 +944,8 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -1086,8 +957,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries @@ -1097,17 +967,10 @@ - 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. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && - (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding containsDifferences @@ -1128,13 +991,10 @@ - The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either - exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains %1 cmap subtables and - does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) nrCmaps @@ -1143,8 +1003,7 @@ - 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 ISO 19005-2, 6.2.11.7.2. + 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 ISO 19005-2, 6.2.11.7.2 toUnicode != null The glyph can not be mapped to Unicode @@ -1156,8 +1015,8 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1166,9 +1025,8 @@ - A PDF/A-2 compliant document 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. - name != ".notdef" + A PDF/A-2 compliant document 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 + name != ".notdef" The document contains a reference to the .notdef glyph @@ -1177,13 +1035,8 @@ - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" Unknown or not permitted Annotation type %1 @@ -1196,8 +1049,8 @@ - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key + Subtype == "Popup" || F != null A dictionary of %1 annotation does not contain F key @@ -1208,29 +1061,25 @@ - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0 F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - Annotation flags are set the annotation to be hidden/invisible or non-printable - (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) F - (F & 4) >> 2 - (F & 2) >> 1 + (F & 4) >> 2 + (F & 2) >> 1 (F & 1) - (F & 32) >> 5 - (F & 256) >> 8 + (F & 32) >> 5 + (F & 256) >> 8 - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. - (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary @@ -1239,9 +1088,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines - as its value shall contain only the N key. - AP == null || AP == "N" + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key + AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -1252,12 +1100,10 @@ - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, the value of the N key shall be an appearance subdictionary. - AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) - An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, but the value of the N key is %1 instead of appearance subdictionary + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary N_type @@ -1266,12 +1112,10 @@ - If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. - AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" - An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the - value of the N key is not an appearance stream + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream Subtype FT @@ -1281,7 +1125,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1293,7 +1137,7 @@ - A Field dictionary shall not contains the A or AA keys. + A Field dictionary shall not contains the A or AA keys containsAA == false A Form field dictionary contains the AA entry @@ -1303,7 +1147,7 @@ - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false The interactive form dictionary contains the NeedAppearances flag with value true @@ -1313,8 +1157,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, - if present, shall not contain the XFA key. + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-2 file, if present, shall not contain the XFA key containsXFA == false The interactive form dictionary contains the XFA key @@ -1324,7 +1167,7 @@ - A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key NeedsRendering == false A document's Catalog contains NeedsRendering flag set to true @@ -1334,8 +1177,7 @@ - When computing the digest for the file, it shall be computed over the entire file, including the signature - dictionary but excluding the PDF Signature itself. + When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself doesByteRangeCoverEntireDocument == true ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1348,9 +1190,7 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate signingCertificatePresent == true The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1363,13 +1203,10 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature SignerInfoCount == 1 - The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) in the PDF Signature instead of one + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1381,9 +1218,8 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted Action type %1 @@ -1396,8 +1232,8 @@ - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 @@ -1410,7 +1246,7 @@ - The document's Catalog shall not include an AA entry for an additional-actions dictionary. + The document's Catalog shall not include an AA entry for an additional-actions dictionary containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1420,7 +1256,7 @@ - The Page dictionary shall not include an AA entry for an additional-actions dictionary. + The Page dictionary shall not include an AA entry for an additional-actions dictionary containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1430,10 +1266,10 @@ - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key @@ -1442,31 +1278,30 @@ - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, - as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised) isSerializationValid - A metadata stream is serialized incorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed @@ -1477,7 +1312,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8 actualEncoding == "UTF-8" The XMP package uses encoding %1 different from UTF-8 @@ -1491,18 +1326,17 @@ - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - XMP property is either not predefined, or is not defined in any XMP extension schema. + XMP property is either not predefined, or is not defined in any XMP extension schema + - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isValueTypeCorrect == true XMP property does not correspond to type %1 @@ -1514,8 +1348,7 @@ - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each - of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema containsUndefinedFields == false An extension schema object contains field(s) %1 not defined by the specification @@ -1527,12 +1360,10 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". - The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas - isValidBag == true && prefix == "pdfaExtension" + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" - The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix - 'pdfaExtension' (prefix = %2) + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2) isValidBag prefix @@ -1542,12 +1373,10 @@ - Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isSchemaValidText == true && schemaPrefix == "pdfaSchema" + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isSchemaValidText == true && schemaPrefix == "pdfaSchema" - Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) schemaPrefix isSchemaValidText @@ -1557,12 +1386,10 @@ - Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" - Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1572,12 +1399,10 @@ - Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isPrefixValidText == true && prefixPrefix == "pdfaSchema" + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isPrefixValidText == true && prefixPrefix == "pdfaSchema" - Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1587,12 +1412,10 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema' + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq @@ -1602,12 +1425,10 @@ - Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. - isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema' + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") - Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) valueTypePrefix isValueTypeValidSeq @@ -1617,12 +1438,10 @@ - Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. - isNameValidText == true && namePrefix == "pdfaProperty" + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isNameValidText == true && namePrefix == "pdfaProperty" - Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1632,14 +1451,10 @@ - Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" - Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or - value of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1650,14 +1465,10 @@ - Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. - isCategoryValidText == true && (category == "external" || category == "internal") && - categoryPrefix == "pdfaProperty" + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty' + isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty" - Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or - has value different from external or internal (category value = %3) + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3) categoryPrefix isCategoryValidText @@ -1668,12 +1479,10 @@ - Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. - isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" - Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1683,12 +1492,10 @@ - Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. - isTypeValidText == true && typePrefix == "pdfaType" + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isTypeValidText == true && typePrefix == "pdfaType" - Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) typePrefix isTypeValidText @@ -1698,12 +1505,10 @@ - Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" - Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1713,12 +1518,10 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. - isPrefixValidText == true && prefixPrefix == "pdfaType" + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isPrefixValidText == true && prefixPrefix == "pdfaType" - Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1728,12 +1531,10 @@ - Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. - isDescriptionValidText == true && descriptionPrefix == "pdfaType" + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isDescriptionValidText == true && descriptionPrefix == "pdfaType" - Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1743,12 +1544,10 @@ - Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. - isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType' + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") - Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' - (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) fieldPrefix isFieldValidSeq @@ -1758,12 +1557,10 @@ - Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. - isNameValidText == true && namePrefix == "pdfaField" + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isNameValidText == true && namePrefix == "pdfaField" - Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' - (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1773,13 +1570,10 @@ - Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" - Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value - of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1790,12 +1584,10 @@ - Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. - isDescriptionValidText == true && descriptionPrefix == "pdfaField" + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isDescriptionValidText == true && descriptionPrefix == "pdfaField" - Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1805,20 +1597,20 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 2 - The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file part @@ -1827,11 +1619,10 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. - conformance == "U" || conformance == "A" + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file conformance @@ -1841,7 +1632,7 @@ Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid - partPrefix == null || partPrefix == "pdfaid" + partPrefix == null || partPrefix == "pdfaid" Property part of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1853,7 +1644,7 @@ Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid - conformancePrefix == null || conformancePrefix == "pdfaid" + conformancePrefix == null || conformancePrefix == "pdfaid" Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1865,7 +1656,7 @@ Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid - amdPrefix == null || amdPrefix == "pdfaid" + amdPrefix == null || amdPrefix == "pdfaid" Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1877,7 +1668,7 @@ Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid - corrPrefix == null || corrPrefix == "pdfaid" + corrPrefix == null || corrPrefix == "pdfaid" Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1891,8 +1682,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or UF key - (F = %1, UF = %2) + The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2) F UF @@ -1902,8 +1692,7 @@ - A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is - compliant with either ISO 19005-1 or this part of ISO 19005. + A file specification dictionary, as defined in ISO 32000-1:2008, 7.11.3, may contain the EF key, provided that the embedded file is compliant with either ISO 19005-1 or this part of ISO 19005 isValidPDFA12 == true An embedded file does not comply to either ISO 19005-1 or ISO 19005-2 @@ -1913,8 +1702,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary @@ -1924,8 +1712,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-2 file. + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-2 file hasDuplicateName == false Optional content configuration dictionary has duplicated name %1 @@ -1937,8 +1724,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary @@ -1950,7 +1736,7 @@ - The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary AS == null AS key is present in the optional content configuration dictionary @@ -1992,7 +1778,7 @@ null - S == "GTS_PDFA1" ? colorSpace : gOutputCS + S == "GTS_PDFA1" ? colorSpace : gOutputCS diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index ac0b8a49..783e5289 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -8,12 +8,10 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h) + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, - where 'n' is a single digit number between 0 and 7 + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7 header headerOffset @@ -23,12 +21,10 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not start with 4 bytes with byte values - above 127 (first four bytes = %1, %2, %3, %4) + Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4) headerByte1 headerByte2 @@ -62,7 +58,7 @@ - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5 postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker @@ -108,8 +104,7 @@ - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) @@ -122,8 +117,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker. + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -145,17 +139,8 @@ - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of - LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode - parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be - used. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || - internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || - (internalRepresentation == "Crypt" && decodeParms == "Identity") - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity") Unknown or not permitted Stream filter %1 is used @@ -166,8 +151,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences isValidUtf8 == true The name value %1 does not represent a correct UTF-8 character sequence @@ -181,9 +165,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -193,16 +175,8 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || - internalRepresentation == "AHx" || internalRepresentation == "A85" || - internalRepresentation == "Fl" || internalRepresentation == "RL" || - internalRepresentation == "CCF" || internalRepresentation == "DCT" - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT" Inline image uses not permitted or unknown filter %1 @@ -213,7 +187,7 @@ - No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258) entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -227,12 +201,10 @@ - If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) - shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || - elem == 'DigestMethod' || elem == 'DigestValue').length == 0 + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').toString() @@ -244,7 +216,7 @@ - A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648 (intValue <= 2147483647) && (intValue >= -2147483648) Integer value %1 out of range @@ -268,7 +240,7 @@ - A conforming file shall not contain any string longer than 32767 bytes. + A conforming file shall not contain any string longer than 32767 bytes value.length() < 32768 String length (%1) exceeded 32767 @@ -280,7 +252,7 @@ - A conforming file shall not contain any name longer than 127 bytes. + A conforming file shall not contain any name longer than 127 bytes internalRepresentation.length() <= 127 Name length (%1) exceeded 127 @@ -292,7 +264,7 @@ - A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38) realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) Non-zero real value %1 is too close to 0.0 @@ -328,7 +300,7 @@ - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + A conforming file shall not contain a DeviceN colour space with more than 32 colourants nrComponents <= 32 Number of DeviceN components (%1) exceeded 32 @@ -340,7 +312,7 @@ - A conforming file shall not contain a CID value greater than 65535. + A conforming file shall not contain a CID value greater than 65535 maximalCID <= 65535 Value of a CID (%1) exceeded 65,535 @@ -352,8 +324,7 @@ - The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units - in either direction, nor shall it be greater than 14 400 units in either direction. + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) @@ -366,8 +337,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators. + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators false A content stream contains operator %1 not defined in ISO 32000-1 @@ -379,8 +349,7 @@ - A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3 inheritedResourceNames == '' A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary @@ -394,9 +363,8 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK" + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) @@ -411,10 +379,7 @@ - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) @@ -426,21 +391,20 @@ - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent S != 'GTS_PDFX' || containsDestOutputProfileRef == false The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef - + - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements @@ -455,9 +419,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is - used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting @@ -471,9 +433,8 @@ - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile + gOutputCS != null && gOutputCS == "RGB " DeviceRGB colour space is used without RGB output intent profile @@ -482,9 +443,8 @@ - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - gOutputCS != null && gOutputCS == "CMYK" + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile + gOutputCS != null && gOutputCS == "CMYK" DeviceCMYK colour space is used without CMYK output intent profile @@ -493,8 +453,7 @@ - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present. + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present gOutputCS != null DeviceGray colour space is used without output intent profile @@ -504,7 +463,7 @@ - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present areColorantsPresent == true A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -516,10 +475,7 @@ - All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. + All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -540,7 +496,7 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + TR2 == null || TR2 == "Default" An ExtGState dictionary contains the TR2 key with value %1 other than Default @@ -561,7 +517,7 @@ - All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type %1 instead of 1 or 5 @@ -573,7 +529,7 @@ - Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -583,10 +539,8 @@ - The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || - colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? - TransferFunction == null : TransferFunction != null) + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1 + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -597,9 +551,8 @@ - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value %1 is used @@ -630,8 +583,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false Interpolate == false The value of the Interpolate key in the Image dictionary is true @@ -642,8 +594,7 @@ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 - BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || - BitsPerComponent == 8 || BitsPerComponent == 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16 The value of the BitsPerComponent key in the Image dictionary is %1 @@ -656,7 +607,7 @@ - The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4 nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 @@ -668,11 +619,10 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field) nrColorSpacesWithApproxField @@ -681,8 +631,7 @@ - The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only - that colour space and shall ignore all other colour space specifications. + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 @@ -694,7 +643,7 @@ - JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A @@ -704,11 +653,10 @@ - The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. - bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range - ('bpcc' box present = %1, bit depth = %2) + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2) bpccBoxPresent bitDepth @@ -718,8 +666,8 @@ - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -739,7 +687,7 @@ A conforming file shall not contain any PostScript XObjects - Subtype != "PS" + Subtype != "PS" The document contains a PostScript XObject @@ -748,16 +696,8 @@ - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - internalRepresentation == "Normal" || internalRepresentation == "Compatible" || - internalRepresentation == "Multiply" || internalRepresentation == "Screen" || - internalRepresentation == "Overlay" || internalRepresentation == "Darken" || - internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || - internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || - internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || - internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || - internalRepresentation == "Saturation" || internalRepresentation == "Color" || - internalRepresentation == "Luminosity" + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" The document uses the blend mode %1 not defined in ISO 32000-1:2008 @@ -770,12 +710,10 @@ - If the document does not contain a PDF/A OutputIntent, then all Page objects - that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that - Group key shall include a CS entry whose value shall be used as the default blending colour space. + If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space gOutputCS != null || containsGroupCS == true || containsTransparency == false - The page contains transparent objects with no blending colour space defined. + The page contains transparent objects with no blending colour space defined @@ -784,10 +722,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" A Font dictionary has value %1 of Type entry instead of Font @@ -803,12 +739,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" Invalid Subtype entry in font dictionary with value %1 @@ -826,10 +758,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type @@ -842,9 +772,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null A non-standard simple font dictionary has missing or invalid FirstChar entry @@ -857,9 +785,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -872,9 +798,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) Widths array is missing or has invalid size %1 instead of %2 @@ -890,11 +814,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are - Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. - fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4 + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" Unsupported font file format %1 of the embedded font @@ -909,19 +830,10 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && - CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, - CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) CIDFontOrdering CMapOrdering @@ -935,9 +847,8 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -948,24 +859,8 @@ - All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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" || - embeddedFile_size == 1 + All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 A non-standard CMap %1 is not embedded @@ -978,8 +873,7 @@ - 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. + 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 WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical @@ -992,23 +886,8 @@ - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. - 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" + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" A CMap references another non-standard CMap %1 @@ -1021,8 +900,8 @@ - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -1033,11 +912,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -1049,8 +924,7 @@ - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -1060,8 +934,7 @@ - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset @@ -1071,10 +944,8 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -1086,8 +957,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries @@ -1097,17 +967,10 @@ - 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic - TrueType fonts shall not 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. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && - (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding containsDifferences @@ -1128,13 +991,10 @@ - The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either - exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains %1 cmap subtables and - does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) nrCmaps @@ -1143,8 +1003,7 @@ - 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 ISO 19005-3, 6.2.11.7.2. + 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 ISO 19005-3, 6.2.11.7.2 toUnicode != null The glyph can not be mapped to Unicode @@ -1156,8 +1015,8 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1166,10 +1025,7 @@ - For any character, regardless of its rendering mode, that is mapped to a code - or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in - ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a - character is a part. + For any character, regardless of its rendering mode, that is mapped to a code or codes in the Unicode Private Use Area (PUA), an ActualText entry as described in ISO 32000-1:2008, 14.9.4 shall be present for this character or a sequence of characters of which such a character is a part unicodePUA == false || actualTextPresent == true The character has Unicode value from Private Use Area, and no replacement text present @@ -1181,9 +1037,8 @@ - A PDF/A-3 compliant document 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. - name != ".notdef" + A PDF/A-3 compliant document 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 + name != ".notdef" The document contains a reference to the .notdef glyph @@ -1192,13 +1047,8 @@ - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" Unknown or not permitted Annotation type %1 @@ -1211,8 +1061,8 @@ - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key + Subtype == "Popup" || F != null A dictionary of %1 annotation does not contain F key @@ -1223,29 +1073,25 @@ - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0 F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - Annotation flags are set the annotation to be hidden/invisible or non-printable - (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) F - (F & 4) >> 2 - (F & 2) >> 1 + (F & 4) >> 2 + (F & 2) >> 1 (F & 1) - (F & 32) >> 5 - (F & 256) >> 8 + (F & 32) >> 5 + (F & 256) >> 8 - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. - (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary @@ -1254,9 +1100,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines - as its value shall contain only the N key. - AP == null || AP == "N" + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key + AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -1267,12 +1112,10 @@ - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, the value of the N key shall be an appearance subdictionary. - AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) - An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, but the value of the N key is %1 instead of appearance subdictionary + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary N_type @@ -1281,12 +1124,10 @@ - If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. - AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" - An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the - value of the N key is not an appearance stream + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream Subtype FT @@ -1296,7 +1137,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1308,7 +1149,7 @@ - A Field dictionary shall not contains the A or AA keys. + A Field dictionary shall not contains the A or AA keys containsAA == false A Form field dictionary contains the AA entry @@ -1318,7 +1159,7 @@ - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false The interactive form dictionary contains the NeedAppearances flag with value true @@ -1328,8 +1169,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, - if present, shall not contain the XFA key. + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, if present, shall not contain the XFA key containsXFA == false The interactive form dictionary contains the XFA key @@ -1339,7 +1179,7 @@ - A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key NeedsRendering == false A document's Catalog contains NeedsRendering flag set to true @@ -1349,8 +1189,7 @@ - When computing the digest for the file, it shall be computed over the entire file, including the signature - dictionary but excluding the PDF Signature itself. + When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself doesByteRangeCoverEntireDocument == true ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1363,9 +1202,7 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate signingCertificatePresent == true The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1378,13 +1215,10 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature SignerInfoCount == 1 - The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) in the PDF Signature instead of one + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1396,9 +1230,8 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted Action type %1 @@ -1411,8 +1244,8 @@ - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 @@ -1425,7 +1258,7 @@ - The document's Catalog shall not include an AA entry for an additional-actions dictionary. + The document's Catalog shall not include an AA entry for an additional-actions dictionary containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1435,7 +1268,7 @@ - The Page dictionary shall not include an AA entry for an additional-actions dictionary. + The Page dictionary shall not include an AA entry for an additional-actions dictionary containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1445,10 +1278,10 @@ - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key @@ -1457,31 +1290,30 @@ - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, - as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised) isSerializationValid - A metadata stream is serialized incorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed @@ -1492,7 +1324,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8 actualEncoding == "UTF-8" The XMP package uses encoding %1 different from UTF-8 @@ -1506,18 +1338,17 @@ - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - XMP property is either not predefined, or is not defined in any XMP extension schema. + XMP property is either not predefined, or is not defined in any XMP extension schema + - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isValueTypeCorrect == true XMP property does not correspond to type %1 @@ -1527,10 +1358,9 @@ - + - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each - of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema containsUndefinedFields == false An extension schema object contains field(s) %1 not defined by the specification @@ -1542,12 +1372,10 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". - The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas - isValidBag == true && prefix == "pdfaExtension" + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" - The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix - 'pdfaExtension' (prefix = %2) + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2) isValidBag prefix @@ -1557,12 +1385,10 @@ - Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isSchemaValidText == true && schemaPrefix == "pdfaSchema" + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isSchemaValidText == true && schemaPrefix == "pdfaSchema" - Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) schemaPrefix isSchemaValidText @@ -1572,12 +1398,10 @@ - Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" - Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1587,12 +1411,10 @@ - Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isPrefixValidText == true && prefixPrefix == "pdfaSchema" + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isPrefixValidText == true && prefixPrefix == "pdfaSchema" - Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1602,12 +1424,10 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema' + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq @@ -1617,12 +1437,10 @@ - Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. - isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema' + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") - Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) valueTypePrefix isValueTypeValidSeq @@ -1632,12 +1450,10 @@ - Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. - isNameValidText == true && namePrefix == "pdfaProperty" + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isNameValidText == true && namePrefix == "pdfaProperty" - Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1647,14 +1463,10 @@ - Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" - Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or - value of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1665,14 +1477,10 @@ - Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. - isCategoryValidText == true && (category == "external" || category == "internal") && - categoryPrefix == "pdfaProperty" + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty' + isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty" - Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or - has value different from external or internal (category value = %3) + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3) categoryPrefix isCategoryValidText @@ -1683,12 +1491,10 @@ - Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. - isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" - Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1698,12 +1504,10 @@ - Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. - isTypeValidText == true && typePrefix == "pdfaType" + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isTypeValidText == true && typePrefix == "pdfaType" - Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) typePrefix isTypeValidText @@ -1713,12 +1517,10 @@ - Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" - Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1728,12 +1530,10 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. - isPrefixValidText == true && prefixPrefix == "pdfaType" + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isPrefixValidText == true && prefixPrefix == "pdfaType" - Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1743,12 +1543,10 @@ - Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. - isDescriptionValidText == true && descriptionPrefix == "pdfaType" + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isDescriptionValidText == true && descriptionPrefix == "pdfaType" - Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1758,12 +1556,10 @@ - Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. - isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType' + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") - Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' - (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) fieldPrefix isFieldValidSeq @@ -1773,12 +1569,10 @@ - Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. - isNameValidText == true && namePrefix == "pdfaField" + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isNameValidText == true && namePrefix == "pdfaField" - Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' - (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1788,13 +1582,10 @@ - Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" - Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value - of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1805,12 +1596,10 @@ - Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. - isDescriptionValidText == true && descriptionPrefix == "pdfaField" + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isDescriptionValidText == true && descriptionPrefix == "pdfaField" - Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1820,20 +1609,20 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 3 - The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file part @@ -1842,11 +1631,10 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. - conformance == "A" + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-3A conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-3A conforming file conformance @@ -1856,7 +1644,7 @@ Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid - partPrefix == null || partPrefix == "pdfaid" + partPrefix == null || partPrefix == "pdfaid" Property part of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1868,7 +1656,7 @@ Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid - conformancePrefix == null || conformancePrefix == "pdfaid" + conformancePrefix == null || conformancePrefix == "pdfaid" Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1880,7 +1668,7 @@ Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid - amdPrefix == null || amdPrefix == "pdfaid" + amdPrefix == null || amdPrefix == "pdfaid" Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1892,7 +1680,7 @@ Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid - corrPrefix == null || corrPrefix == "pdfaid" + corrPrefix == null || corrPrefix == "pdfaid" Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1903,11 +1691,10 @@ - The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true. + The document catalog dictionary shall include a MarkInfo dictionary containing an entry, Marked, whose value shall be true Marked == true - MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or - is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2) + MarkInfo dictionary is not present in the document catalog, or Marked entry is set to false or is not present in the MarkInfo dictionary (MarkInfo = %1, Marked = %2) MarkInfo Marked @@ -1919,8 +1706,7 @@ - The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry - of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7. + The logical structure of the conforming file shall be described by a structure hierarchy rooted in the StructTreeRoot entry of the document's Catalog dictionary, as described in ISO 32000-1:2008, 14.7 StructTreeRoot_size == 1 StructTreeRoot entry is not present in the document catalog @@ -1932,8 +1718,7 @@ - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as - defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root circularMappingExist == true Non-standard structure type %1 is not mapped to a standard type @@ -1947,7 +1732,7 @@ - A circular mapping shall not exist. + A circular mapping shall not exist circularMappingExist != true A circular mapping exists for %1 structure type @@ -1961,10 +1746,7 @@ - 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-1:2008, 14.9.2. - A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag - as defined in RFC 3066, Tags for the Identification of Languages. + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) Value %1 of the Lang entry is not Language-Tag @@ -1979,8 +1761,7 @@ - The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. - If the MIME type is not known, the "application/octet-stream" shall be used. + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) MIME type %1 of an embedded file is missing or invalid @@ -1995,8 +1776,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or UF key - (F = %1, UF = %2) + The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2) F UF @@ -2006,20 +1786,17 @@ - The file specification dictionary shall contain key AFRelationship of type Name identifying the - relationship between the embedded file and the content of the document + The file specification dictionary shall contain key AFRelationship of type Name identifying the relationship between the embedded file and the content of the document AFRelationship != null - The file specification dictionary for an embedded file does not contain the AFRelationship key - or it has invalid value type + The file specification dictionary for an embedded file does not contain the AFRelationship key or it has invalid value type - The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship - between the embedded file and the PDF document or the part of the PDF document with which it is associated. + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated isAssociatedFile == true The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts @@ -2029,8 +1806,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary @@ -2040,8 +1816,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-3 file. + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-3 file hasDuplicateName == false Optional content configuration dictionary has duplicated name %1 @@ -2053,8 +1828,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary @@ -2066,7 +1840,7 @@ - The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary AS == null AS key is present in the optional content configuration dictionary @@ -2108,7 +1882,7 @@ null - S == "GTS_PDFA1" ? colorSpace : gOutputCS + S == "GTS_PDFA1" ? colorSpace : gOutputCS diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index bc615d0c..08914949 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -8,12 +8,10 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h) + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, - where 'n' is a single digit number between 0 and 7 + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7 header headerOffset @@ -23,12 +21,10 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not start with 4 bytes with byte values - above 127 (first four bytes = %1, %2, %3, %4) + Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4) headerByte1 headerByte2 @@ -62,7 +58,7 @@ - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5 postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker @@ -108,8 +104,7 @@ - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) @@ -122,8 +117,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker. + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -145,17 +139,8 @@ - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of - LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode - parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be - used. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || - internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || - (internalRepresentation == "Crypt" && decodeParms == "Identity") - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity") Unknown or not permitted Stream filter %1 is used @@ -166,8 +151,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences isValidUtf8 == true The name value %1 does not represent a correct UTF-8 character sequence @@ -181,9 +165,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -193,16 +175,8 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || - internalRepresentation == "AHx" || internalRepresentation == "A85" || - internalRepresentation == "Fl" || internalRepresentation == "RL" || - internalRepresentation == "CCF" || internalRepresentation == "DCT" - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT" Inline image uses not permitted or unknown filter %1 @@ -213,7 +187,7 @@ - No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258) entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -227,12 +201,10 @@ - If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) - shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || - elem == 'DigestMethod' || elem == 'DigestValue').length == 0 + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').toString() @@ -244,7 +216,7 @@ - A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648 (intValue <= 2147483647) && (intValue >= -2147483648) Integer value %1 out of range @@ -268,7 +240,7 @@ - A conforming file shall not contain any string longer than 32767 bytes. + A conforming file shall not contain any string longer than 32767 bytes value.length() < 32768 String length (%1) exceeded 32767 @@ -280,7 +252,7 @@ - A conforming file shall not contain any name longer than 127 bytes. + A conforming file shall not contain any name longer than 127 bytes internalRepresentation.length() <= 127 Name length (%1) exceeded 127 @@ -292,7 +264,7 @@ - A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38) realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) Non-zero real value %1 is too close to 0.0 @@ -328,7 +300,7 @@ - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + A conforming file shall not contain a DeviceN colour space with more than 32 colourants nrComponents <= 32 Number of DeviceN components (%1) exceeded 32 @@ -340,7 +312,7 @@ - A conforming file shall not contain a CID value greater than 65535. + A conforming file shall not contain a CID value greater than 65535 maximalCID <= 65535 Value of a CID (%1) exceeded 65,535 @@ -352,8 +324,7 @@ - The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units - in either direction, nor shall it be greater than 14 400 units in either direction. + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) @@ -366,8 +337,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators. + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators false A content stream contains operator %1 not defined in ISO 32000-1 @@ -379,8 +349,7 @@ - A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3 inheritedResourceNames == '' A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary @@ -394,9 +363,8 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK" + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) @@ -411,10 +379,7 @@ - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) @@ -426,21 +391,20 @@ - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent S != 'GTS_PDFX' || containsDestOutputProfileRef == false The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef - + - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements @@ -455,9 +419,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is - used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting @@ -471,9 +433,8 @@ - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile + gOutputCS != null && gOutputCS == "RGB " DeviceRGB colour space is used without RGB output intent profile @@ -482,9 +443,8 @@ - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - gOutputCS != null && gOutputCS == "CMYK" + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile + gOutputCS != null && gOutputCS == "CMYK" DeviceCMYK colour space is used without CMYK output intent profile @@ -493,8 +453,7 @@ - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present. + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present gOutputCS != null DeviceGray colour space is used without output intent profile @@ -504,7 +463,7 @@ - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present areColorantsPresent == true A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -516,10 +475,7 @@ - All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. + All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -540,7 +496,7 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + TR2 == null || TR2 == "Default" An ExtGState dictionary contains the TR2 key with value %1 other than Default @@ -561,7 +517,7 @@ - All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type %1 instead of 1 or 5 @@ -573,7 +529,7 @@ - Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -583,10 +539,8 @@ - The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || - colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? - TransferFunction == null : TransferFunction != null) + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1 + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -597,9 +551,8 @@ - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value %1 is used @@ -630,8 +583,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false Interpolate == false The value of the Interpolate key in the Image dictionary is true @@ -642,8 +594,7 @@ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 - BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || - BitsPerComponent == 8 || BitsPerComponent == 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16 The value of the BitsPerComponent key in the Image dictionary is %1 @@ -656,7 +607,7 @@ - The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4 nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 @@ -668,11 +619,10 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field) nrColorSpacesWithApproxField @@ -681,8 +631,7 @@ - The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only - that colour space and shall ignore all other colour space specifications. + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 @@ -694,7 +643,7 @@ - JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A @@ -704,11 +653,10 @@ - The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. - bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range - ('bpcc' box present = %1, bit depth = %2) + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2) bpccBoxPresent bitDepth @@ -718,8 +666,8 @@ - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -739,7 +687,7 @@ A conforming file shall not contain any PostScript XObjects - Subtype != "PS" + Subtype != "PS" The document contains a PostScript XObject @@ -748,16 +696,8 @@ - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - internalRepresentation == "Normal" || internalRepresentation == "Compatible" || - internalRepresentation == "Multiply" || internalRepresentation == "Screen" || - internalRepresentation == "Overlay" || internalRepresentation == "Darken" || - internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || - internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || - internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || - internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || - internalRepresentation == "Saturation" || internalRepresentation == "Color" || - internalRepresentation == "Luminosity" + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" The document uses the blend mode %1 not defined in ISO 32000-1:2008 @@ -770,12 +710,10 @@ - If the document does not contain a PDF/A OutputIntent, then all Page objects - that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that - Group key shall include a CS entry whose value shall be used as the default blending colour space. + If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space gOutputCS != null || containsGroupCS == true || containsTransparency == false - The page contains transparent objects with no blending colour space defined. + The page contains transparent objects with no blending colour space defined @@ -784,10 +722,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" A Font dictionary has value %1 of Type entry instead of Font @@ -803,12 +739,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" Invalid Subtype entry in font dictionary with value %1 @@ -826,10 +758,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type @@ -842,9 +772,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null A non-standard simple font dictionary has missing or invalid FirstChar entry @@ -857,9 +785,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -872,9 +798,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) Widths array is missing or has invalid size %1 instead of %2 @@ -890,11 +814,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are - Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. - fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4 + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" Unsupported font file format %1 of the embedded font @@ -909,19 +830,10 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && - CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, - CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) CIDFontOrdering CMapOrdering @@ -935,9 +847,8 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -948,24 +859,8 @@ - All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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" || - embeddedFile_size == 1 + All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 A non-standard CMap %1 is not embedded @@ -978,8 +873,7 @@ - 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. + 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 WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical @@ -992,23 +886,8 @@ - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. - 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" + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" A CMap references another non-standard CMap %1 @@ -1021,8 +900,8 @@ - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -1033,11 +912,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -1049,8 +924,7 @@ - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -1060,8 +934,7 @@ - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset @@ -1071,10 +944,8 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -1086,8 +957,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries @@ -1097,17 +967,10 @@ - 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic - TrueType fonts shall not 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. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && - (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding containsDifferences @@ -1128,13 +991,10 @@ - The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either - exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains %1 cmap subtables and - does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) nrCmaps @@ -1143,9 +1003,8 @@ - A PDF/A-3 compliant document 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. - name != ".notdef" + A PDF/A-3 compliant document 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 + name != ".notdef" The document contains a reference to the .notdef glyph @@ -1154,13 +1013,8 @@ - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" Unknown or not permitted Annotation type %1 @@ -1173,8 +1027,8 @@ - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key + Subtype == "Popup" || F != null A dictionary of %1 annotation does not contain F key @@ -1185,29 +1039,25 @@ - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0 F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - Annotation flags are set the annotation to be hidden/invisible or non-printable - (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) F - (F & 4) >> 2 - (F & 2) >> 1 + (F & 4) >> 2 + (F & 2) >> 1 (F & 1) - (F & 32) >> 5 - (F & 256) >> 8 + (F & 32) >> 5 + (F & 256) >> 8 - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. - (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary @@ -1216,9 +1066,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines - as its value shall contain only the N key. - AP == null || AP == "N" + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key + AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -1229,12 +1078,10 @@ - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, the value of the N key shall be an appearance subdictionary. - AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) - An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, but the value of the N key is %1 instead of appearance subdictionary + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary N_type @@ -1243,12 +1090,10 @@ - If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. - AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" - An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the - value of the N key is not an appearance stream + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream Subtype FT @@ -1258,7 +1103,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1270,7 +1115,7 @@ - A Field dictionary shall not contains the A or AA keys. + A Field dictionary shall not contains the A or AA keys containsAA == false A Form field dictionary contains the AA entry @@ -1280,7 +1125,7 @@ - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false The interactive form dictionary contains the NeedAppearances flag with value true @@ -1290,8 +1135,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, - if present, shall not contain the XFA key. + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, if present, shall not contain the XFA key containsXFA == false The interactive form dictionary contains the XFA key @@ -1301,7 +1145,7 @@ - A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key NeedsRendering == false A document's Catalog contains NeedsRendering flag set to true @@ -1311,8 +1155,7 @@ - When computing the digest for the file, it shall be computed over the entire file, including the signature - dictionary but excluding the PDF Signature itself. + When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself doesByteRangeCoverEntireDocument == true ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1325,9 +1168,7 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate signingCertificatePresent == true The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1340,13 +1181,10 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature SignerInfoCount == 1 - The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) in the PDF Signature instead of one + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1358,9 +1196,8 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted Action type %1 @@ -1373,8 +1210,8 @@ - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 @@ -1387,7 +1224,7 @@ - The document's Catalog shall not include an AA entry for an additional-actions dictionary. + The document's Catalog shall not include an AA entry for an additional-actions dictionary containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1397,7 +1234,7 @@ - The Page dictionary shall not include an AA entry for an additional-actions dictionary. + The Page dictionary shall not include an AA entry for an additional-actions dictionary containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1407,10 +1244,10 @@ - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key @@ -1419,31 +1256,30 @@ - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, - as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised) isSerializationValid - A metadata stream is serialized incorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed @@ -1454,7 +1290,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8 actualEncoding == "UTF-8" The XMP package uses encoding %1 different from UTF-8 @@ -1468,18 +1304,17 @@ - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - XMP property is either not predefined, or is not defined in any XMP extension schema. + XMP property is either not predefined, or is not defined in any XMP extension schema + - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isValueTypeCorrect == true XMP property does not correspond to type %1 @@ -1489,10 +1324,9 @@ - + - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each - of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema containsUndefinedFields == false An extension schema object contains field(s) %1 not defined by the specification @@ -1504,12 +1338,10 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". - The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas - isValidBag == true && prefix == "pdfaExtension" + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" - The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix - 'pdfaExtension' (prefix = %2) + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2) isValidBag prefix @@ -1519,12 +1351,10 @@ - Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isSchemaValidText == true && schemaPrefix == "pdfaSchema" + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isSchemaValidText == true && schemaPrefix == "pdfaSchema" - Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) schemaPrefix isSchemaValidText @@ -1534,12 +1364,10 @@ - Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" - Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1549,12 +1377,10 @@ - Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isPrefixValidText == true && prefixPrefix == "pdfaSchema" + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isPrefixValidText == true && prefixPrefix == "pdfaSchema" - Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1564,12 +1390,10 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema' + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq @@ -1579,12 +1403,10 @@ - Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. - isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema' + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") - Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) valueTypePrefix isValueTypeValidSeq @@ -1594,12 +1416,10 @@ - Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. - isNameValidText == true && namePrefix == "pdfaProperty" + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isNameValidText == true && namePrefix == "pdfaProperty" - Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1609,14 +1429,10 @@ - Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" - Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or - value of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1627,14 +1443,10 @@ - Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. - isCategoryValidText == true && (category == "external" || category == "internal") && - categoryPrefix == "pdfaProperty" + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty' + isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty" - Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or - has value different from external or internal (category value = %3) + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3) categoryPrefix isCategoryValidText @@ -1645,12 +1457,10 @@ - Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. - isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" - Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1660,12 +1470,10 @@ - Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. - isTypeValidText == true && typePrefix == "pdfaType" + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isTypeValidText == true && typePrefix == "pdfaType" - Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) typePrefix isTypeValidText @@ -1675,12 +1483,10 @@ - Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" - Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1690,12 +1496,10 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. - isPrefixValidText == true && prefixPrefix == "pdfaType" + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isPrefixValidText == true && prefixPrefix == "pdfaType" - Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1705,12 +1509,10 @@ - Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. - isDescriptionValidText == true && descriptionPrefix == "pdfaType" + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isDescriptionValidText == true && descriptionPrefix == "pdfaType" - Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1720,12 +1522,10 @@ - Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. - isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType' + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") - Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' - (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) fieldPrefix isFieldValidSeq @@ -1735,12 +1535,10 @@ - Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. - isNameValidText == true && namePrefix == "pdfaField" + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isNameValidText == true && namePrefix == "pdfaField" - Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' - (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1750,13 +1548,10 @@ - Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" - Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value - of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1767,12 +1562,10 @@ - Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. - isDescriptionValidText == true && descriptionPrefix == "pdfaField" + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isDescriptionValidText == true && descriptionPrefix == "pdfaField" - Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1782,20 +1575,20 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 3 - The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file part @@ -1804,11 +1597,10 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. - conformance == "B" || conformance == "U" || conformance == "A" + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + conformance == "B" || conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-3B conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-3B conforming file conformance @@ -1818,7 +1610,7 @@ Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid - partPrefix == null || partPrefix == "pdfaid" + partPrefix == null || partPrefix == "pdfaid" Property part of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1830,7 +1622,7 @@ Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid - conformancePrefix == null || conformancePrefix == "pdfaid" + conformancePrefix == null || conformancePrefix == "pdfaid" Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1842,7 +1634,7 @@ Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid - amdPrefix == null || amdPrefix == "pdfaid" + amdPrefix == null || amdPrefix == "pdfaid" Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1854,7 +1646,7 @@ Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid - corrPrefix == null || corrPrefix == "pdfaid" + corrPrefix == null || corrPrefix == "pdfaid" Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1865,8 +1657,7 @@ - The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. - If the MIME type is not known, the "application/octet-stream" shall be used. + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) MIME type %1 of an embedded file is missing or invalid @@ -1881,8 +1672,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or UF key - (F = %1, UF = %2) + The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2) F UF @@ -1892,20 +1682,17 @@ - The file specification dictionary shall contain key AFRelationship of type Name identifying the - relationship between the embedded file and the content of the document + The file specification dictionary shall contain key AFRelationship of type Name identifying the relationship between the embedded file and the content of the document AFRelationship != null - The file specification dictionary for an embedded file does not contain the AFRelationship key - or it has invalid value type + The file specification dictionary for an embedded file does not contain the AFRelationship key or it has invalid value type - The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship - between the embedded file and the PDF document or the part of the PDF document with which it is associated. + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated isAssociatedFile == true The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts @@ -1915,8 +1702,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary @@ -1926,8 +1712,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-3 file. + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-3 file hasDuplicateName == false Optional content configuration dictionary has duplicated name %1 @@ -1939,8 +1724,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary @@ -1952,7 +1736,7 @@ - The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary AS == null AS key is present in the optional content configuration dictionary @@ -1994,7 +1778,7 @@ null - S == "GTS_PDFA1" ? colorSpace : gOutputCS + S == "GTS_PDFA1" ? colorSpace : gOutputCS diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 377ea099..fce89bd8 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -8,12 +8,10 @@ - The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 7 (37h) + The file header shall begin at byte zero and shall consist of "%PDF-1.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 7 (37h) headerOffset == 0 && /^%PDF-1\.[0-7]$/.test(header) - File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, - where 'n' is a single digit number between 0 and 7 + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-1.n, where 'n' is a single digit number between 0 and 7 header headerOffset @@ -23,12 +21,10 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not start with 4 bytes with byte values - above 127 (first four bytes = %1, %2, %3, %4) + Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4) headerByte1 headerByte2 @@ -62,7 +58,7 @@ - No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5. + No data can follow the last end-of-file marker except a single optional end-of-line marker as described in ISO 32000-1:2008, 7.5.5 postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker @@ -108,8 +104,7 @@ - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) @@ -122,8 +117,7 @@ - The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) - character. The endstream keyword shall be preceded by an EOL marker. + The stream keyword shall be followed either by a CARRIAGE RETURN (0Dh) and LINE FEED (0Ah) character sequence or by a single LINE FEED (0Ah) character. The endstream keyword shall be preceded by an EOL marker streamKeywordCRLFCompliant == true && endstreamKeywordEOLCompliant == true Extra spacings or missing EOL characters around keywords 'stream' and 'endstream' @@ -145,17 +139,8 @@ - All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of - LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode - parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be - used. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || - internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || - (internalRepresentation == "Crypt" && decodeParms == "Identity") - + All standard stream filters listed in ISO 32000-1:2008, 7.4, Table 6 may be used, with the exception of LZWDecode. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity. Filters that are not listed in ISO 32000-1:2008, 7.4, Table 6 shall not be used + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity") Unknown or not permitted Stream filter %1 is used @@ -166,8 +151,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences isValidUtf8 == true The name value %1 does not represent a correct UTF-8 character sequence @@ -181,9 +165,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -193,16 +175,8 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, - or an array containing any such value. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || - internalRepresentation == "AHx" || internalRepresentation == "A85" || - internalRepresentation == "Fl" || internalRepresentation == "RL" || - internalRepresentation == "CCF" || internalRepresentation == "DCT" - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-1:2008, Table 6, or an array containing any such value + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT" Inline image uses not permitted or unknown filter %1 @@ -213,7 +187,7 @@ - No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-1:2008, 12.8.4, Table 258) entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -227,12 +201,10 @@ - If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) - shall not contain the keys DigestLocation, DigestMethod, and DigestValue. - permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || - elem == 'DigestMethod' || elem == 'DigestValue').length == 0 + If DocMDP is present, then the Signature References dictionary (ISO 32000-1:2008, 12.8.1, Table 253) shall not contain the keys DigestLocation, DigestMethod, and DigestValue + permsContainDocMDP == false || entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').length == 0 - The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary. + The Signature References dictionary contains %1 key(s) in presence of DocMDP entry in the permissions dictionary entries.split('&').filter(elem => elem == 'DigestLocation' || elem == 'DigestMethod' || elem == 'DigestValue').toString() @@ -244,7 +216,7 @@ - A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648. + A conforming file shall not contain any integer greater than 2147483647. A conforming file shall not contain any integer less than -2147483648 (intValue <= 2147483647) && (intValue >= -2147483648) Integer value %1 out of range @@ -268,7 +240,7 @@ - A conforming file shall not contain any string longer than 32767 bytes. + A conforming file shall not contain any string longer than 32767 bytes value.length() < 32768 String length (%1) exceeded 32767 @@ -280,7 +252,7 @@ - A conforming file shall not contain any name longer than 127 bytes. + A conforming file shall not contain any name longer than 127 bytes internalRepresentation.length() <= 127 Name length (%1) exceeded 127 @@ -292,7 +264,7 @@ - A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38). + A conforming file shall not contain any real number closer to zero than +/-1.175 x 10^(-38) realValue == 0.0 || (realValue <= -1.175e-38) || (realValue >= 1.175e-38) Non-zero real value %1 is too close to 0.0 @@ -328,7 +300,7 @@ - A conforming file shall not contain a DeviceN colour space with more than 32 colourants. + A conforming file shall not contain a DeviceN colour space with more than 32 colourants nrComponents <= 32 Number of DeviceN components (%1) exceeded 32 @@ -340,7 +312,7 @@ - A conforming file shall not contain a CID value greater than 65535. + A conforming file shall not contain a CID value greater than 65535 maximalCID <= 65535 Value of a CID (%1) exceeded 65,535 @@ -352,8 +324,7 @@ - The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units - in either direction, nor shall it be greater than 14 400 units in either direction. + The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) @@ -366,8 +337,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed - by the BX/EX compatibility operators. + Content streams shall not contain any operators not defined in ISO 32000-1 even if such operators are bracketed by the BX/EX compatibility operators false A content stream contains operator %1 not defined in ISO 32000-1 @@ -379,8 +349,7 @@ - A content stream that references other objects, such as images and fonts that are necessary to fully render or - process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3. + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-1:2008, 7.8.3 inheritedResourceNames == '' A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary @@ -394,9 +363,8 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK" + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) @@ -411,10 +379,7 @@ - If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. + If a file's OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X-4 or PDF/E-1, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true File's OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) @@ -426,21 +391,20 @@ - In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent. + In addition, the DestOutputProfileRef key, as defined in ISO 15930-7:2010, Annex A, shall not be present in any PDF/X OutputIntent S != 'GTS_PDFX' || containsDestOutputProfileRef == false The PDF/X output intent dictionary contains forbidden entry DestOutputProfileRef - + - The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + The profile that forms the stream of an ICCBased colour space shall conform to ICC.1:1998-09, ICC.1:2001-12, ICC.1:2003-09 or ISO 15076-1 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 1.7 requirements @@ -455,9 +419,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is - used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting @@ -471,9 +433,8 @@ - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, - or if the file has a PDF/A OutputIntent that contains an RGB destination profile. - gOutputCS != null && gOutputCS == "RGB " + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used, or if the file has a PDF/A OutputIntent that contains an RGB destination profile + gOutputCS != null && gOutputCS == "RGB " DeviceRGB colour space is used without RGB output intent profile @@ -482,9 +443,8 @@ - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space - has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile. - gOutputCS != null && gOutputCS == "CMYK" + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set or if a DeviceN-based DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or the file has a PDF/A OutputIntent that contains a CMYK destination profile + gOutputCS != null && gOutputCS == "CMYK" DeviceCMYK colour space is used without CMYK output intent profile @@ -493,8 +453,7 @@ - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, - or if a PDF/A OutputIntent is present. + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is present gOutputCS != null DeviceGray colour space is used without output intent profile @@ -504,7 +463,7 @@ - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present areColorantsPresent == true A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -516,10 +475,7 @@ - All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. + All Separation arrays within a single PDF/A-3 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -540,7 +496,7 @@ An ExtGState dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + TR2 == null || TR2 == "Default" An ExtGState dictionary contains the TR2 key with value %1 other than Default @@ -561,7 +517,7 @@ - All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-3 file shall have the value 1 or 5 for the HalftoneType key HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type %1 instead of 1 or 5 @@ -573,7 +529,7 @@ - Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-3 file shall not contain a HalftoneName key HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -583,10 +539,8 @@ - The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1. - colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || - colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? - TransferFunction == null : TransferFunction != null) + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-1 + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -597,9 +551,8 @@ - Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, - Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation. - internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" + Where a rendering intent is specified, its value shall be one of the four values defined in ISO 32000-1:2008, Table 70: RelativeColorimetric, AbsoluteColorimetric, Perceptual or Saturation + internalRepresentation == "RelativeColorimetric" || internalRepresentation == "AbsoluteColorimetric" || internalRepresentation == "Perceptual" || internalRepresentation == "Saturation" A rendering intent with non-standard value %1 is used @@ -630,8 +583,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. - For an inline image, the I key shall have a value of false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key shall have a value of false Interpolate == false The value of the Interpolate key in the Image dictionary is true @@ -642,8 +594,7 @@ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 - BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || - BitsPerComponent == 8 || BitsPerComponent == 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16 The value of the BitsPerComponent key in the Image dictionary is %1 @@ -656,7 +607,7 @@ - The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4 nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 @@ -668,11 +619,10 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field) nrColorSpacesWithApproxField @@ -681,8 +631,7 @@ - The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only - that colour space and shall ignore all other colour space specifications. + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming reader shall use only that colour space and shall ignore all other colour space specifications hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 @@ -694,7 +643,7 @@ - JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A @@ -704,11 +653,10 @@ - The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. - bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range - ('bpcc' box present = %1, bit depth = %2) + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2) bpccBoxPresent bitDepth @@ -718,8 +666,8 @@ - A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key. - (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false + A form XObject dictionary shall not contain any of the following: - the OPI key; - the Subtype2 key with a value of PS; - the PS key + (Subtype2 == null || Subtype2 != "PS") && containsPS == false && containsOPI == false The form XObject dictionary contains a PS key, or a Subtype2 key with value PS, or an OPI key @@ -739,7 +687,7 @@ A conforming file shall not contain any PostScript XObjects - Subtype != "PS" + Subtype != "PS" The document contains a PostScript XObject @@ -748,16 +696,8 @@ - Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary. - internalRepresentation == "Normal" || internalRepresentation == "Compatible" || - internalRepresentation == "Multiply" || internalRepresentation == "Screen" || - internalRepresentation == "Overlay" || internalRepresentation == "Darken" || - internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || - internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || - internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || - internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || - internalRepresentation == "Saturation" || internalRepresentation == "Color" || - internalRepresentation == "Luminosity" + Only blend modes that are specified in ISO 32000-1:2008 shall be used for the value of the BM key in an extended graphic state dictionary + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" The document uses the blend mode %1 not defined in ISO 32000-1:2008 @@ -770,12 +710,10 @@ - If the document does not contain a PDF/A OutputIntent, then all Page objects - that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that - Group key shall include a CS entry whose value shall be used as the default blending colour space. + If the document does not contain a PDF/A OutputIntent, then all Page objects that contain transparency shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space gOutputCS != null || containsGroupCS == true || containsTransparency == false - The page contains transparent objects with no blending colour space defined. + The page contains transparent objects with no blending colour space defined @@ -784,10 +722,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" A Font dictionary has value %1 of Type entry instead of Font @@ -803,12 +739,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" Invalid Subtype entry in font dictionary with value %1 @@ -826,10 +758,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type @@ -842,9 +772,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null A non-standard simple font dictionary has missing or invalid FirstChar entry @@ -857,9 +785,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -872,9 +798,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-1:2008, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) Widths array is missing or has invalid size %1 instead of %2 @@ -890,11 +814,8 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are - Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4. - fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 1.7 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the OpenType Specification v.1.4 + fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" Unsupported font file format %1 of the embedded font @@ -909,19 +830,10 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && - CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, - CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) CIDFontOrdering CMapOrdering @@ -935,9 +847,8 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -948,24 +859,8 @@ - All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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" || - embeddedFile_size == 1 + All CMaps used within a PDF/A-3 file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 A non-standard CMap %1 is not embedded @@ -978,8 +873,7 @@ - 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. + 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 WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical @@ -992,23 +886,8 @@ - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. - 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" + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" A CMap references another non-standard CMap %1 @@ -1021,8 +900,8 @@ - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -1033,11 +912,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of - a non-standard mapping chosen by the conforming processor. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -1049,8 +924,7 @@ - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -1060,8 +934,7 @@ - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset @@ -1071,10 +944,8 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -1086,8 +957,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries @@ -1097,17 +967,10 @@ - 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic - TrueType fonts shall not 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. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && - (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + 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 that is the value of the Encoding key in the Font dictionary. In addition, all non-symbolic TrueType fonts shall not 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding containsDifferences @@ -1128,13 +991,10 @@ - The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either - exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains %1 cmap subtables and - does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) nrCmaps @@ -1143,8 +1003,7 @@ - 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 ISO 19005-3, 6.2.11.7.2. + 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 ISO 19005-3, 6.2.11.7.2 toUnicode != null The glyph can not be mapped to Unicode @@ -1156,8 +1015,8 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1166,9 +1025,8 @@ - A PDF/A-3 compliant document 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. - name != ".notdef" + A PDF/A-3 compliant document 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 + name != ".notdef" The document contains a reference to the .notdef glyph @@ -1177,13 +1035,8 @@ - Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" + Annotation types not defined in ISO 32000-1 shall not be permitted. Additionally, the 3D, Sound, Screen and Movie types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" Unknown or not permitted Annotation type %1 @@ -1196,8 +1049,8 @@ - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key + Subtype == "Popup" || F != null A dictionary of %1 annotation does not contain F key @@ -1208,29 +1061,25 @@ - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0 F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - Annotation flags are set the annotation to be hidden/invisible or non-printable - (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) F - (F & 4) >> 2 - (F & 2) >> 1 + (F & 4) >> 2 + (F & 2) >> 1 (F & 1) - (F & 32) >> 5 - (F & 256) >> 8 + (F & 32) >> 5 + (F & 256) >> 8 - Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, - shall have at least one appearance dictionary: - - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - - annotations whose Subtype value is Popup or Link. - (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: - annotations where the value of the Rect key consists of an array where value 1 is equal to value 3 and value 2 is equal to value 4; - annotations whose Subtype value is Popup or Link + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || AP != null An annotation does not contain an appearance dictionary @@ -1239,9 +1088,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines - as its value shall contain only the N key. - AP == null || AP == "N" + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key + AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -1252,12 +1100,10 @@ - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, the value of the N key shall be an appearance subdictionary. - AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) - An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, but the value of the N key is %1 instead of appearance subdictionary + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary N_type @@ -1266,12 +1112,10 @@ - If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. - AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" - An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the - value of the N key is not an appearance stream + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream Subtype FT @@ -1281,7 +1125,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys. + A Widget annotation dictionary shall not contains the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1293,7 +1137,7 @@ - A Field dictionary shall not contains the A or AA keys. + A Field dictionary shall not contains the A or AA keys containsAA == false A Form field dictionary contains the AA entry @@ -1303,7 +1147,7 @@ - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false The interactive form dictionary contains the NeedAppearances flag with value true @@ -1313,8 +1157,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, - if present, shall not contain the XFA key. + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-3 file, if present, shall not contain the XFA key containsXFA == false The interactive form dictionary contains the XFA key @@ -1324,7 +1167,7 @@ - A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key NeedsRendering == false A document's Catalog contains NeedsRendering flag set to true @@ -1334,8 +1177,7 @@ - When computing the digest for the file, it shall be computed over the entire file, including the signature - dictionary but excluding the PDF Signature itself. + When computing the digest for the file, it shall be computed over the entire file, including the signature dictionary but excluding the PDF Signature itself doesByteRangeCoverEntireDocument == true ByteRange array of the digital signature does not cover the entire file (excluding the PDF Signature itself) @@ -1348,9 +1190,7 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, it shall include the signer's X.509 signing certificate. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, it shall include the signer's X.509 signing certificate signingCertificatePresent == true The DER-encoded PKCS#7 binary data object representing a PDF Signature does not include the signer's X.509 signing certificate @@ -1363,13 +1203,10 @@ - The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of - the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At - minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature. + The PDF Signature (a DER-encoded PKCS#7 binary data object) shall be placed into the Contents entry of the signature dictionary. The PKCS#7 object shall conform to the PKCS#7 specification in RFC 2315. At minimum, there shall only be a single signer (e.g. a single "SignerInfo" structure) in the PDF Signature SignerInfoCount == 1 - The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 - signer(s) in the PDF Signature instead of one + The DER-encoded PKCS#7 binary data object representing a PDF Signature has %1 signer(s) in the PDF Signature instead of one SignerInfoCount @@ -1381,9 +1218,8 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. - Additionally, the deprecated set-state and no-op actions shall not be permitted. - S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" + The Launch, Sound, Movie, ResetForm, ImportData, Hide, SetOCGState, Rendition, Trans, GoTo3DView and JavaScript actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" Unknown or not permitted Action type %1 @@ -1396,8 +1232,8 @@ - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 @@ -1410,7 +1246,7 @@ - The document's Catalog shall not include an AA entry for an additional-actions dictionary. + The document's Catalog shall not include an AA entry for an additional-actions dictionary containsAA == false The document catalog dictionary contains an additional-actions dictionary (AA entry) @@ -1420,7 +1256,7 @@ - The Page dictionary shall not include an AA entry for an additional-actions dictionary. + The Page dictionary shall not include an AA entry for an additional-actions dictionary containsAA == false The Page dictionary contains an additional-actions dictionary (AA entry) @@ -1430,10 +1266,10 @@ - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key @@ -1442,31 +1278,30 @@ - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute - All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, - as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised). + All metadata streams present in the PDF shall conform to the XMP Specification. All content of all XMP packets shall be well-formed, as defined by Extensible Markup Language (XML) 1.0 (Third Edition), 2.1, and the RDF/XML Syntax Specification (Revised) isSerializationValid - A metadata stream is serialized incorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed @@ -1477,7 +1312,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8 actualEncoding == "UTF-8" The XMP package uses encoding %1 different from UTF-8 @@ -1491,18 +1326,17 @@ - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isPredefinedInXMP2005 == true || isDefinedInMainPackage == true || isDefinedInCurrentPackage == true - XMP property is either not predefined, or is not defined in any XMP extension schema. + XMP property is either not predefined, or is not defined in any XMP extension schema + - All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, - ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2. + All properties specified in XMP form shall use either the predefined schemas defined in the XMP Specification, ISO 19005-1 or this part of ISO 19005, or any extension schemas that comply with 6.6.2.3.2 isValueTypeCorrect == true XMP property does not correspond to type %1 @@ -1512,10 +1346,9 @@ - + - Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each - of the tables in 6.6.2.3.3 shall be present in any extension schema container schema. + Extension schemas shall be specified using the PDF/A extension schema container schema defined in 6.6.2.3.3. All fields described in each of the tables in 6.6.2.3.3 shall be present in any extension schema container schema containsUndefinedFields == false An extension schema object contains field(s) %1 not defined by the specification @@ -1527,12 +1360,10 @@ - The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". - The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas - isValidBag == true && prefix == "pdfaExtension" + The extension schema container schema uses the namespace URI "http://www.aiim.org/pdfa/ns/extension/". The required schema namespace prefix is pdfaExtension. pdfaExtension:schemas - Bag Schema - Description of extension schemas + isValidBag == true && prefix == "pdfaExtension" - The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix - 'pdfaExtension' (prefix = %2) + The extension schema container has invalid type (isValidBag = %1) or doesn't have prefix 'pdfaExtension' (prefix = %2) isValidBag prefix @@ -1542,12 +1373,10 @@ - Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isSchemaValidText == true && schemaPrefix == "pdfaSchema" + Field 'schema' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isSchemaValidText == true && schemaPrefix == "pdfaSchema" - Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) + Field 'schema' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (schema prefix = %1) or doesn't have type Text (isSchemaValidText = %2) schemaPrefix isSchemaValidText @@ -1557,12 +1386,10 @@ - Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaSchema'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" + Field 'namespaceURI' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaSchema' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema" - Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1572,12 +1399,10 @@ - Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaSchema'. - isPrefixValidText == true && prefixPrefix == "pdfaSchema" + Field 'prefix' of the PDF/A Schema value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaSchema' + isPrefixValidText == true && prefixPrefix == "pdfaSchema" - Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix - 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A Schema value type is not present, or doesn't have prefix 'pdfaSchema' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1587,12 +1412,10 @@ - Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq Property and namespace prefix 'pdfaSchema'. - isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") + Field 'property' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq Property and namespace prefix 'pdfaSchema' + isPropertyValidSeq == true && (propertyPrefix == null || propertyPrefix == "pdfaSchema") - Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) + Field 'property' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (property prefix = %1) or doesn't have type Seq Property (isPropertyValidSeq = %2) propertyPrefix isPropertyValidSeq @@ -1602,12 +1425,10 @@ - Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type - Seq ValueType and namespace prefix 'pdfaSchema'. - isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") + Field 'valueType' of the PDF/A Schema value type in the PDF/A extension schema shall have type Seq ValueType and namespace prefix 'pdfaSchema' + isValueTypeValidSeq == true && (valueTypePrefix == null || valueTypePrefix == "pdfaSchema") - Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' - (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) + Field 'valueType' of the PDF/A Schema value type doesn't have prefix 'pdfaSchema' (valueType prefix = %1) or doesn't have type Seq ValueType (isValueTypeValidSeq = %2) valueTypePrefix isValueTypeValidSeq @@ -1617,12 +1438,10 @@ - Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaProperty'. - isNameValidText == true && namePrefix == "pdfaProperty" + Field 'name' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isNameValidText == true && namePrefix == "pdfaProperty" - Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1632,14 +1451,10 @@ - Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall - be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" + Field 'valueType' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaProperty" - Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or - value of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1650,14 +1465,10 @@ - Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty'. - isCategoryValidText == true && (category == "external" || category == "internal") && - categoryPrefix == "pdfaProperty" + Field 'category' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text, value external or internal and namespace prefix 'pdfaProperty' + isCategoryValidText == true && (category == "external" || category == "internal") && categoryPrefix == "pdfaProperty" - Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or - has value different from external or internal (category value = %3) + Field 'category' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (category prefix = %1) or doesn't have type Text (isCategoryValidText = %2) or has value different from external or internal (category value = %3) categoryPrefix isCategoryValidText @@ -1668,12 +1479,10 @@ - Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaProperty'. - isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" + Field 'description' of the PDF/A Property value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaProperty' + isDescriptionValidText == true && descriptionPrefix == "pdfaProperty" - Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix - 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Property value type is not present, or doesn't have prefix 'pdfaProperty' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1683,12 +1492,10 @@ - Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present - and shall have type Text and namespace prefix 'pdfaType'. - isTypeValidText == true && typePrefix == "pdfaType" + Field 'type' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isTypeValidText == true && typePrefix == "pdfaType" - Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) + Field 'type' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (type prefix = %1) or doesn't have type Text (isTypeValidText = %2) typePrefix isTypeValidText @@ -1698,12 +1505,10 @@ - Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type URI and namespace prefix 'pdfaType'. - isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" + Field 'namespaceURI' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type URI and namespace prefix 'pdfaType' + isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaType" - Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) + Field 'namespaceURI' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (namespaceURI prefix = %1) or doesn't have type URI (isNamespaceURIValidURI = %2) namespaceURIPrefix isNamespaceURIValidURI @@ -1713,12 +1518,10 @@ - Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and - shall have type Text and namespace prefix 'pdfaType'. - isPrefixValidText == true && prefixPrefix == "pdfaType" + Field 'prefix' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isPrefixValidText == true && prefixPrefix == "pdfaType" - Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) + Field 'prefix' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (prefix prefix = %1) or doesn't have type Text (isPrefixValidText = %2) prefixPrefix isPrefixValidText @@ -1728,12 +1531,10 @@ - Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be - present and shall have type Text and namespace prefix 'pdfaType'. - isDescriptionValidText == true && descriptionPrefix == "pdfaType" + Field 'description' of the PDF/A ValueType value type in the PDF/A extension schema shall be present and shall have type Text and namespace prefix 'pdfaType' + isDescriptionValidText == true && descriptionPrefix == "pdfaType" - Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix - 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A ValueType value type is not present, or doesn't have prefix 'pdfaType' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1743,12 +1544,10 @@ - Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type - Seq Field and namespace prefix 'pdfaType'. - isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") + Field 'field' of the PDF/A ValueType value type in the PDF/A extension schema shall have type Seq Field and namespace prefix 'pdfaType' + isFieldValidSeq == true && (fieldPrefix == null || fieldPrefix == "pdfaType") - Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' - (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) + Field 'field' of the PDF/A ValueType value type doesn't have prefix 'pdfaType' (field prefix = %1) or doesn't have type Seq Field (isFieldValidSeq = %2) fieldPrefix isFieldValidSeq @@ -1758,12 +1557,10 @@ - Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text - and namespace prefix 'pdfaField'. - isNameValidText == true && namePrefix == "pdfaField" + Field 'name' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isNameValidText == true && namePrefix == "pdfaField" - Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' - (name prefix = %1) or doesn't have type Text (isNameValidText = %2) + Field 'name' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (name prefix = %1) or doesn't have type Text (isNameValidText = %2) namePrefix isNameValidText @@ -1773,13 +1570,10 @@ - Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined. - isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" + Field 'valueType' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField'. Value of valueType property shall be defined + isValueTypeValidText == true && isValueTypeDefined == true && valueTypePrefix == "pdfaField" - Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value - of valueType doesn't defined (isValueTypeDefined = %3) + Field 'valueType' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (valueType prefix = %1) or doesn't have type Text (isValueTypeValidText = %2) or value of valueType doesn't defined (isValueTypeDefined = %3) valueTypePrefix isValueTypeValidText @@ -1790,12 +1584,10 @@ - Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type - Text and namespace prefix 'pdfaField'. - isDescriptionValidText == true && descriptionPrefix == "pdfaField" + Field 'description' of the PDF/A Field value type in the PDF/A extension schema shall have type Text and namespace prefix 'pdfaField' + isDescriptionValidText == true && descriptionPrefix == "pdfaField" - Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix - 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) + Field 'description' of the PDF/A Field value type is not present, or doesn't have prefix 'pdfaField' (description prefix = %1) or doesn't have type Text (isDescriptionValidText = %2) descriptionPrefix isDescriptionValidText @@ -1805,20 +1597,20 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 3 - The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file part @@ -1827,11 +1619,10 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U. - conformance == "U" || conformance == "A" + A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + conformance == "U" || conformance == "A" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-3U conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-3U conforming file conformance @@ -1841,7 +1632,7 @@ Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid - partPrefix == null || partPrefix == "pdfaid" + partPrefix == null || partPrefix == "pdfaid" Property part of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1853,7 +1644,7 @@ Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid - conformancePrefix == null || conformancePrefix == "pdfaid" + conformancePrefix == null || conformancePrefix == "pdfaid" Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1865,7 +1656,7 @@ Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid - amdPrefix == null || amdPrefix == "pdfaid" + amdPrefix == null || amdPrefix == "pdfaid" Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1877,7 +1668,7 @@ Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid - corrPrefix == null || corrPrefix == "pdfaid" + corrPrefix == null || corrPrefix == "pdfaid" Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1888,8 +1679,7 @@ - The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. - If the MIME type is not known, the "application/octet-stream" shall be used. + The MIME type of an embedded file, or a subset of a file, shall be specified using the Subtype key of the file specification dictionary. If the MIME type is not known, the "application/octet-stream" shall be used Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) MIME type %1 of an embedded file is missing or invalid @@ -1904,8 +1694,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or UF key - (F = %1, UF = %2) + The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2) F UF @@ -1915,20 +1704,17 @@ - The file specification dictionary shall contain key AFRelationship of type Name identifying the - relationship between the embedded file and the content of the document + The file specification dictionary shall contain key AFRelationship of type Name identifying the relationship between the embedded file and the content of the document AFRelationship != null - The file specification dictionary for an embedded file does not contain the AFRelationship key - or it has invalid value type + The file specification dictionary for an embedded file does not contain the AFRelationship key or it has invalid value type - The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship - between the embedded file and the PDF document or the part of the PDF document with which it is associated. + The additional information provided for associated files as well as the usage requirements for associated files indicate the relationship between the embedded file and the PDF document or the part of the PDF document with which it is associated isAssociatedFile == true The file specification dictionary for an embedded file is not associated with the PDF document or any of its parts @@ -1938,8 +1724,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary @@ -1949,8 +1734,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-3 file. + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-3 file hasDuplicateName == false Optional content configuration dictionary has duplicated name %1 @@ -1962,8 +1746,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary @@ -1975,7 +1758,7 @@ - The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary AS == null AS key is present in the optional content configuration dictionary @@ -2017,7 +1800,7 @@ null - S == "GTS_PDFA1" ? colorSpace : gOutputCS + S == "GTS_PDFA1" ? colorSpace : gOutputCS diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index f1f5e84c..ada18960 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -8,12 +8,10 @@ - The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 9 (39h) + The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 9 (39h) headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) - File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, - where 'n' is a single digit number between 0 and 9 + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, where 'n' is a single digit number between 0 and 9 header headerOffset @@ -23,12 +21,10 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not start with 4 bytes with byte values - above 127 (first four bytes = %1, %2, %3, %4) + Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4) headerByte1 headerByte2 @@ -52,7 +48,7 @@ - The Encrypt key shall not be present in the trailer dictionary. + The Encrypt key shall not be present in the trailer dictionary isEncrypted != true The Encrypt key is present in the trailer dictionary @@ -62,7 +58,7 @@ - No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. + No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5 postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker @@ -76,7 +72,7 @@ - The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary. + The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary containsPieceInfo == true || containsInfo == false The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary @@ -86,7 +82,7 @@ - If a document information dictionary is present, it shall only contain a ModDate entry. + If a document information dictionary is present, it shall only contain a ModDate entry size == 1 && ModDate != null Document information dictionary is present and contains %1 key(s), but allowed only ModDate @@ -130,8 +126,7 @@ - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) @@ -156,17 +151,8 @@ - All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the - exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. - In addition, the Crypt filter shall not be used unless the value of the Name key in the decode - parameters dictionary is Identity. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || - internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || - (internalRepresentation == "Crypt" && decodeParms == "Identity") - + All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity") Unknown or not permitted Stream filter %1 is used @@ -179,8 +165,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences isValidUtf8 == true The name value %1 does not represent a correct UTF-8 character sequence @@ -194,9 +179,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -206,16 +189,8 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, - or an array containing any such value. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || - internalRepresentation == "AHx" || internalRepresentation == "A85" || - internalRepresentation == "Fl" || internalRepresentation == "RL" || - internalRepresentation == "CCF" || internalRepresentation == "DCT" - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, or an array containing any such value + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT" Inline image uses not permitted or unknown filter %1 @@ -228,7 +203,7 @@ - No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263) entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -242,13 +217,10 @@ - If the Version key is present in the document catalog dictionary, the first character in its value - shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third - character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. + If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3 Version == null || /^2\.[0-9]$/.test(Version) - The Version key with value %1 does not match the pattern 2.n, - where 'n' is a single digit number between 0 and 9. + The Version key with value %1 does not match the pattern 2.n, where 'n' is a single digit number between 0 and 9 Version @@ -257,8 +229,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed - by the BX/EX compatibility operators. + Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed by the BX/EX compatibility operators false A content stream contains operator %1 not defined in ISO 32000-2:2020 @@ -270,10 +241,7 @@ - A content stream that references other objects, such as images and fonts that are necessary to - fully render or process the stream, shall have an explicitly associated Resources dictionary as - described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources - referenced by this content stream. + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this content stream inheritedResourceNames == '' A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary @@ -287,12 +255,10 @@ - A content stream's named resources shall be defined by a resource dictionary, which shall - enumerate the named resources needed by the operators in the content stream and the names by which - they can be referred to. + A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which they can be referred to undefinedResourceNames == '' - A content stream references named resource(s) %1 not defined by a resource dictionary. + A content stream references named resource(s) %1 not defined by a resource dictionary undefinedResourceNames @@ -303,9 +269,8 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK" + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) @@ -320,10 +285,7 @@ - If any OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. + If any OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) @@ -335,7 +297,7 @@ - The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -347,9 +309,8 @@ - The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 2.0 requirements @@ -364,9 +325,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is - used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting @@ -380,51 +339,37 @@ - An ICCBased colour space shall not be used where the profile is a CMYK destination profile and - is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. - (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && - ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || - (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) - - An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or - the current transparency blending color space + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace + (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) + + An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or the current transparency blending color space - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when - the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB - colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, - when the DeviceRGB colour space is used, contains an 'RGB ' destination profile. - (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || - gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' - - DeviceRGB colour space is used without RGB output intent profile and without current - transparency blending space being Device-independent RGB + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, when the DeviceRGB colour space is used, contains an 'RGB ' destination profile + (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' + + DeviceRGB colour space is used without RGB output intent profile and without current transparency blending space being Device-independent RGB - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set - when the DeviceCMYK colour space is used or if the current transparency blending space, when the - DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A - OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or if the current transparency blending space, when the DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' - DeviceCMYK colour space is used without CMYK output intent profile and without current - transparency blending space being Device-independent CMYK + DeviceCMYK colour space is used without CMYK output intent profile and without current transparency blending space being Device-independent CMYK - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when - the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect. + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect gPageOutputCS != null || gDocumentOutputCS != null DeviceGray colour space is used without output intent profile @@ -434,7 +379,7 @@ - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present areColorantsPresent == true A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -446,10 +391,7 @@ - All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. + All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -472,7 +414,7 @@ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + TR2 == null || TR2 == "Default" A graphics state parameter dictionary contains the TR2 key with value %1 other than Default @@ -493,7 +435,7 @@ - All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type %1 instead of 1 or 5 @@ -505,7 +447,7 @@ - Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -515,10 +457,8 @@ - The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. - colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || - colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? - TransferFunction == null : TransferFunction != null) + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020 + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -549,8 +489,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. For an inline - image, the I key, if present, shall have a value of false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key, if present, shall have a value of false Interpolate == false The value of the Interpolate key in the Image dictionary is true @@ -561,8 +500,7 @@ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 - BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || - BitsPerComponent == 8 || BitsPerComponent == 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16 The value of the BitsPerComponent key in the Image dictionary is %1 @@ -575,7 +513,7 @@ - The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4 nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 @@ -587,11 +525,10 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field) nrColorSpacesWithApproxField @@ -600,8 +537,7 @@ - The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only - that colour space and shall ignore all other colour space specifications. + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only that colour space and shall ignore all other colour space specifications hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 @@ -613,7 +549,7 @@ - JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A @@ -623,11 +559,10 @@ - The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. - bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range - ('bpcc' box present = %1, bit depth = %2) + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2) bpccBoxPresent bitDepth @@ -637,7 +572,7 @@ - A form XObject dictionary shall not contain an OPI key. + A form XObject dictionary shall not contain an OPI key containsOPI == false The form XObject dictionary contains an OPI key @@ -657,17 +592,8 @@ - Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM - key in a graphic state dictionary or an annotation dictionary. - internalRepresentation == "Normal" || internalRepresentation == "Compatible" || - internalRepresentation == "Multiply" || internalRepresentation == "Screen" || - internalRepresentation == "Overlay" || internalRepresentation == "Darken" || - internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || - internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || - internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || - internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || - internalRepresentation == "Saturation" || internalRepresentation == "Color" || - internalRepresentation == "Luminosity" + Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM key in a graphic state dictionary or an annotation dictionary + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" The document uses the blend mode %1 not defined in ISO 32000-2:2020 @@ -680,13 +606,10 @@ - If the document does not contain a PDF/A output intent, then all pages that contain transparency - shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and - the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall - be used as the default blending colour space. + If the document does not contain a PDF/A output intent, then all pages that contain transparency shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false - The page contains transparent objects with no blending colour space defined. + The page contains transparent objects with no blending colour space defined @@ -695,10 +618,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" A Font dictionary has value %1 of Type entry instead of Font @@ -714,12 +635,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" Invalid Subtype entry in font dictionary with value %1 @@ -737,10 +654,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type @@ -753,9 +668,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null A non-standard simple font dictionary has missing or invalid FirstChar entry @@ -768,9 +681,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -783,9 +694,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) Widths array is missing or has invalid size %1 instead of %2 @@ -801,10 +710,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are - Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22 fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" Unsupported font file format %1 of the embedded font @@ -820,20 +726,10 @@ - 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. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && - CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, - CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + 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 + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) CIDFontOrdering CMapOrdering @@ -847,10 +743,8 @@ - ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -861,24 +755,8 @@ - All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, - 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5. - 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" || - embeddedFile_size == 1 + All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5 + 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" || embeddedFile_size == 1 A non-standard CMap %1 is not embedded @@ -891,8 +769,7 @@ - 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. + 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 WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical @@ -905,23 +782,8 @@ - A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116. - 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" + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116 + 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" A CMap references another non-standard CMap %1 @@ -934,9 +796,8 @@ - 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. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + 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 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -947,11 +808,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of - a non-standard mapping chosen by the conforming processor. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -963,11 +820,8 @@ - For every font embedded in a conforming file, the glyph width information in the font - dictionary and in the embedded font program shall be consistent for every glyph referenced for - rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -979,30 +833,20 @@ - 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 that all necessary glyph lookups are able to be carried out. + 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 that all necessary glyph lookups are able to be carried out isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-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. + The embedded font program for a non-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 - 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' subtable. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && - (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + 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' subtable + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding containsDifferences @@ -1023,22 +867,18 @@ - The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain - either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, - Encoding ID=0) encoding. + The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding isSymbolic == false || cmap30Present == true || cmap10Present == true - 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. + 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 - If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than - zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1047,7 +887,7 @@ - The ActualText entry shall not contain any PUA values. + The ActualText entry shall not contain any PUA values containsPUA == false The ActualText entry contains a Private Unicoide Area value @@ -1057,9 +897,8 @@ - A PDF/A-4 compliant document 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. - name != ".notdef" + A PDF/A-4 compliant document 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 + name != ".notdef" The document contains a reference to the .notdef glyph @@ -1068,14 +907,8 @@ - Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. - Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || - Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || - Subtype == "Projection" + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. Additionally, the Sound, Screen, Movie, 3D, RichMedia and FileAttachment types shall not be permitted + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection" Unknown or not permitted Annotation type %1 @@ -1088,8 +921,8 @@ - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key + Subtype == "Popup" || F != null A dictionary of %1 annotation does not contain F key @@ -1100,30 +933,25 @@ - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0 F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - Annotation flags are set the annotation to be hidden/invisible or non-printable - (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) F - (F & 4) >> 2 - (F & 2) >> 1 + (F & 4) >> 2 + (F & 2) >> 1 (F & 1) - (F & 32) >> 5 - (F & 256) >> 8 + (F & 32) >> 5 + (F & 256) >> 8 - Every annotation (including those whose Subtype value is Widget, as used for form fields), - except for the two cases listed below, shall have at least one appearance dictionary: - Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to - the value at index 3 and the value at index 2 is equal to the value at index 4; - - annotations whose Subtype value is Popup, Link or Projection. - (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - annotations whose Subtype value is Popup, Link or Projection + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null An annotation does not contain an appearance dictionary @@ -1134,9 +962,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as - its value shall contain only the N key. - AP == null || AP == "N" + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key + AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -1147,12 +974,10 @@ - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, - the value of the N key shall be an appearance subdictionary. - AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) - An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, but the value of the N key is %1 instead of appearance subdictionary + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary N_type @@ -1161,12 +986,10 @@ - If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. - AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" - An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the - value of the N key is not an appearance stream + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream Subtype FT @@ -1176,7 +999,7 @@ - A Widget annotation dictionary shall not contain the A key. + A Widget annotation dictionary shall not contain the A key containsA == false A Widget annotation contains A entry @@ -1186,7 +1009,7 @@ - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false The interactive form dictionary contains the NeedAppearances flag with value true @@ -1196,8 +1019,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, - if present, shall not contain the XFA key. + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, if present, shall not contain the XFA key containsXFA == false The interactive form dictionary contains the XFA key @@ -1207,7 +1029,7 @@ - A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key NeedsRendering == false A document's Catalog contains NeedsRendering flag set to true @@ -1217,11 +1039,8 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and - GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall - not be permitted. - S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || - S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" + The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" Unknown or not permitted Action type %1 @@ -1234,8 +1053,8 @@ - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 @@ -1248,14 +1067,10 @@ - If a document catalog dictionary or page dictionary or an annotation dictionary (other than a - Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) - shall only contain keys from the following list: E, X, D, U, Fo, and Bl. - parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && - elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == '' - - Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, - U, Fo, and Bl + If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl + parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == '' + + Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').toString() @@ -1265,11 +1080,10 @@ - The document 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.2. + The document 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.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key @@ -1278,31 +1092,30 @@ - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute - All content of all XMP packets located in any metadata stream present in the PDF shall be - well-formed as defined by XMP (ISO 16684-1). + All content of all XMP packets located in any metadata stream present in the PDF shall be well-formed as defined by XMP (ISO 16684-1) isSerializationValid - A metadata stream is serialized incorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed @@ -1311,7 +1124,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8 actualEncoding == "UTF-8" The XMP package uses encoding %1 different from UTF-8 @@ -1325,21 +1138,20 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/" Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 4 - The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file part @@ -1348,10 +1160,10 @@ - A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance. + A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance conformance == null - The "conformance" property of the PDF/A Identification Schema is %1 instead of null for PDF/A-4 conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of null for PDF/A-4 conforming file conformance @@ -1361,7 +1173,7 @@ Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid - partPrefix == null || partPrefix == "pdfaid" + partPrefix == null || partPrefix == "pdfaid" Property part of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1372,10 +1184,10 @@ - The value of pdfaid:rev shall be the four digit year. + The value of pdfaid:rev shall be the four digit year /^\d{4}$/.test(rev) - The value of pdfaid:rev (%1) not the four digit year. + The value of pdfaid:rev (%1) not the four digit year rev @@ -1385,7 +1197,7 @@ Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid - revPrefix == null || revPrefix == "pdfaid" + revPrefix == null || revPrefix == "pdfaid" Property rev of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1396,8 +1208,7 @@ - The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. - If the MIME type is not known, the value "application/octet-stream" shall be used. + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. If the MIME type is not known, the value "application/octet-stream" shall be used Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) MIME type %1 of an embedded file is missing or invalid @@ -1414,8 +1225,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or UF key - (F = %1, UF = %2) + The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2) F UF @@ -1435,8 +1245,7 @@ - Each embedded file’s file specification dictionary shall contain an AFRelationship key - (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. + Each embedded file’s file specification dictionary shall contain an AFRelationship key (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF containsEF == false || AFRelationship != null The file specification dictionary for an embedded file does not contain the AFRelationship key @@ -1448,8 +1257,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null Missing Name entry of the optional content configuration dictionary @@ -1459,8 +1267,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-4 file. + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-4 file hasDuplicateName == false Optional content configuration dictionary has duplicated name %1 @@ -1472,8 +1279,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary @@ -1519,17 +1325,17 @@ null outputColorSpace - + null - outputColorSpace + ICCProfileMD5 null destOutputProfileIndirect - + null - ICCProfileMD5 + outputColorSpace null diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 9b6f31ad..bfff1ee4 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -8,12 +8,10 @@ - The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 9 (39h) + The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 9 (39h) headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) - File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, - where 'n' is a single digit number between 0 and 9 + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, where 'n' is a single digit number between 0 and 9 header headerOffset @@ -23,12 +21,10 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not start with 4 bytes with byte values - above 127 (first four bytes = %1, %2, %3, %4) + Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4) headerByte1 headerByte2 @@ -52,7 +48,7 @@ - The Encrypt key shall not be present in the trailer dictionary. + The Encrypt key shall not be present in the trailer dictionary isEncrypted != true The Encrypt key is present in the trailer dictionary @@ -62,7 +58,7 @@ - No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. + No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5 postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker @@ -76,7 +72,7 @@ - The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary. + The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary containsPieceInfo == true || containsInfo == false The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary @@ -86,7 +82,7 @@ - If a document information dictionary is present, it shall only contain a ModDate entry. + If a document information dictionary is present, it shall only contain a ModDate entry size == 1 && ModDate != null Document information dictionary is present and contains %1 key(s), but allowed only ModDate @@ -111,8 +107,10 @@ Hexadecimal strings shall contain an even number of non-white-space characters (isHex != true) || hexCount % 2 == 0 - The number of hexadecimal digits in a hexadecimal string shall always be even - + A hexadecimal string contains odd number (%1) of non-white-space characters + + hexCount + @@ -128,8 +126,7 @@ - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) @@ -154,12 +151,10 @@ - The Subtype entry in a 3D stream dictionary (ISO 32000-2:2020, 13.6.3) shall have a value which - is either U3D or PRC as described in Annex B. + The Subtype entry in a 3D stream dictionary (ISO 32000-2:2020, 13.6.3) shall have a value which is either U3D or PRC as described in Annex B Subtype == 'U3D' || Subtype == 'PRC' - The Subtype entry in the 3D stream dictionary (ISO 32000-2:2020, 13.6.3) has value %1 that is - neither U3D nor PRC + The Subtype entry in the 3D stream dictionary (ISO 32000-2:2020, 13.6.3) has value %1 that is neither U3D nor PRC Subtype @@ -170,17 +165,8 @@ - All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the - exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. - In addition, the Crypt filter shall not be used unless the value of the Name key in the decode - parameters dictionary is Identity. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || - internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || - (internalRepresentation == "Crypt" && decodeParms == "Identity") - + All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity") Unknown or not permitted Stream filter %1 is used @@ -193,8 +179,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences isValidUtf8 == true The name value %1 does not represent a correct UTF-8 character sequence @@ -208,9 +193,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -220,16 +203,8 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, - or an array containing any such value. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || - internalRepresentation == "AHx" || internalRepresentation == "A85" || - internalRepresentation == "Fl" || internalRepresentation == "RL" || - internalRepresentation == "CCF" || internalRepresentation == "DCT" - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, or an array containing any such value + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT" Inline image uses not permitted or unknown filter %1 @@ -242,7 +217,7 @@ - No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263) entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -256,13 +231,10 @@ - If the Version key is present in the document catalog dictionary, the first character in its value - shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third - character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. + If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3 Version == null || /^2\.[0-9]$/.test(Version) - The Version key with value %1 does not match the pattern 2.n, - where 'n' is a single digit number between 0 and 9. + The Version key with value %1 does not match the pattern 2.n, where 'n' is a single digit number between 0 and 9 Version @@ -271,8 +243,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed - by the BX/EX compatibility operators. + Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed by the BX/EX compatibility operators false A content stream contains operator %1 not defined in ISO 32000-2:2020 @@ -284,10 +255,7 @@ - A content stream that references other objects, such as images and fonts that are necessary to - fully render or process the stream, shall have an explicitly associated Resources dictionary as - described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources - referenced by this content stream. + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this content stream inheritedResourceNames == '' A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary @@ -301,12 +269,10 @@ - A content stream's named resources shall be defined by a resource dictionary, which shall - enumerate the named resources needed by the operators in the content stream and the names by which - they can be referred to. + A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which they can be referred to undefinedResourceNames == '' - A content stream references named resource(s) %1 not defined by a resource dictionary. + A content stream references named resource(s) %1 not defined by a resource dictionary undefinedResourceNames @@ -317,9 +283,8 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK" + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) @@ -334,10 +299,7 @@ - If any OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. + If any OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) @@ -349,7 +311,7 @@ - The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -361,9 +323,8 @@ - The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 2.0 requirements @@ -378,9 +339,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is - used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting @@ -394,51 +353,37 @@ - An ICCBased colour space shall not be used where the profile is a CMYK destination profile and - is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. - (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && - ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || - (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) - - An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or - the current transparency blending color space + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace + (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) + + An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or the current transparency blending color space - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when - the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB - colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, - when the DeviceRGB colour space is used, contains an 'RGB ' destination profile. - (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || - gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' - - DeviceRGB colour space is used without RGB output intent profile and without current - transparency blending space being Device-independent RGB + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, when the DeviceRGB colour space is used, contains an 'RGB ' destination profile + (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' + + DeviceRGB colour space is used without RGB output intent profile and without current transparency blending space being Device-independent RGB - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set - when the DeviceCMYK colour space is used or if the current transparency blending space, when the - DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A - OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or if the current transparency blending space, when the DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' - DeviceCMYK colour space is used without CMYK output intent profile and without current - transparency blending space being Device-independent CMYK + DeviceCMYK colour space is used without CMYK output intent profile and without current transparency blending space being Device-independent CMYK - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when - the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect. + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect gPageOutputCS != null || gDocumentOutputCS != null DeviceGray colour space is used without output intent profile @@ -448,7 +393,7 @@ - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present areColorantsPresent == true A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -460,10 +405,7 @@ - All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. + All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -486,7 +428,7 @@ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + TR2 == null || TR2 == "Default" A graphics state parameter dictionary contains the TR2 key with value %1 other than Default @@ -507,7 +449,7 @@ - All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type %1 instead of 1 or 5 @@ -519,7 +461,7 @@ - Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -529,10 +471,8 @@ - The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. - colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || - colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? - TransferFunction == null : TransferFunction != null) + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020 + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -563,8 +503,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. For an inline - image, the I key, if present, shall have a value of false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key, if present, shall have a value of false Interpolate == false The value of the Interpolate key in the Image dictionary is true @@ -575,8 +514,7 @@ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 - BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || - BitsPerComponent == 8 || BitsPerComponent == 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16 The value of the BitsPerComponent key in the Image dictionary is %1 @@ -589,7 +527,7 @@ - The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4 nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 @@ -601,11 +539,10 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field) nrColorSpacesWithApproxField @@ -614,8 +551,7 @@ - The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only - that colour space and shall ignore all other colour space specifications. + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only that colour space and shall ignore all other colour space specifications hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 @@ -627,7 +563,7 @@ - JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A @@ -637,11 +573,10 @@ - The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. - bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range - ('bpcc' box present = %1, bit depth = %2) + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2) bpccBoxPresent bitDepth @@ -651,7 +586,7 @@ - A form XObject dictionary shall not contain an OPI key. + A form XObject dictionary shall not contain an OPI key containsOPI == false The form XObject dictionary contains an OPI key @@ -671,17 +606,8 @@ - Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM - key in a graphic state dictionary or an annotation dictionary. - internalRepresentation == "Normal" || internalRepresentation == "Compatible" || - internalRepresentation == "Multiply" || internalRepresentation == "Screen" || - internalRepresentation == "Overlay" || internalRepresentation == "Darken" || - internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || - internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || - internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || - internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || - internalRepresentation == "Saturation" || internalRepresentation == "Color" || - internalRepresentation == "Luminosity" + Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM key in a graphic state dictionary or an annotation dictionary + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" The document uses the blend mode %1 not defined in ISO 32000-2:2020 @@ -694,13 +620,10 @@ - If the document does not contain a PDF/A output intent, then all pages that contain transparency - shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and - the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall - be used as the default blending colour space. + If the document does not contain a PDF/A output intent, then all pages that contain transparency shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false - The page contains transparent objects with no blending colour space defined. + The page contains transparent objects with no blending colour space defined @@ -709,10 +632,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" A Font dictionary has value %1 of Type entry instead of Font @@ -728,12 +649,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" Invalid Subtype entry in font dictionary with value %1 @@ -751,10 +668,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type @@ -767,9 +682,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null A non-standard simple font dictionary has missing or invalid FirstChar entry @@ -782,9 +695,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -797,9 +708,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) Widths array is missing or has invalid size %1 instead of %2 @@ -815,10 +724,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are - Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22 fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" Unsupported font file format %1 of the embedded font @@ -834,20 +740,10 @@ - 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. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && - CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, - CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + 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 + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) CIDFontOrdering CMapOrdering @@ -861,10 +757,8 @@ - ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -875,24 +769,8 @@ - All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, - 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5. - 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" || - embeddedFile_size == 1 + All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5 + 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" || embeddedFile_size == 1 A non-standard CMap %1 is not embedded @@ -905,8 +783,7 @@ - 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. + 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 WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical @@ -919,23 +796,8 @@ - A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116. - 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" + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116 + 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" A CMap references another non-standard CMap %1 @@ -948,9 +810,8 @@ - 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. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + 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 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -961,11 +822,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of - a non-standard mapping chosen by the conforming processor. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -977,11 +834,8 @@ - For every font embedded in a conforming file, the glyph width information in the font - dictionary and in the embedded font program shall be consistent for every glyph referenced for - rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -993,30 +847,20 @@ - 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 that all necessary glyph lookups are able to be carried out. + 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 that all necessary glyph lookups are able to be carried out isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-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. + The embedded font program for a non-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 - 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' subtable. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && - (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + 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' subtable + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding containsDifferences @@ -1037,22 +881,18 @@ - The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain - either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, - Encoding ID=0) encoding. + The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding isSymbolic == false || cmap30Present == true || cmap10Present == true - 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. + 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 - If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than - zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1061,7 +901,7 @@ - The ActualText entry shall not contain any PUA values. + The ActualText entry shall not contain any PUA values containsPUA == false The ActualText entry contains a Private Unicoide Area value @@ -1071,9 +911,8 @@ - A PDF/A-4 compliant document 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. - name != ".notdef" + A PDF/A-4 compliant document 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 + name != ".notdef" The document contains a reference to the .notdef glyph @@ -1082,15 +921,8 @@ - Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. - Additionally, the Sound, Screen, Movie and FileAttachment types shall not be permitted. 3D and RichMedia - types shall only be permitted in a PDF/A-4e compliant file as described in Annex B. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || - Subtype == "Redact" || Subtype == "3D" || Subtype == "Projection" || Subtype == "RichMedia" + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. Additionally, the Sound, Screen, Movie and FileAttachment types shall not be permitted. 3D and RichMedia types shall only be permitted in a PDF/A-4e compliant file as described in Annex B + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "3D" || Subtype == "Projection" || Subtype == "RichMedia" Unknown or not permitted Annotation type %1 @@ -1103,8 +935,8 @@ - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key + Subtype == "Popup" || F != null A dictionary of %1 annotation does not contain F key @@ -1115,30 +947,25 @@ - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0 F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - Annotation flags are set the annotation to be hidden/invisible or non-printable - (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) F - (F & 4) >> 2 - (F & 2) >> 1 + (F & 4) >> 2 + (F & 2) >> 1 (F & 1) - (F & 32) >> 5 - (F & 256) >> 8 + (F & 32) >> 5 + (F & 256) >> 8 - Every annotation (including those whose Subtype value is Widget, as used for form fields), - except for the two cases listed below, shall have at least one appearance dictionary: - Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to - the value at index 3 and the value at index 2 is equal to the value at index 4; - - annotations whose Subtype value is Popup, Link or Projection. - (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - annotations whose Subtype value is Popup, Link or Projection + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null An annotation does not contain an appearance dictionary @@ -1149,9 +976,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as - its value shall contain only the N key. - AP == null || AP == "N" + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key + AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -1162,12 +988,10 @@ - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, - the value of the N key shall be an appearance subdictionary. - AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) - An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, but the value of the N key is %1 instead of appearance subdictionary + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary N_type @@ -1176,12 +1000,10 @@ - If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. - AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" - An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the - value of the N key is not an appearance stream + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream Subtype FT @@ -1191,7 +1013,7 @@ - A Widget annotation dictionary shall not contain the A key. + A Widget annotation dictionary shall not contain the A key containsA == false A Widget annotation contains A entry @@ -1201,7 +1023,7 @@ - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false The interactive form dictionary contains the NeedAppearances flag with value true @@ -1211,8 +1033,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, - if present, shall not contain the XFA key. + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, if present, shall not contain the XFA key containsXFA == false The interactive form dictionary contains the XFA key @@ -1222,7 +1043,7 @@ - A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key NeedsRendering == false A document's Catalog contains NeedsRendering flag set to true @@ -1232,13 +1053,8 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be - permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The - SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in - Annex B. - S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || - S == "SubmitForm" || S == "SetOCGState" || S == "GoTo3DView" || S == "JavaScript" || - S == "RichMediaExecute" || S == "GoToDp" + The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition and Trans actions shall not be permitted. Additionally, the deprecated set-state and no-op actions shall not be permitted. The SetOCGState and GoTo3DView actions shall only be permitted in a PDF/A-4e compliant file as described in Annex B + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "SetOCGState" || S == "GoTo3DView" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" Unknown or not permitted Action type %1 @@ -1251,8 +1067,8 @@ - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 @@ -1265,14 +1081,10 @@ - If a document catalog dictionary or page dictionary or an annotation dictionary (other than a - Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) - shall only contain keys from the following list: E, X, D, U, Fo, and Bl. - parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && - elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == '' - - Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, - U, Fo, and Bl + If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl + parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == '' + + Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').toString() @@ -1282,11 +1094,10 @@ - The document 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.2. + The document 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.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key @@ -1295,31 +1106,30 @@ - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute - All content of all XMP packets located in any metadata stream present in the PDF shall be - well-formed as defined by XMP (ISO 16684-1). + All content of all XMP packets located in any metadata stream present in the PDF shall be well-formed as defined by XMP (ISO 16684-1) isSerializationValid - A metadata stream is serialized incorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed @@ -1328,7 +1138,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8 actualEncoding == "UTF-8" The XMP package uses encoding %1 different from UTF-8 @@ -1342,21 +1152,20 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/" Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 4 - The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file part @@ -1365,10 +1174,10 @@ - A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E. - conformance == "E" + A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E + conformance == "E" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "E" for PDF/A-4E conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "E" for PDF/A-4E conforming file conformance @@ -1380,7 +1189,7 @@ Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid - partPrefix == null || partPrefix == "pdfaid" + partPrefix == null || partPrefix == "pdfaid" Property part of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1391,10 +1200,10 @@ - The value of pdfaid:rev shall be the four digit year. + The value of pdfaid:rev shall be the four digit year /^\d{4}$/.test(rev) - The value of pdfaid:rev (%1) not the four digit year. + The value of pdfaid:rev (%1) not the four digit year rev @@ -1404,7 +1213,7 @@ Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid - revPrefix == null || revPrefix == "pdfaid" + revPrefix == null || revPrefix == "pdfaid" Property rev of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1415,8 +1224,7 @@ - The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. - If the MIME type is not known, the value "application/octet-stream" shall be used. + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. If the MIME type is not known, the value "application/octet-stream" shall be used Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) MIME type %1 of an embedded file is missing or invalid @@ -1433,8 +1241,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or UF key - (F = %1, UF = %2) + The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2) F UF @@ -1444,8 +1251,7 @@ - Each embedded file’s file specification dictionary shall contain an AFRelationship key - (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. + Each embedded file’s file specification dictionary shall contain an AFRelationship key (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF containsEF == false || AFRelationship != null The file specification dictionary for an embedded file does not contain the AFRelationship key @@ -1457,8 +1263,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null Missing Name entry of the optional content configuration dictionary @@ -1468,8 +1273,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-4 file. + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-4 file hasDuplicateName == false Optional content configuration dictionary has duplicated name %1 @@ -1481,8 +1285,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary @@ -1528,22 +1331,21 @@ null outputColorSpace - + null - outputColorSpace + ICCProfileMD5 null destOutputProfileIndirect - + null - ICCProfileMD5 + outputColorSpace null colorSpaceType - diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index a8407c87..2e2fb298 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -8,12 +8,10 @@ - The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, - where 'n' is a single digit number between 0 (30h) and 9 (39h) + The file header shall begin at byte zero and shall consist of "%PDF-2.n" followed by a single EOL marker, where 'n' is a single digit number between 0 (30h) and 9 (39h) headerOffset == 0 && /^%PDF-2\.[0-9]$/.test(header) - File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, - where 'n' is a single digit number between 0 and 9 + File header %1 (offset = %2) starts at non-zero offset or does not match the pattern %PDF-2.n, where 'n' is a single digit number between 0 and 9 header headerOffset @@ -23,12 +21,10 @@ - The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded - byte values shall have a decimal value greater than 127 + The aforementioned EOL marker shall be immediately followed by a % (25h) character followed by at least four bytes, each of whose encoded byte values shall have a decimal value greater than 127 headerByte1 > 127 && headerByte2 > 127 && headerByte3 > 127 && headerByte4 > 127 - Binary comment in the file header is missing or does not start with 4 bytes with byte values - above 127 (first four bytes = %1, %2, %3, %4) + Binary comment in the file header is missing or does not start with 4 bytes with byte values above 127 (first four bytes = %1, %2, %3, %4) headerByte1 headerByte2 @@ -52,7 +48,7 @@ - The Encrypt key shall not be present in the trailer dictionary. + The Encrypt key shall not be present in the trailer dictionary isEncrypted != true The Encrypt key is present in the trailer dictionary @@ -62,7 +58,7 @@ - No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5. + No data shall follow the last end-of-file marker as described in ISO 32000-2:2020, 7.5.5 postEOFDataSize == 0 %1 byte(s) of data is present after the last end-of-file marker @@ -76,7 +72,7 @@ - The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary. + The Info key shall not be present in the trailer dictionary of PDF/A-4 conforming files unless there exists a PieceInfo entry in the document catalog dictionary containsPieceInfo == true || containsInfo == false The Info key present in the trailer dictionary, but PieceInfo entry does not present in the document catalog dictionary @@ -86,7 +82,7 @@ - If a document information dictionary is present, it shall only contain a ModDate entry. + If a document information dictionary is present, it shall only contain a ModDate entry size == 1 && ModDate != null Document information dictionary is present and contains %1 key(s), but allowed only ModDate @@ -130,8 +126,7 @@ - The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character - after the stream keyword and preceding the EOL marker before the endstream keyword. + The value of the Length key specified in the stream dictionary shall match the number of bytes in the file following the LINE FEED (0Ah) character after the stream keyword and preceding the EOL marker before the endstream keyword Length == realLength Actual length of the stream (%1 byte(s)) does not match the value of the Length key in the Stream dictionary (%2 byte(s)) @@ -156,17 +151,8 @@ - All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the - exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. - In addition, the Crypt filter shall not be used unless the value of the Name key in the decode - parameters dictionary is Identity. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || - internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || - (internalRepresentation == "Crypt" && decodeParms == "Identity") - + All standard stream filters listed in ISO 32000-2:2020, 7.4, Table 6 may be used, with the exception of LZWDecode. Filters that are not listed in ISO 32000-2:2020, 7.4, Table 6 shall not be used. In addition, the Crypt filter shall not be used unless the value of the Name key in the decode parameters dictionary is Identity + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "JBIG2Decode" || internalRepresentation == "DCTDecode" || internalRepresentation == "JPXDecode" || (internalRepresentation == "Crypt" && decodeParms == "Identity") Unknown or not permitted Stream filter %1 is used @@ -179,8 +165,7 @@ - Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with - a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences. + Font names, names of colourants in Separation and DeviceN colour spaces, and structure type names, after expansion of character sequences escaped with a NUMBER SIGN (23h), if any, shall be valid UTF-8 character sequences isValidUtf8 == true The name value %1 does not represent a correct UTF-8 character sequence @@ -194,9 +179,7 @@ - The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be - separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj - keywords shall each be followed by an EOL marker. + The object number and generation number shall be separated by a single white-space character. The generation number and obj keyword shall be separated by a single white-space character. The object number and endobj keyword shall each be preceded by an EOL marker. The obj and endobj keywords shall each be followed by an EOL marker spacingCompliesPDFA Extra spacings or missing EOL characters around indirect object/generation number or keywords 'obj' and 'endobj' @@ -206,16 +189,8 @@ - The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, - or an array containing any such value. - - internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || - internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || - internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || - internalRepresentation == "AHx" || internalRepresentation == "A85" || - internalRepresentation == "Fl" || internalRepresentation == "RL" || - internalRepresentation == "CCF" || internalRepresentation == "DCT" - + The value of the F key in the Inline Image dictionary shall not be LZW, LZWDecode, Crypt, a value not listed in ISO 32000-2:2020, 8.9.7, Table 92, or an array containing any such value + internalRepresentation == "ASCIIHexDecode" || internalRepresentation == "ASCII85Decode" || internalRepresentation == "FlateDecode" || internalRepresentation == "RunLengthDecode" || internalRepresentation == "CCITTFaxDecode" || internalRepresentation == "DCTDecode" || internalRepresentation == "AHx" || internalRepresentation == "A85" || internalRepresentation == "Fl" || internalRepresentation == "RL" || internalRepresentation == "CCF" || internalRepresentation == "DCT" Inline image uses not permitted or unknown filter %1 @@ -228,7 +203,7 @@ - No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263). + No keys other than UR3 and DocMDP shall be present in a permissions dictionary (ISO 32000-2:2020, 12.8.6, Table 263) entries.split('&').filter(elem => elem != 'UR3' && elem != 'DocMDP').length == 0 || entries == '' The document permissions dictionary contains key(s) %1 other than UR3 and DocMDP @@ -242,13 +217,10 @@ - If the Version key is present in the document catalog dictionary, the first character in its value - shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third - character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3. + If the Version key is present in the document catalog dictionary, the first character in its value shall be a 2 (32h) and the second character of its value shall be a PERIOD (2Eh) (decimal point). The third character shall be a decimal digit. The number of characters of the value of the Version key shall be exactly 3 Version == null || /^2\.[0-9]$/.test(Version) - The Version key with value %1 does not match the pattern 2.n, - where 'n' is a single digit number between 0 and 9. + The Version key with value %1 does not match the pattern 2.n, where 'n' is a single digit number between 0 and 9 Version @@ -257,8 +229,7 @@ - Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed - by the BX/EX compatibility operators. + Content streams shall not contain any operators not defined in ISO 32000-2:2020 even if such operators are bracketed by the BX/EX compatibility operators false A content stream contains operator %1 not defined in ISO 32000-2:2020 @@ -270,10 +241,7 @@ - A content stream that references other objects, such as images and fonts that are necessary to - fully render or process the stream, shall have an explicitly associated Resources dictionary as - described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources - referenced by this content stream. + A content stream that references other objects, such as images and fonts that are necessary to fully render or process the stream, shall have an explicitly associated Resources dictionary as described in ISO 32000-2:2020, 7.8.3. Such resource dictionaries shall define all named resources referenced by this content stream inheritedResourceNames == '' A content stream refers to resource(s) %1 not defined in an explicitly associated Resources dictionary @@ -287,12 +255,10 @@ - A content stream's named resources shall be defined by a resource dictionary, which shall - enumerate the named resources needed by the operators in the content stream and the names by which - they can be referred to. + A content stream's named resources shall be defined by a resource dictionary, which shall enumerate the named resources needed by the operators in the content stream and the names by which they can be referred to undefinedResourceNames == '' - A content stream references named resource(s) %1 not defined by a resource dictionary. + A content stream references named resource(s) %1 not defined by a resource dictionary undefinedResourceNames @@ -303,9 +269,8 @@ - The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile - (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK". - (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 + The profile stream that is the value of the DestOutputProfile key shall either be an output profile (Device Class = "prtr") or a monitor profile (Device Class = "mntr"). The profiles shall have a colour space of either "GRAY", "RGB", or "CMYK" + (deviceClass == "prtr" || deviceClass == "mntr") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY") && version < 5.0 The embedded PDF/A Output Intent colour profile has invalid header (Device Class = %1, color space = %2, version = %3) @@ -320,10 +285,7 @@ - If any OutputIntents array contains more than one entry, as might be the case where a file is compliant - with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a - DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC - profile stream. + If any OutputIntents array contains more than one entry, as might be the case where a file is compliant with this part of ISO 19005 and at the same time with PDF/X or PDF/E, then all entries that contain a DestOutputProfile key shall have as the value of that key the same indirect object, which shall be a valid ICC profile stream sameOutputProfileIndirect == true OutputIntents array contains output intent dictionaries with non-matching destination output profiles (indirect keys %1) @@ -335,7 +297,7 @@ - The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary. + The DestOutputProfileRef key, as defined in ISO 32000-2:2020, 14.11.5, Table 401, shall not be present in any output intent dictionary containsDestOutputProfileRef == false The output intent dictionary contains forbidden entry DestOutputProfileRef @@ -347,9 +309,8 @@ - The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5. - (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && - (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 + The profile that forms the stream of an ICCBased colour space shall conform to ISO 32000-2:2020, 8.6.5.5 + (deviceClass == "prtr" || deviceClass == "mntr" || deviceClass == "scnr" || deviceClass == "spac") && (colorSpace == "RGB " || colorSpace == "CMYK" || colorSpace == "GRAY" || colorSpace == "Lab ") && version < 5.0 The embedded ICC profile (Device Class = %1, color space = %2, version = %3) is either invalid or does not satisfy PDF 2.0 requirements @@ -364,9 +325,7 @@ - Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is - used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for - fill is set to true, or both. + Overprint mode (as set by the OPM value in an ExtGState dictionary) shall not be one (1) when an ICCBased CMYK colour space is used for stroke and overprinting for stroke is set to true, or when ICCBased CMYK colour space is used for fill and overprinting for fill is set to true, or both overprintFlag == false || OPM == 0 Overprint mode (OPM) is set to %1 instead of 0 when an ICCBased CMYK colour space is used with enabled overprinting @@ -380,51 +339,37 @@ - An ICCBased colour space shall not be used where the profile is a CMYK destination profile and - is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace. - (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && - ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || - (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) - - An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or - the current transparency blending color space + An ICCBased colour space shall not be used where the profile is a CMYK destination profile and is identical to that in the current PDF/A OutputIntent or the current transparency blending colorspace + (ICCProfileIndirect == null || (ICCProfileIndirect != gOutputProfileIndirect && ICCProfileIndirect != currentTransparencyProfileIndirect)) && (ICCProfileMD5 == null || (ICCProfileMD5 != gOutputICCProfileMD5 && ICCProfileMD5 != currentTransparencyICCProfileMD5)) + + An ICCBased CMYK color space is identical to the current PDF/A OutputIntent color profile or the current transparency blending color space - DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when - the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB - colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, - when the DeviceRGB colour space is used, contains an 'RGB ' destination profile. - (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || - gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' - - DeviceRGB colour space is used without RGB output intent profile and without current - transparency blending space being Device-independent RGB + DeviceRGB shall only be used if a device independent DefaultRGB colour space has been set when the DeviceRGB colour space is used or if the current transparency blending space, when the DeviceRGB colour space is used, is a device independent RGB-based colour space or the current PDF/A OutputIntent, when the DeviceRGB colour space is used, contains an 'RGB ' destination profile + (gPageOutputCS == null ? gDocumentOutputCS == 'RGB ' : gPageOutputCS == 'RGB ') || gTransparencyCS == 'RGB ' || gTransparencyCS == 'CalRGB' + + DeviceRGB colour space is used without RGB output intent profile and without current transparency blending space being Device-independent RGB - DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set - when the DeviceCMYK colour space is used or if the current transparency blending space, when the - DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A - OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile. + DeviceCMYK shall only be used if a device independent DefaultCMYK colour space has been set when the DeviceCMYK colour space is used or if the current transparency blending space, when the DeviceCMYK colour space is used, is a device independent CMYK-based colour space or the current PDF/A OutputIntent, when the DeviceCMYK colour space is used, contains a 'CMYK' destination profile (gPageOutputCS == null ? gDocumentOutputCS == 'CMYK' : gPageOutputCS == 'CMYK') || gTransparencyCS == 'CMYK' - DeviceCMYK colour space is used without CMYK output intent profile and without current - transparency blending space being Device-independent CMYK + DeviceCMYK colour space is used without CMYK output intent profile and without current transparency blending space being Device-independent CMYK - DeviceGray shall only be used if a device independent DefaultGray colour space has been set when - the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect. + DeviceGray shall only be used if a device independent DefaultGray colour space has been set when the DeviceGray colour space is used, or if a PDF/A OutputIntent is in effect gPageOutputCS != null || gDocumentOutputCS != null DeviceGray colour space is used without output intent profile @@ -434,7 +379,7 @@ - For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present. + For any spot colour used in a DeviceN or NChannel colour space, an entry in the Colorants dictionary shall be present areColorantsPresent == true A colorant of the DeviceN or NChannel color space is not defined in the Colorants dictionary @@ -446,10 +391,7 @@ - All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the - same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF - objects shall be compared, rather than the computational result of the use of those PDF objects. Compression - and whether or not an object is direct or indirect shall be ignored. + All Separation arrays within a single conforming PDF/A-4 file (including those in Colorants dictionaries) that have the same name shall have the same tintTransform and alternateSpace. In evaluating equivalence, the PDF objects shall be compared, rather than the computational result of the use of those PDF objects. Compression and whether or not an object is direct or indirect shall be ignored areTintAndAlternateConsistent == true Several occurrences of a Separation colour space with the same name are not consistent @@ -472,7 +414,7 @@ A graphics state parameter dictionary shall not contain the TR2 key with a value other than Default - TR2 == null || TR2 == "Default" + TR2 == null || TR2 == "Default" A graphics state parameter dictionary contains the TR2 key with value %1 other than Default @@ -493,7 +435,7 @@ - All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key. + All halftones in a conforming PDF/A-4 file shall have the value 1 or 5 for the HalftoneType key HalftoneType != null && (HalftoneType == 1 || HalftoneType == 5) A Halftone has type %1 instead of 1 or 5 @@ -505,7 +447,7 @@ - Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key. + Halftones in a conforming PDF/A-4 file shall not contain a HalftoneName key HalftoneName == null A Halftone dictionary contains the HalftoneName key @@ -515,10 +457,8 @@ - The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020. - colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || - colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? - TransferFunction == null : TransferFunction != null) + The TransferFunction key in a halftone dictionary shall be used only as required by ISO 32000-2:2020 + colorantName == 'Default' || ((colorantName == null || colorantName == 'Cyan' || colorantName == 'Magenta' || colorantName == 'Yellow' || colorantName == 'Black') ? TransferFunction == null : TransferFunction != null) Custom TransferFunction in a Halftone dictionary is not permitted for primary (CMYK) colorants @@ -549,8 +489,7 @@ - If an Image dictionary contains the Interpolate key, its value shall be false. For an inline - image, the I key, if present, shall have a value of false. + If an Image dictionary contains the Interpolate key, its value shall be false. For an inline image, the I key, if present, shall have a value of false Interpolate == false The value of the Interpolate key in the Image dictionary is true @@ -561,8 +500,7 @@ If an Image dictionary contains the BitsPerComponent key, its value shall be 1, 2, 4, 8 or 16 - BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || - BitsPerComponent == 8 || BitsPerComponent == 16 + BitsPerComponent == null || BitsPerComponent == 1 || BitsPerComponent == 2 || BitsPerComponent == 4 || BitsPerComponent == 8 || BitsPerComponent == 16 The value of the BitsPerComponent key in the Image dictionary is %1 @@ -575,7 +513,7 @@ - The number of colour channels in the JPEG2000 data shall be 1, 3 or 4. + The number of colour channels in the JPEG2000 data shall be 1, 3 or 4 nrColorChannels == 1 || nrColorChannels == 3 || nrColorChannels == 4 JPEG2000 image has %1 colour channels that is neither 1, 3 or 4 @@ -587,11 +525,10 @@ - If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space - specification that has the value 0x01 in the APPROX field. + If the number of colour space specifications in the JPEG2000 data is greater than 1, there shall be exactly one colour space specification that has the value 0x01 in the APPROX field hasColorSpace == true || nrColorSpaceSpecs == 1 || nrColorSpacesWithApproxField == 1 - The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field). + The JPEG2000 image contains %1 colour specifications with the best colour fidelity (value 0x01 in the APPROX field) nrColorSpacesWithApproxField @@ -600,8 +537,7 @@ - The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only - that colour space and shall ignore all other colour space specifications. + The value of the METH entry in its 'colr' box shall be 0x01, 0x02 or 0x03. A conforming processor shall use only that colour space and shall ignore all other colour space specifications hasColorSpace == true || colrMethod == 1 || colrMethod == 2 || colrMethod == 3 Invalid JPEG2000 image: the value of the METH entry (%1) in its 'colr' box is different from 0x01, 0x02 or 0x03 @@ -613,7 +549,7 @@ - JPEG2000 enumerated colour space 19 (CIEJab) shall not be used. + JPEG2000 enumerated colour space 19 (CIEJab) shall not be used hasColorSpace == true || colrEnumCS == null || colrEnumCS != 19 JPEG2000 image uses enumerated colour space 19 (CIEJab), which is not allowed in PDF/A @@ -623,11 +559,10 @@ - The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth. - bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) + The bit-depth of the JPEG2000 data shall have a value in the range 1 to 38. All colour channels in the JPEG2000 data shall have the same bit-depth + bpccBoxPresent == false && (bitDepth >= 1 && bitDepth <= 38) - JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range - ('bpcc' box present = %1, bit depth = %2) + JPEG2000 image has different bit-depth parameters in 'bpcc' box, or bit depth is out of range ('bpcc' box present = %1, bit depth = %2) bpccBoxPresent bitDepth @@ -637,7 +572,7 @@ - A form XObject dictionary shall not contain an OPI key. + A form XObject dictionary shall not contain an OPI key containsOPI == false The form XObject dictionary contains an OPI key @@ -657,17 +592,8 @@ - Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM - key in a graphic state dictionary or an annotation dictionary. - internalRepresentation == "Normal" || internalRepresentation == "Compatible" || - internalRepresentation == "Multiply" || internalRepresentation == "Screen" || - internalRepresentation == "Overlay" || internalRepresentation == "Darken" || - internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || - internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || - internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || - internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || - internalRepresentation == "Saturation" || internalRepresentation == "Color" || - internalRepresentation == "Luminosity" + Only blend modes that are specified in ISO 32000-2:2020 shall be used for the value of the BM key in a graphic state dictionary or an annotation dictionary + internalRepresentation == "Normal" || internalRepresentation == "Compatible" || internalRepresentation == "Multiply" || internalRepresentation == "Screen" || internalRepresentation == "Overlay" || internalRepresentation == "Darken" || internalRepresentation == "Lighten" || internalRepresentation == "ColorDodge" || internalRepresentation == "ColorBurn" || internalRepresentation == "HardLight" || internalRepresentation == "SoftLight" || internalRepresentation == "Difference" || internalRepresentation == "Exclusion" || internalRepresentation == "Hue" || internalRepresentation == "Saturation" || internalRepresentation == "Color" || internalRepresentation == "Luminosity" The document uses the blend mode %1 not defined in ISO 32000-2:2020 @@ -680,13 +606,10 @@ - If the document does not contain a PDF/A output intent, then all pages that contain transparency - shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and - the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall - be used as the default blending colour space. + If the document does not contain a PDF/A output intent, then all pages that contain transparency shall either have a page-level PDF/A output intent or the page dictionary shall include the Group key, and the attribute dictionary that forms the value of that Group key shall include a CS entry whose value shall be used as the default blending colour space gDocumentOutputCS != null || outputColorSpace != null || containsGroupCS == true || containsTransparency == false - The page contains transparent objects with no blending colour space defined. + The page contains transparent objects with no blending colour space defined @@ -695,10 +618,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to - the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary - Type == "Font" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Type - name - (Required) The type of PDF object that this dictionary describes; must be Font for a font dictionary + Type == "Font" A Font dictionary has value %1 of Type entry instead of Font @@ -714,12 +635,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts - "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts - Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" - || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Subtype - name - (Required) The type of font; must be "Type1" for Type 1 fonts, "MMType1" for multiple master fonts, "TrueType" for TrueType fonts "Type3" for Type 3 fonts, "Type0" for Type 0 fonts and "CIDFontType0" or "CIDFontType2" for CID fonts + Subtype == "Type1" || Subtype == "MMType1" || Subtype == "TrueType" || Subtype == "Type3" || Subtype == "Type0" || Subtype == "CIDFontType0" || Subtype == "CIDFontType2" Invalid Subtype entry in font dictionary with value %1 @@ -737,10 +654,8 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - BaseFont - name - (Required) The PostScript name of the font - Subtype == "Type3" || fontName != null + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. BaseFont - name - (Required) The PostScript name of the font + Subtype == "Type3" || fontName != null A BaseFont entry is missing or has invalid type @@ -753,9 +668,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. FirstChar - integer - (Required except for the standard 14 fonts) The first character code defined in the font's Widths array isStandard == true || FirstChar != null A non-standard simple font dictionary has missing or invalid FirstChar entry @@ -768,9 +681,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. LastChar - integer - (Required except for the standard 14 fonts) The last character code defined in the font's Widths array isStandard == true || LastChar != null A non-standard simple font dictionary has missing or invalid LastChar entry @@ -783,9 +694,7 @@ - All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions - in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. - Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths + All fonts and font programs used in a conforming file, regardless of rendering mode usage, shall conform to the provisions in ISO 32000-2:2020, 9.6 and 9.7, as well as to the font specifications referenced by these provisions. Widths - array - (Required except for the standard 14 fonts; indirect reference preferred) An array of (LastChar − FirstChar + 1) widths isStandard == true || (Widths_size != null && Widths_size == LastChar - FirstChar + 1) Widths array is missing or has invalid size %1 instead of %2 @@ -801,10 +710,7 @@ - All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. - The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are - Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented - in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22. + All fonts used in a conforming file shall conform to the font specifications defined in PDF Reference 5.5. The subtype is the value of the Subtype key, if present, in the font file stream dictionary. The only valid values of this key in PDF 2.0 are Type1C - Type 1–equivalent font program represented in the Compact Font Format (CFF), CIDFontType0C - Type 0 CIDFont program represented in the Compact Font Format (CFF) and OpenType - OpenType® font program, as described in the ISO/IEC 14496-22 fontFileSubtype == null || fontFileSubtype == "Type1C" || fontFileSubtype == "CIDFontType0C" || fontFileSubtype == "OpenType" Unsupported font file format %1 of the embedded font @@ -820,20 +726,10 @@ - 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. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && - CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, - CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + 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 + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) CIDFontOrdering CMapOrdering @@ -847,10 +743,8 @@ - ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115. - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + ISO 32000-2:2020, 9.7.4 Table 115 requires that all embedded Type 2 CIDFonts, 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, 9.7.4 Table 115 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -861,24 +755,8 @@ - All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, - 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5. - 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" || - embeddedFile_size == 1 + All CMaps used within a conforming PDF/A-4 file, except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116, shall be embedded in that file as described in ISO 32000-2:2020, 9.7.5 + 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" || embeddedFile_size == 1 A non-standard CMap %1 is not embedded @@ -891,8 +769,7 @@ - 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. + 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 WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical @@ -905,23 +782,8 @@ - A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116. - 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" + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116 + 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" A CMap references another non-standard CMap %1 @@ -934,9 +796,8 @@ - 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. - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + 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 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -947,11 +808,7 @@ - Embedded fonts shall define all glyphs referenced for rendering within the conforming file. - A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt - from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes - shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of - a non-standard mapping chosen by the conforming processor. + Embedded fonts shall define all glyphs referenced for rendering within the conforming file. A font referenced for use solely in rendering mode 3 is therefore not rendered and is thus exempt from the embedding requirement. In all cases for TrueType fonts that are to be rendered, character codes shall be able to be mapped to glyphs according to ISO 32000-2:2020, 9.6.5 without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -963,11 +820,8 @@ - For every font embedded in a conforming file, the glyph width information in the font - dictionary and in the embedded font program shall be consistent for every glyph referenced for - rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file, the glyph width information in the font dictionary and in the embedded font program shall be consistent for every glyph referenced for rendering. Glyphs that are referenced only with rendering mode 3 are exempt from this requirement + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -979,30 +833,20 @@ - 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 that all necessary glyph lookups are able to be carried out. + 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 that all necessary glyph lookups are able to be carried out isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-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. + The embedded font program for a non-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 - 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' subtable. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && - (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + 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' subtable + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding containsDifferences @@ -1023,22 +867,18 @@ - The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain - either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, - Encoding ID=0) encoding. + The 'cmap' subtable in the embedded font program for a symbolic TrueType font shall contain either the Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding isSymbolic == false || cmap30Present == true || cmap10Present == true - 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. + 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 - If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than - zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -1047,7 +887,7 @@ - The ActualText entry shall not contain any PUA values. + The ActualText entry shall not contain any PUA values containsPUA == false The ActualText entry contains a Private Unicoide Area value @@ -1057,9 +897,8 @@ - A PDF/A-4 compliant document 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. - name != ".notdef" + A PDF/A-4 compliant document 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 + name != ".notdef" The document contains a reference to the .notdef glyph @@ -1068,15 +907,8 @@ - Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. - Additionally, the Sound, Screen, Movie, 3D and RichMedia types shall not be permitted. The FileAttachment type shall - only be permitted in a PDF/A-4f compliant file as described in Annex A. - Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || - Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || - Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || - Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || - Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || - Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection" + Annotation types not defined in ISO 32000-2:2020, 12.5.6.1, Table 171 shall not be permitted. Additionally, the Sound, Screen, Movie, 3D and RichMedia types shall not be permitted. The FileAttachment type shall only be permitted in a PDF/A-4f compliant file as described in Annex A + Subtype == "Text" || Subtype == "Link" || Subtype == "FreeText" || Subtype == "Line" || Subtype == "Square" || Subtype == "Circle" || Subtype == "Polygon" || Subtype == "PolyLine" || Subtype == "Highlight" || Subtype == "Underline" || Subtype == "Squiggly" || Subtype == "StrikeOut" || Subtype == "Stamp" || Subtype == "Caret" || Subtype == "Ink" || Subtype == "Popup" || Subtype == "FileAttachment" || Subtype == "Widget" || Subtype == "PrinterMark" || Subtype == "TrapNet" || Subtype == "Watermark" || Subtype == "Redact" || Subtype == "Projection" Unknown or not permitted Annotation type %1 @@ -1089,8 +921,8 @@ - Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key. - Subtype == "Popup" || F != null + Except for annotation dictionaries whose Subtype value is Popup, all annotation dictionaries shall contain the F key + Subtype == "Popup" || F != null A dictionary of %1 annotation does not contain F key @@ -1101,30 +933,25 @@ - If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0. + If present, the F key's Print flag bit shall be set to 1 and its Hidden, Invisible, ToggleNoView, and NoView flag bits shall be set to 0 F == null || ((F & 1) == 0 && (F & 2) == 0 && (F & 4) == 4 && (F & 32) == 0 && (F & 256) == 0) - Annotation flags are set the annotation to be hidden/invisible or non-printable - (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) + Annotation flags are set the annotation to be hidden/invisible or non-printable (F = %1, Print = %2, Hidden = %3, Invisible = %4, NoView = %5, ToggleNoView = %6) F - (F & 4) >> 2 - (F & 2) >> 1 + (F & 4) >> 2 + (F & 2) >> 1 (F & 1) - (F & 32) >> 5 - (F & 256) >> 8 + (F & 32) >> 5 + (F & 256) >> 8 - Every annotation (including those whose Subtype value is Widget, as used for form fields), - except for the two cases listed below, shall have at least one appearance dictionary: - Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to - the value at index 3 and the value at index 2 is equal to the value at index 4; - - annotations whose Subtype value is Popup, Link or Projection. - (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null + Every annotation (including those whose Subtype value is Widget, as used for form fields), except for the two cases listed below, shall have at least one appearance dictionary: Annotations where the value of the Rect key consists of an array where the value at index 1 is equal to the value at index 3 and the value at index 2 is equal to the value at index 4; - annotations whose Subtype value is Popup, Link or Projection + (width == 0 && height == 0) || Subtype == "Popup" || Subtype == "Link" || Subtype == "Projection" || AP != null An annotation does not contain an appearance dictionary @@ -1135,9 +962,8 @@ - For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as - its value shall contain only the N key. - AP == null || AP == "N" + For all annotation dictionaries containing an AP key, the appearance dictionary that it defines as its value shall contain only the N key + AP == null || AP == "N" Annotation's appearance dictionary contains entries %1 other than N @@ -1148,12 +974,10 @@ - If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, - the value of the N key shall be an appearance subdictionary. - AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) + If an annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, the value of the N key shall be an appearance subdictionary + AP != "N" || Subtype != "Widget" || FT != "Btn" || (N_type == "Dict" && appearance_size > 0) - An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of - Btn, but the value of the N key is %1 instead of appearance subdictionary + An annotation dictionary's Subtype key has a value of Widget and its FT key has a value of Btn, but the value of the N key is %1 instead of appearance subdictionary N_type @@ -1162,12 +986,10 @@ - If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated - with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream. - AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" + If an annotation dictionary's Subtype key has value other than Widget, or if FT key associated with Widget annotation has value other than Btn, the value of the N key shall be an appearance stream + AP != "N" || (Subtype == "Widget" && FT == "Btn") || N_type == "Stream" - An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the - value of the N key is not an appearance stream + An annotation dictionary's Subtype key has a value %1 and its FT key has a value %2, but the value of the N key is not an appearance stream Subtype FT @@ -1177,7 +999,7 @@ - A Widget annotation dictionary shall not contain the A key. + A Widget annotation dictionary shall not contain the A key containsA == false A Widget annotation contains A entry @@ -1187,7 +1009,7 @@ - The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false. + The NeedAppearances flag of the interactive form dictionary shall either not be present or shall be false NeedAppearances == null || NeedAppearances == false The interactive form dictionary contains the NeedAppearances flag with value true @@ -1197,8 +1019,7 @@ - The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, - if present, shall not contain the XFA key. + The document's interactive form dictionary that forms the value of the AcroForm key in the document's Catalog of a PDF/A-4 file, if present, shall not contain the XFA key containsXFA == false The interactive form dictionary contains the XFA key @@ -1208,7 +1029,7 @@ - A document's Catalog shall not contain the NeedsRendering key. + A document's Catalog shall not contain the NeedsRendering key NeedsRendering == false A document's Catalog contains NeedsRendering flag set to true @@ -1218,11 +1039,8 @@ - The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and - GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall - not be permitted. - S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || - S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" + The Launch, Sound, Movie, ResetForm, ImportData, Hide, Rendition, Trans, SetOCGState and GoTo3DView actions shall not be permitted. Additionally, the obsoleted set-state and no-op actions shall not be permitted + S == "GoTo" || S == "GoToR" || S == "GoToE" || S == "Thread" || S == "URI" || S == "Named" || S == "SubmitForm" || S == "JavaScript" || S == "RichMediaExecute" || S == "GoToDp" Unknown or not permitted Action type %1 @@ -1235,8 +1053,8 @@ - Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted. - N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" + Named actions other than NextPage, PrevPage, FirstPage, and LastPage shall not be permitted + N == "NextPage" || N == "PrevPage" || N == "FirstPage" || N == "LastPage" Unknown or not permitted named action %1 @@ -1249,14 +1067,10 @@ - If a document catalog dictionary or page dictionary or an annotation dictionary (other than a - Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) - shall only contain keys from the following list: E, X, D, U, Fo, and Bl. - parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && - elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == '' - - Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, - U, Fo, and Bl + If a document catalog dictionary or page dictionary or an annotation dictionary (other than a Widget annotation dictionary) include an AA entry, its value (which is an additional-actions dictionary) shall only contain keys from the following list: E, X, D, U, Fo, and Bl + parentType == 'WidgetAnnot' || parentType == 'FormField' || entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').length == 0 || entries == '' + + Additional-actions dictionary contains key(s) %1 not from the following permitted list: E, X, D, U, Fo, and Bl entries.split('&').filter(elem => elem != 'E' && elem != 'X' && elem != 'D' && elem != 'U' && elem != 'Fo' && elem != 'Bl').toString() @@ -1266,11 +1080,10 @@ - The document 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.2. + The document 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.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key @@ -1279,31 +1092,30 @@ - The bytes attribute shall not be used in the header of an XMP packet. + The bytes attribute shall not be used in the header of an XMP packet bytes == null - The XMP Package contains bytes attribute. + The XMP Package contains bytes attribute - The encoding attribute shall not be used in the header of an XMP packet. + The encoding attribute shall not be used in the header of an XMP packet encoding == null - The XMP Package contains encoding attribute. + The XMP Package contains encoding attribute - All content of all XMP packets located in any metadata stream present in the PDF shall be - well-formed as defined by XMP (ISO 16684-1). + All content of all XMP packets located in any metadata stream present in the PDF shall be well-formed as defined by XMP (ISO 16684-1) isSerializationValid - A metadata stream is serialized incorrectly and can not be parsed. + A metadata stream is serialized incorrectly and can not be parsed @@ -1312,7 +1124,7 @@ - All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8. + All metadata streams present in the PDF shall conform to the XMP Specification. The XMP package must be encoded as UTF-8 actualEncoding == "UTF-8" The XMP package uses encoding %1 different from UTF-8 @@ -1326,21 +1138,20 @@ - The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. - The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/". + The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema. The PDF/A Identification schema defined in Table 2 uses the namespace URI "http://www.aiim.org/pdfa/ns/id/" Identification_size == 1 - The document metadata stream doesn't contains PDF/A Identification Schema. + The document metadata stream doesn't contains PDF/A Identification Schema - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms. + The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms part == 4 - The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file. + The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file part @@ -1349,10 +1160,10 @@ - A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F. - conformance == "F" + A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F + conformance == "F" - The "conformance" property of the PDF/A Identification Schema is %1 instead of "F" for PDF/A-4F conforming file. + The "conformance" property of the PDF/A Identification Schema is %1 instead of "F" for PDF/A-4F conforming file conformance @@ -1364,7 +1175,7 @@ Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid - partPrefix == null || partPrefix == "pdfaid" + partPrefix == null || partPrefix == "pdfaid" Property part of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1375,10 +1186,10 @@ - The value of pdfaid:rev shall be the four digit year. + The value of pdfaid:rev shall be the four digit year /^\d{4}$/.test(rev) - The value of pdfaid:rev (%1) not the four digit year. + The value of pdfaid:rev (%1) not the four digit year rev @@ -1388,7 +1199,7 @@ Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid - revPrefix == null || revPrefix == "pdfaid" + revPrefix == null || revPrefix == "pdfaid" Property rev of the PDF/A Identification Schema has invalid namespace prefix %1 @@ -1399,8 +1210,7 @@ - The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. - If the MIME type is not known, the value "application/octet-stream" shall be used. + The embedded file stream dictionary shall include a valid MIME type value for the Subtype key. If the MIME type is not known, the value "application/octet-stream" shall be used Subtype != null && /^[-\w+\.]+\/[-\w+\.]+$/.test(Subtype) MIME type %1 of an embedded file is missing or invalid @@ -1417,8 +1227,7 @@ The file specification dictionary for an embedded file shall contain the F and UF keys containsEF == false || (F != null && UF != null) - The file specification dictionary for an embedded file does not contain either F or UF key - (F = %1, UF = %2) + The file specification dictionary for an embedded file does not contain either F or UF key (F = %1, UF = %2) F UF @@ -1428,8 +1237,7 @@ - Each embedded file’s file specification dictionary shall contain an AFRelationship key - (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF. + Each embedded file’s file specification dictionary shall contain an AFRelationship key (ISO 32000-2, 7.11.3) that describes how this embedded file relates to the content of the PDF containsEF == false || AFRelationship != null The file specification dictionary for an embedded file does not contain the AFRelationship key @@ -1441,12 +1249,10 @@ - A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the - document catalog dictionary. + A PDF/A-4f conforming file shall contain an EmbeddedFiles key in the name dictionary of the document catalog dictionary containsEmbeddedFiles == true - A PDF/A-4f conforming file does not contain an EmbeddedFiles key in the name dictionary of the - document catalog dictionary. + A PDF/A-4f conforming file does not contain an EmbeddedFiles key in the name dictionary of the document catalog dictionary @@ -1455,8 +1261,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null Missing Name entry of the optional content configuration dictionary @@ -1466,8 +1271,7 @@ - Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration - dictionaries within the PDF/A-4 file. + Each optional content configuration dictionary shall contain the Name key, whose value shall be unique amongst all optional content configuration dictionaries within the PDF/A-4 file hasDuplicateName == false Optional content configuration dictionary has duplicated name %1 @@ -1479,8 +1283,7 @@ - If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references - to all OCGs in the conforming file. + If an optional content configuration dictionary contains the Order key, the array which is the value of this Order key shall contain references to all OCGs in the conforming file OCGsNotContainedInOrder == null Optional content group(s) %1 not presented in the Order entry of the optional content configuration dictionary @@ -1526,17 +1329,17 @@ null outputColorSpace - + null - outputColorSpace + ICCProfileMD5 null destOutputProfileIndirect - + null - ICCProfileMD5 + outputColorSpace null diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml index 0ac0cf87..2b0dd566 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t01.xml @@ -2,16 +2,16 @@
ISO 14289-1:2014 - 5 Version identification - PDF/UA Identification Schema - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema
- + - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema UAIdentification_size == 1 - The document metadata stream doesn't contains PDF/UA Identification Schema. + The document metadata stream doesn't contains PDF/UA Identification Schema diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml index c6302a3a..1d52a880 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml @@ -3,16 +3,16 @@
ISO 14289-1:2014 - 5 Version identification - Part number The value of pdfuaid:part shall be the part number of the International Standard to which the file - conforms. + conforms
- + - The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms part == 1 - The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file. + The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file part diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml index e85b89ec..a752a143 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml @@ -6,7 +6,7 @@
- + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid partPrefix == null || partPrefix == "pdfuaid" diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml index a772fbec..8114796d 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml @@ -6,7 +6,7 @@
- + Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid amdPrefix == null || amdPrefix == "pdfuaid" diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml index b97886e1..7dd9e45a 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml @@ -6,7 +6,7 @@
- + Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid corrPrefix == null || corrPrefix == "pdfuaid" diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml index 9e7cc511..bb9124fe 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml @@ -6,7 +6,7 @@
- + Content marked as Artifact should not present inside tagged content tag != 'Artifact' || parentStructureTag == null diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml index c72181cf..def29346 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml @@ -6,7 +6,7 @@
- + Tagged content should not present inside content marked as Artifact parentStructureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml index a494844c..aafe2261 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml @@ -6,7 +6,7 @@
- + Content shall be marked as Artifact or tagged as real content parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml index 35d941c9..18bbe954 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t04.xml @@ -6,7 +6,7 @@
- + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) Suspects != true diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml index c0d3ccc5..e832f6b3 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml @@ -5,16 +5,16 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another - non-standard type, but eventually the mapping shall terminate at a standard type. + non-standard type, but eventually the mapping shall terminate at a standard type
- + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another - non-standard type, but eventually the mapping shall terminate at a standard type. + non-standard type, but eventually the mapping shall terminate at a standard type
circularMappingExist == true Non-standard structure type %1 is not mapped to a standard type diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml index f2f97165..4950a01a 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t06.xml @@ -6,7 +6,7 @@
- + A circular mapping shall not exist circularMappingExist != true diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml index 93f777b8..44aaa837 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.1 General - Remapped standard types - Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped
- + - Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped isRemappedStandardType == false Standard type %1 is remapped diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml index b5e9a7b7..6ed22f7b 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t08.xml @@ -2,16 +2,16 @@
ISO 14289-1:2014 - 7.1 General - Metadata key in the Catalog - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2
- + - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml index e6afc406..9da52dc6 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t09.xml @@ -4,15 +4,15 @@ ISO 14289-1:2014 - 7.1 General - Dc title The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which - clearly identifies the document. + clearly identifies the document
- + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which - clearly identifies the document. + clearly identifies the document dc_title != null Metadata stream does not contain dc:title diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml index dfd16956..917c7860 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t10.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.1 General - DisplayDocTitle The document catalog dictionary shall include a ViewerPreferences dictionary containing a - DisplayDocTitle key, whose value shall be true. + DisplayDocTitle key, whose value shall be true
- + The document catalog dictionary shall include a ViewerPreferences dictionary containing a - DisplayDocTitle key, whose value shall be true. + DisplayDocTitle key, whose value shall be true DisplayDocTitle == true ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t11.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t11.xml index 6e9d79c9..fb8fa539 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t11.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t11.xml @@ -3,15 +3,15 @@
ISO 14289-1:2014 - 7.1 General - StructTreeRoot 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-1:2008, 14.7. + StructTreeRoot entry of the document catalog dictionary, as described in ISO 32000-1:2008, 14.7
- + 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-1:2008, 14.7. + as described in ISO 32000-1:2008, 14.7 StructTreeRoot_size == 1 StructTreeRoot entry is not present in the document catalog diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml index cfe55690..7ef51532 100644 --- a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml +++ b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t01.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.10 Optional content - Name key present Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + value of the Configs key in the OCProperties dictionary, shall contain the Name key
- + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary diff --git a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml index 0b4a80ee..9ebfa69f 100644 --- a/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml +++ b/PDF_UA/1/7.10 Optional content/verapdf-profile-7-10-t02.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.10 Optional content - AS key - The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary
- + - The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary AS == null AS key is present in the optional content configuration dictionary diff --git a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml index da4e4a65..24a00ab0 100644 --- a/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml +++ b/PDF_UA/1/7.11 Embedded files/verapdf-profile-7-11-t01.xml @@ -6,7 +6,7 @@
- + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys containsEF == false || (F != null && F != '' && UF != null && UF != '') diff --git a/PDF_UA/1/7.15 XFA/verapdf-profile-7-15-t01.xml b/PDF_UA/1/7.15 XFA/verapdf-profile-7-15-t01.xml index 56befbb1..9e4cf7ad 100644 --- a/PDF_UA/1/7.15 XFA/verapdf-profile-7-15-t01.xml +++ b/PDF_UA/1/7.15 XFA/verapdf-profile-7-15-t01.xml @@ -6,7 +6,7 @@
- + Dynamic XFA forms shall not be used dynamicRender != 'required' diff --git a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml index 6633d820..b5bd322d 100644 --- a/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml +++ b/PDF_UA/1/7.16 Security/verapdf-profile-7-16-t01.xml @@ -3,23 +3,22 @@
ISO 14289-1:2014 - 7.16 Security - P key An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, - 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. + 7.6.3.2, Table 21). The 10th bit position of the P key shall be true
- + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, - 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. + 7.6.3.2, Table 21). The 10th bit position of the P key shall be true P != null && (P & 512) == 512 The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false - (P = %1, 10th bit = %2) - + (P = %1, 10th bit = %2) P - P != null ? (P & 512) >> 9 : null + P != null ? (P & 512) >> 9 : null diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml index 99a9e631..2e83f975 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml @@ -6,7 +6,7 @@
- + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml index 52682cfb..07b620cf 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml @@ -8,7 +8,7 @@
- + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml index c6634850..a5f3993c 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml @@ -8,7 +8,7 @@
- + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions diff --git a/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml index 40730cde..2605c3de 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.2 Annotation types/verapdf-profile-7-18-2-t01.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.2 Annotation types - TrapNext - Annotations of subtype TrapNet shall not be permitted. + Annotations of subtype TrapNet shall not be permitted
- + - Annotations of subtype TrapNet shall not be permitted. + Annotations of subtype TrapNet shall not be permitted isOutsideCropBox == true || (F & 2) == 2 An annotation of subtype TrapNet exists diff --git a/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml index 02aa859f..8960ed11 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml @@ -2,16 +2,16 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.3 Tab order - Tabs in page with annotations - Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S
- + - Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S annots_size == 0 || Tabs == 'S' - A page containing an annotation contains a Tabs key with value %1 instead of S. + A page containing an annotation contains a Tabs key with value %1 instead of S Tabs diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml index f27f50d6..d6aadba1 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.4 Forms - Widget annotation - A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340
- + - A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 A Widget annotation is artifact or is nested within %1 tag (standard type = %2) instead of Form diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml index 3b11d29b..43485741 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t02.xml @@ -4,19 +4,20 @@ ISO 14289-1:2014 - 7.18 Annotations - 7.18.4 Forms - Widget annotation If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation - per ISO 32000-1:2008, 14.8.4.5, Table 340. + per ISO 32000-1:2008, 14.8.4.5, Table 340
- + If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation - per ISO 32000-1:2008, 14.8.4.5, Table 340. + per ISO 32000-1:2008, 14.8.4.5, Table 340 roleAttribute != null || hasOneInteractiveChild == true The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation + diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml index d4915de6..d47af51e 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.5 Links - Link annotation - Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element
- + - Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml index 0dcefb15..76209c87 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t02.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.5 Links - Contents key - Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3
- + - Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3 (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 A link annotation does not include an alternate description in the Contents Key diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml index d18a6ca4..c5dc8fc4 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t01.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.6.2 Media clip data - CT in media clip dictionary In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) - is required. + is required
- + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) - is required. + is required CT != null CT key is missing from the media clip data dictionary diff --git a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml index c71fe600..d415e512 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.6 Media/7.18.6.2 Media clip data/verapdf-profile-7-18-6-2-t02.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.6.2 Media clip data - Alt in media clip dictionary In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) - is required. + is required
- + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) - is required. + is required hasCorrectAlt == true Alt key (value %1) is missing from the media clip data dictionary or has incorrect value diff --git a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml index 61ca365f..eacd2cae 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.8 PrinterMark/verapdf-profile-7-18-8-t01.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.8 PrinterMark - Logical structure PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page - elements as defined in ISO 32000-1:2008, 14.8.2.2.3. + elements as defined in ISO 32000-1:2008, 14.8.2.2.3
- + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page - elements as defined in ISO 32000-1:2008, 14.8.2.2.3. + elements as defined in ISO 32000-1:2008, 14.8.2.2.3 structParentType == null || isOutsideCropBox == true || (F & 2) == 2 A PrinterMark annotation is included in logical structure diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml index 9c5aecf3..ce4c2f3a 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t02.xml @@ -6,7 +6,7 @@
- + Natural language in the Outline entries shall be determined gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml index 551269cc..c4440993 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml @@ -2,11 +2,11 @@
ISO 14289-1:2014 - 7.2 Text - Table structure - A table-related structure element should used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337. + A table-related structure element should used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337
- + Table element may contain only TR, THead, TBody, TFoot and Caption elements kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' @@ -22,7 +22,7 @@ - + TR element should be contained in Table, THead, TBody or TFoot element /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) @@ -36,7 +36,7 @@ - + THead element should be contained in Table element parentStandardType == 'Table' @@ -50,7 +50,7 @@ - + TBody element should be contained in Table element parentStandardType == 'Table' @@ -64,7 +64,7 @@ - + TFoot element should be contained in Table element parentStandardType == 'Table' @@ -78,7 +78,7 @@ - + TH element should be contained in TR element parentStandardType == 'TR' @@ -92,7 +92,7 @@ - + TD element should be contained in TR element parentStandardType == 'TR' @@ -106,7 +106,7 @@ - + TR element may contain only TH and TD elements /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' @@ -120,7 +120,7 @@ - + Table element should contain zero or one THead kid kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 @@ -132,7 +132,7 @@ - + Table element should contain zero or one TFoot kid kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 @@ -144,7 +144,7 @@ - + If Table element contains TFoot kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || @@ -157,7 +157,7 @@ - + If Table element contains THead kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || @@ -170,7 +170,7 @@ - + Table cell shall not have intersection with other cells hasIntersection != true diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml index 4dbbfd40..80419087 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t16.xml @@ -6,7 +6,7 @@
- + Table element may contain a Caption element as its first or last kid kidsStandardTypes.indexOf('&Caption&') < 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml index c851b919..cecc3a6e 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml @@ -2,11 +2,11 @@
ISO 14289-1:2014 - 7.2 Text - List structure - A list-related structure element should used in a way that conform to Table 336 in ISO 32000-1. + A list-related structure element should used in a way that conform to Table 336 in ISO 32000-1
- + LI element should be contained in L element parentStandardType == 'L' @@ -20,7 +20,7 @@ - + LBody element should be contained in LI element parentStandardType == 'LI' @@ -34,7 +34,7 @@ - + L element may contain only L, LI and Caption elements kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' @@ -50,7 +50,7 @@ - + LI element may contain only Lbl and LBody elements /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml index e9fbc8f6..340a9734 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t21.xml @@ -6,7 +6,7 @@
- + Natural language for text in ActualText attribute shall be determined ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml index 8571c78d..39cce47a 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t22.xml @@ -6,7 +6,7 @@
- + Natural language for text in Alt attribute shall be determined Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml index 518fb4f0..f6e465ad 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t23.xml @@ -6,7 +6,7 @@
- + Natural language for text in E attribute shall be determined E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml index 97e390cd..54d13580 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml @@ -7,7 +7,7 @@
- + Natural language in the Contents entry for annotations shall be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml index 37219f61..d9b3acb7 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t25.xml @@ -6,7 +6,7 @@
- + Natural language in the TU key for form fields shall be determined TU == null || Lang_size != 0 || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml index 1a4e14fd..b09ee52b 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml @@ -2,11 +2,11 @@
ISO 14289-1:2014 - 7.2 Text - TOC structure - A TOC-related structure element should used in a way that conform to Table 333 in ISO 32000-1. + A TOC-related structure element should used in a way that conform to Table 333 in ISO 32000-1
- + TOCI element should be contained in TOC element parentStandardType == 'TOC' @@ -20,7 +20,7 @@ - + TOC element may contain only TOC, TOCI and Caption elements kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml index 081bcf70..b2b33d2c 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t28.xml @@ -6,7 +6,7 @@
- + TOC element may contain a Caption element only as its first kid kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml index 726c732b..4671a29a 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml @@ -4,15 +4,15 @@ ISO 14289-1:2014 - 7.2 Text - Natural language specification 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-1:2008, 14.9.2. - A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. + A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages
- + 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-1:2008, 14.9.2. - A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. + A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) Value %1 of the Lang entry is not Language-Tag diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml index ff38c512..29e8cef1 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml @@ -6,7 +6,7 @@
- + Natural language for text in ActualText attribute in Span Marked Content shall be determined tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml index 42c2f8c8..c60e7588 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml @@ -6,7 +6,7 @@
- + Natural language for text in Alt attribute in Span Marked Content shall be determined tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml index 8400d438..eed0d3e6 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml @@ -6,7 +6,7 @@
- + Natural language for text in E attribute in Span Marked Content shall be determined tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml index 5e59b92f..623768ff 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml @@ -6,7 +6,7 @@
- + Natural language for document metadata shall be determined xDefault == false || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml index 0ad7852d..aafa6047 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t34.xml @@ -6,7 +6,7 @@
- + Natural language for text in page content shall be determined gSizeCatalogLang != 0 || Lang != null diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml index 2c48c911..db4ef5fc 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml @@ -2,11 +2,11 @@
ISO 14289-1:2014 - 7.2 Text - Table structure - A table-related structure element should used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337. + A table-related structure element should used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337
- + THead element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' @@ -20,7 +20,7 @@ - + TBody element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' @@ -34,7 +34,7 @@ - + TFoot element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml index 5ade3ee8..d08148b3 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t39.xml @@ -6,7 +6,7 @@
- + Table element may contain only one Caption element kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml index e6f805bf..44ba5230 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t40.xml @@ -6,7 +6,7 @@
- + L element may contain a Caption element only as its first kid kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml index 8c2ef763..48cf3f8e 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t41.xml @@ -6,7 +6,7 @@
- + Table columns shall have the same number of rows (taking into account row spans) numberOfColumnWithWrongRowSpan == null diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml index 83121e2d..76662fec 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t42.xml @@ -6,7 +6,7 @@
- + Table rows shall have the same number of columns (taking into account column spans) numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml index 0a141a12..594e7e4a 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t43.xml @@ -6,7 +6,7 @@
- + Table rows shall have the same number of columns (taking into account column spans) numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null diff --git a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml index 75659ea1..9bb299f3 100644 --- a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml +++ b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t01.xml @@ -6,7 +6,7 @@
- + A conforming file shall not contain any reference XObjects containsRef == false diff --git a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml index e5d7221b..1ea2c92e 100644 --- a/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml +++ b/PDF_UA/1/7.20 XObjects/verapdf-profile-7-20-t02.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.20 XObjects - MCID The content of Form XObjects shall be incorporated into structure elements according to - ISO 32000-1:2008, 14.7.2. + ISO 32000-1:2008, 14.7.2
- + The content of Form XObjects shall be incorporated into structure elements according to - ISO 32000-1:2008, 14.7.2. + ISO 32000-1:2008, 14.7.2 isUniqueSemanticParent == true Form XObject contains MCIDs and is referenced more than once diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml index 06dd387c..07d04ea0 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.1 General/verapdf-profile-7-21-3-1-t01.xml @@ -7,18 +7,18 @@ - If the Encoding key in the Type 0 font dictionary is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap
- + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. + the CIDSystemInfo dictionary of the CIDFont shall be less than or equal to the Supplement key in the CIDSystemInfo dictionary of the CMap cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml index ca2d15bb..68549949 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.2 CIDFonts/verapdf-profile-7-21-3-2-t01.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CIDToGIDMap ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117
- + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + CIDToGIDMap entry that shall be a stream mapping from CIDs to glyph indices or the name Identity, as described in ISO 32000-1:2008, 9.7.4, Table 117 Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml index 9c25b4e6..5e00c933 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t01.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. + in ISO 32000-1:2008, 9.7.5
- + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. + in ISO 32000-1:2008, 9.7.5 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" || diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml index d1c2e5f4..e516d032 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t02.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - WMode 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. + value in the embedded CMap stream
- + 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. + in the embedded CMap stream WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical diff --git a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml index fe61aa98..d161df4d 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.3 Composite fonts/7.21.3.3 CMaps/verapdf-profile-7-21-3-3-t03.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.3 Composite fonts - CMaps - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118
- + - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 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" || diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml index 50bff49a..8192d450 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t01.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - General - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9
- + - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml index c36e3486..de7e1f33 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.1 General/verapdf-profile-7-21-4-1-t02.xml @@ -6,17 +6,17 @@ 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 according to ISO 32000-1:2008, 9.6.6.4 - without the use of a non-standard mapping chosen by the conforming processor. + without the use of a non-standard mapping chosen by the conforming processor
- + 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 according to ISO 32000-1:2008, 9.6.6.4 - without the use of a non-standard mapping chosen by the conforming processor. + without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml index 250a11d7..554a3360 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t01.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CharSet entry in Type1 fonts If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not
- + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program diff --git a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml index 6beb75b9..65b25114 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.4 Embedding/7.21.4.2 Subset embedding/verapdf-profile-7-21-4-2-t02.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.4 Embedding - CIDSet entry in CID Fonts If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + regardless of whether a CID in the font is referenced or used by the PDF or not
- + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + regardless of whether a CID in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset diff --git a/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml index 47ff201d..fb83f764 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.5 Font metrics/verapdf-profile-7-21-5-t01.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.5 Font metrics - Font metrics For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. + font program shall be consistent
- + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. + font program shall be consistent renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml index 34f39485..4d0d7ba1 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t01.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps for non-symbolic TrueType fonts For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + cmap entries such that all necessary glyph lookups can be carried out
- + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + cmap entries such that all necessary glyph lookups can be carried out isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml index d7537fa9..71957452 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t02.xml @@ -7,18 +7,18 @@ 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. + Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
- + 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. + Unicode (3,1 – Platform ID=3, Encoding ID=1) encoding in the 'cmap' table
isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml index 681038de..65f0f3b5 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t03.xml @@ -6,7 +6,7 @@
- + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary isSymbolic == false || Encoding == null diff --git a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml index daba84c9..d0127e7d 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.6 Character encodings/verapdf-profile-7-21-6-t04.xml @@ -4,15 +4,15 @@ ISO 14289-1:2014 - 7.21 Fonts - 7.21.6 Character encodings - cmaps in the symbolic TrueType font program The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + Encoding ID=0) encoding
- + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + Encoding ID=0) encoding isSymbolic == false || nrCmaps == 1 || cmap30Present == true The embedded font program for a symbolic TrueType font contains %1 cmap subtables and diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml index 390dee57..dd871b7d 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t01.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Unicode mapping 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 ISO 14289-1, 7.21.7. + or other mechanisms as defined in ISO 14289-1, 7.21.7
- + 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 ISO 14289-1, 7.21.7. + or other mechanisms as defined in ISO 14289-1, 7.21.7 toUnicode != null The glyph can not be mapped to Unicode diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml index 086692e7..712ae239 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.7 Unicode character maps - Valid Unicode values - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE
- + - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE diff --git a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml index 195eeca3..01ee9848 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.8 Use of .notdef glyph/verapdf-profile-7-21-8-t01.xml @@ -3,14 +3,14 @@
ISO 14289-1:2014 - 7.21 Fonts - 7.21.8 Use of .notdef glyph - Use of .notdef glyph A PDF/UA compliant document 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. + regardless of text rendering mode, in any content stream
- + A PDF/UA compliant document 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. + operators, regardless of text rendering mode, in any content stream name != ".notdef" The document contains a reference to the .notdef glyph diff --git a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml index 567edd95..73c487d5 100644 --- a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml +++ b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml @@ -7,7 +7,7 @@
- + Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 diff --git a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml index 7306ddbe..6f682c1c 100644 --- a/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml +++ b/PDF_UA/1/7.4 Headings/7.4.2 Numbered headings/verapdf-profile-7-4-2-t01.xml @@ -10,11 +10,11 @@ (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics - require it. + require it
- + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: @@ -24,7 +24,7 @@ (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics - require it. + require it hasCorrectNestingLevel == true Heading level %1 is skipped in a descending sequence of header levels diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml index 834ffe7f..3dc9e7bc 100644 --- a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - Number of H - Each node in the tag tree shall contain at most one child H tag. + Each node in the tag tree shall contain at most one child H tag
- + - Each node in the tag tree shall contain at most one child H tag. + Each node in the tag tree shall contain at most one child H tag kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 A node contains more than one H tag diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml index a1e4b35e..ae797cce 100644 --- a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t02.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn - All documents shall be either strongly or weakly structured, but not both. + All documents shall be either strongly or weakly structured, but not both
- + - All documents shall be either strongly or weakly structured, but not both. + All documents shall be either strongly or weakly structured, but not both usesHn == false Document uses both H and H# tags diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml index a2efb70c..2b0cc148 100644 --- a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t03.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn - All documents shall be either strongly or weakly structured, but not both. + All documents shall be either strongly or weakly structured, but not both
- + - All documents shall be either strongly or weakly structured, but not both. + All documents shall be either strongly or weakly structured, but not both usesH == false Document uses both H and H# tags diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml index 63b13c56..8f9e2240 100644 --- a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml +++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml @@ -7,14 +7,15 @@
- + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders != '' TD does not contain Headers attribute, and Headers for this table cell cannot be determined - via algorithm from ISO32000-2, 14.8.4.8.3. + via algorithm from ISO 32000-2, 14.8.4.8.3 + diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml index a6c40614..9247da18 100644 --- a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml +++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml @@ -7,14 +7,14 @@
- + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders == '' TD references undefined Header(s) %1, and Headers for this table cell cannot be determined - via algorithm from ISO32000-2, 14.8.4.8.3. + via algorithm from ISO 32000-2, 14.8.4.8.3 unknownHeaders diff --git a/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml index b3176544..493da114 100644 --- a/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml +++ b/PDF_UA/1/7.7 Mathematical expressions/verapdf-profile-7-7-t01.xml @@ -7,7 +7,7 @@
- + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml index 12eae633..4a9d8787 100644 --- a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml +++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t01.xml @@ -6,7 +6,7 @@
- + Note tag shall have ID entry noteID != null && noteID != '' diff --git a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml index 19600392..3c856a24 100644 --- a/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml +++ b/PDF_UA/1/7.9 Notes and references/verapdf-profile-7-9-t02.xml @@ -6,7 +6,7 @@
- + Each Note tag shall have unique ID key hasDuplicateNoteID == false diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 8917f0a4..d02708ea 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -6,32 +6,32 @@
- + - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema UAIdentification_size == 1 - The document metadata stream doesn't contains PDF/UA Identification Schema. + The document metadata stream doesn't contains PDF/UA Identification Schema - + - The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms part == 1 - The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file. + The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file part - + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - partPrefix == null || partPrefix == "pdfuaid" + partPrefix == null || partPrefix == "pdfuaid" Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 @@ -40,10 +40,10 @@ - + Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - amdPrefix == null || amdPrefix == "pdfuaid" + amdPrefix == null || amdPrefix == "pdfuaid" Property amd of the PDF/UA Identification Schema has invalid namespace prefix %1 @@ -52,10 +52,10 @@ - + Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - corrPrefix == null || corrPrefix == "pdfuaid" + corrPrefix == null || corrPrefix == "pdfuaid" Property corr of the PDF/UA Identification Schema has invalid namespace prefix %1 @@ -64,7 +64,7 @@ - + Content marked as Artifact should not present inside tagged content tag != 'Artifact' || parentStructureTag == null @@ -76,7 +76,7 @@
- + Tagged content should not present inside content marked as Artifact parentStructureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 @@ -88,7 +88,7 @@ - + Content shall be marked as Artifact or tagged as real content parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 @@ -98,7 +98,7 @@ - + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) Suspects != true @@ -110,12 +110,9 @@ - + - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, - as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. - This mapping may be indirect; within the role map a non-standard type can map directly to another - non-standard type, but eventually the mapping shall terminate at a standard type. + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type circularMappingExist == true Non-standard structure type %1 is not mapped to a standard type @@ -127,7 +124,7 @@ - + A circular mapping shall not exist circularMappingExist != true @@ -139,9 +136,9 @@ - + - Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped isRemappedStandardType == false Standard type %1 is remapped @@ -153,23 +150,21 @@ - + - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key - + - The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the - recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which - clearly identifies the document. + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document dc_title != null Metadata stream does not contain dc:title @@ -177,15 +172,12 @@ - + - The document catalog dictionary shall include a ViewerPreferences dictionary containing a - DisplayDocTitle key, whose value shall be true. + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true DisplayDocTitle == true - ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is - set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, - DisplayDocTitle = %2) + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2) ViewerPreferences DisplayDocTitle @@ -193,11 +185,9 @@ - + - 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-1:2008, 14.7. + 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-1:2008, 14.7 StructTreeRoot_size == 1 StructTreeRoot entry is not present in the document catalog @@ -207,7 +197,7 @@ - + Natural language in the Outline entries shall be determined gSizeCatalogLang != 0 @@ -217,11 +207,10 @@ - + Table element may contain only TR, THead, TBody, TFoot and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' - && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption @@ -233,7 +222,7 @@ - + TR element should be contained in Table, THead, TBody or TFoot element /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) @@ -247,7 +236,7 @@ - + THead element should be contained in Table element parentStandardType == 'Table' @@ -261,7 +250,7 @@ - + TBody element should be contained in Table element parentStandardType == 'Table' @@ -275,7 +264,7 @@ - + TFoot element should be contained in Table element parentStandardType == 'Table' @@ -289,7 +278,7 @@ - + TH element should be contained in TR element parentStandardType == 'TR' @@ -303,7 +292,7 @@ - + TD element should be contained in TR element parentStandardType == 'TR' @@ -317,7 +306,7 @@ - + TR element may contain only TH and TD elements /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' @@ -331,7 +320,7 @@ - + Table element should contain zero or one THead kid kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 @@ -343,7 +332,7 @@ - + Table element should contain zero or one TFoot kid kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 @@ -355,11 +344,10 @@ - + If Table element contains TFoot kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains TFoot kid, but not contains TBody kids @@ -368,11 +356,10 @@ - + If Table element contains THead kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains THead kid, but not contains TBody kids @@ -381,7 +368,7 @@ - + Table cell shall not have intersection with other cells hasIntersection != true @@ -393,7 +380,7 @@ - + Table element may contain a Caption element as its first or last kid kidsStandardTypes.indexOf('&Caption&') < 0 @@ -407,7 +394,7 @@ - + LI element should be contained in L element parentStandardType == 'L' @@ -421,7 +408,7 @@ - + LBody element should be contained in LI element parentStandardType == 'LI' @@ -435,11 +422,10 @@ - + L element may contain only L, LI and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' - && elem != 'Caption').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' L element contains %1 element(s) instead of L, LI or Caption @@ -451,7 +437,7 @@ - + LI element may contain only Lbl and LBody elements /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' @@ -465,7 +451,7 @@ - + Natural language for text in ActualText attribute shall be determined ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 @@ -475,7 +461,7 @@ - + Natural language for text in Alt attribute shall be determined Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 @@ -485,7 +471,7 @@ - + Natural language for text in E attribute shall be determined E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 @@ -495,19 +481,17 @@ - + - Natural language in the Contents entry for annotations shall be - determined + Natural language in the Contents entry for annotations shall be determined Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 - Natural language in the Contents entry for annotations cannot be - determined + Natural language in the Contents entry for annotations cannot be determined - + Natural language in the TU key for form fields shall be determined TU == null || Lang_size != 0 || gSizeCatalogLang != 0 @@ -517,7 +501,7 @@ - + TOCI element should be contained in TOC element parentStandardType == 'TOC' @@ -531,11 +515,10 @@ - + TOC element may contain only TOC, TOCI and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' - && elem != 'Caption').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' TOC element contains %1 element(s) instead of TOC, TOCI or Caption @@ -547,7 +530,7 @@ - + TOC element may contain a Caption element only as its first kid kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 @@ -561,11 +544,9 @@ - + - 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-1:2008, 14.9.2. - A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. + 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) Value %1 of the Lang entry is not Language-Tag @@ -578,7 +559,7 @@ - + Natural language for text in ActualText attribute in Span Marked Content shall be determined tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 @@ -588,7 +569,7 @@ - + Natural language for text in Alt attribute in Span Marked Content shall be determined tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 @@ -598,7 +579,7 @@ - + Natural language for text in E attribute in Span Marked Content shall be determined tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 @@ -608,7 +589,7 @@ - + Natural language for document metadata shall be determined xDefault == false || gSizeCatalogLang != 0 @@ -618,7 +599,7 @@ - + Natural language for text in page content shall be determined gSizeCatalogLang != 0 || Lang != null @@ -628,7 +609,7 @@ - + THead element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' @@ -642,7 +623,7 @@ - + TBody element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' @@ -656,7 +637,7 @@ - + TFoot element may contain only TR elements kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' @@ -670,7 +651,7 @@ - + Table element may contain only one Caption element kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 @@ -684,7 +665,7 @@ - + L element may contain a Caption element only as its first kid kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 @@ -698,7 +679,7 @@ - + Table columns shall have the same number of rows (taking into account row spans) numberOfColumnWithWrongRowSpan == null @@ -712,7 +693,7 @@ - + Table rows shall have the same number of columns (taking into account column spans) numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null @@ -726,7 +707,7 @@ - + Table rows shall have the same number of columns (taking into account column spans) numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null @@ -742,10 +723,9 @@ - + - Figure tags shall include an alternative representation or replacement text that represents the contents - marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 + Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 (Alt != null && Alt != '') || ActualText != null Figure structure element neither has an alternate description nor a replacement text @@ -755,17 +735,9 @@ - + - For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, - heading tags shall be used as follows: - (*) If any heading tags are used, H1 shall be the first. - (*) A document may use more than one instance of any specific tag level. For example, a tag level may - be repeated if document content requires it. - (*) If document semantics require a descending sequence of headers, such a sequence shall proceed - in strict numerical order and shall not skip an intervening heading level. - (*) A document may increment its heading sequence without restarting at H1 if document semantics - require it. + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it hasCorrectNestingLevel == true Heading level %1 is skipped in a descending sequence of header levels @@ -777,9 +749,9 @@ - + - Each node in the tag tree shall contain at most one child H tag. + Each node in the tag tree shall contain at most one child H tag kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 A node contains more than one H tag @@ -787,9 +759,9 @@ - + - All documents shall be either strongly or weakly structured, but not both. + All documents shall be either strongly or weakly structured, but not both usesHn == false Document uses both H and H# tags @@ -797,9 +769,9 @@ - + - All documents shall be either strongly or weakly structured, but not both. + All documents shall be either strongly or weakly structured, but not both usesH == false Document uses both H and H# tags @@ -807,27 +779,24 @@ - + - If the table's structure is not determinable via Headers and IDs, - then structure elements of type TH shall have a Scope attribute + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders != '' - TD does not contain Headers attribute, and Headers for this table cell cannot be determined - via algorithm from ISO32000-2, 14.8.4.8.3. + TD does not contain Headers attribute, and Headers for this table cell cannot be determined via algorithm from ISO 32000-2, 14.8.4.8.3 + - + - If the table's structure is not determinable via Headers and IDs, - then structure elements of type TH shall have a Scope attribute + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders == '' - TD references undefined Header(s) %1, and Headers for this table cell cannot be determined - via algorithm from ISO32000-2, 14.8.4.8.3. + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined via algorithm from ISO 32000-2, 14.8.4.8.3 unknownHeaders @@ -836,10 +805,9 @@ - + - All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, - 14.8.4.5 and shall have Alt or ActualText attributes + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes (Alt != null && Alt != '') || ActualText != null Formula structure element neither has an alternate description nor a replacement text @@ -849,7 +817,7 @@ - + Note tag shall have ID entry noteID != null && noteID != '' @@ -859,7 +827,7 @@ - + Each Note tag shall have unique ID key hasDuplicateNoteID == false @@ -871,10 +839,9 @@ - + - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary @@ -882,9 +849,9 @@ - + - The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary AS == null AS key is present in the optional content configuration dictionary @@ -892,13 +859,12 @@ - + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys containsEF == false || (F != null && F != '' && UF != null && UF != '') - The file specification dictionary for an embedded file does not contain either F or UF key or - at least one of the keys is empty (F = %1, UF = %2) + The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2) F UF @@ -906,7 +872,7 @@ - + Dynamic XFA forms shall not be used dynamicRender != 'required' @@ -916,30 +882,25 @@ - + - An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, - 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true P != null && (P & 512) == 512 - The file is encrypted but does not contain a P entry in its encryption dictionary or - the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false - (P = %1, 10th bit = %2) - + The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2) P - P != null ? (P & 512) >> 9 : null + P != null ? (P & 512) >> 9 : null - + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || - (F & 2) == 2 || structParentStandardType == 'Annot' + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' %1 annotation is artifact or is nested within %2 tag (standard type = %3) instead of Annot @@ -950,40 +911,31 @@ - + - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, - or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry - in the enclosing structure element - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' - || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || - (Alt != null && Alt != '') - - %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box - has neither Contents key nor an Alt entry in the enclosing structure element + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') + + %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element Subtype - + - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - shall have a TU key present or all its Widget annotations shall have alternative descriptions - (in the form of an Alt entry in the enclosing structure elements) + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt - entry in the enclosing structure element) + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) - + - Annotations of subtype TrapNet shall not be permitted. + Annotations of subtype TrapNet shall not be permitted isOutsideCropBox == true || (F & 2) == 2 An annotation of subtype TrapNet exists @@ -991,21 +943,21 @@ - + - Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S annots_size == 0 || Tabs == 'S' - A page containing an annotation contains a Tabs key with value %1 instead of S. + A page containing an annotation contains a Tabs key with value %1 instead of S Tabs - + - A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 A Widget annotation is artifact or is nested within %1 tag (standard type = %2) instead of Form @@ -1018,23 +970,21 @@ - + - If the Form element omits a Role attribute (Table 348), it shall have - only one child: an object reference (14.7.4.3) identifying the widget annotation - per ISO 32000-1:2008, 14.8.4.5, Table 340. + If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340 roleAttribute != null || hasOneInteractiveChild == true - The Form element omits a Role attribute and doesn't have only one child identifying - the widget annotation + The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation + - + - Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link @@ -1047,9 +997,9 @@ - + - Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3. + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3 (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 A link annotation does not include an alternate description in the Contents Key @@ -1059,10 +1009,9 @@ - + - In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) - is required. + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required CT != null CT key is missing from the media clip data dictionary @@ -1072,10 +1021,9 @@ - + - In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) - is required. + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required hasCorrectAlt == true Alt key (value %1) is missing from the media clip data dictionary or has incorrect value @@ -1087,10 +1035,9 @@ - + - PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page - elements as defined in ISO 32000-1:2008, 14.8.2.2.3. + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3 structParentType == null || isOutsideCropBox == true || (F & 2) == 2 A PrinterMark annotation is included in logical structure @@ -1100,7 +1047,7 @@ - + A conforming file shall not contain any reference XObjects containsRef == false @@ -1110,10 +1057,9 @@ - + - The content of Form XObjects shall be incorporated into structure elements according to - ISO 32000-1:2008, 14.7.2. + The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2 isUniqueSemanticParent == true Form XObject contains MCIDs and is referenced more than once @@ -1123,21 +1069,12 @@ - + - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && - CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, - CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) CIDFontOrdering CMapOrdering @@ -1149,10 +1086,9 @@ - + - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -1162,26 +1098,10 @@ - + - All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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" || - embeddedFile_size == 1 + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 A non-standard CMap %1 is not embedded @@ -1192,10 +1112,9 @@ - + - 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. + 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 WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical @@ -1206,25 +1125,10 @@ - + - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. - 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" + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" A CMap references another non-standard CMap %1 @@ -1235,9 +1139,9 @@ - + - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -1247,13 +1151,9 @@ - + - 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 according to ISO 32000-1:2008, 9.6.6.4 - without the use of a non-standard mapping chosen by the conforming processor. + 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 according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -1264,10 +1164,9 @@ - + - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -1275,10 +1174,9 @@ - + - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset @@ -1286,12 +1184,10 @@ - + - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -1301,10 +1197,9 @@ - + - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries @@ -1312,19 +1207,12 @@ - + - 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. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && - (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding containsDifferences @@ -1333,7 +1221,7 @@ - + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary isSymbolic == false || Encoding == null @@ -1343,25 +1231,21 @@ - + - The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either - exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains %1 cmap subtables and - does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) nrCmaps - + - 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 ISO 14289-1, 7.21.7. + 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 ISO 14289-1, 7.21.7 toUnicode != null The glyph can not be mapped to Unicode @@ -1371,20 +1255,19 @@ - + - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE - + - A PDF/UA compliant document 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. + A PDF/UA compliant document 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 name != ".notdef" The document contains a reference to the .notdef glyph @@ -1394,17 +1277,17 @@ - - false - true + + 0 + Lang_size false true - - 0 - Lang_size + + false + true diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 772a75e9..2ed6dcd5 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -64,10 +64,8 @@ - The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. - Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : - (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 contrastRatio = %1 @@ -78,9 +76,8 @@ - Font size is too small: text may not be resized without assistive technology - up to 200 percent without loss of content or functionality. - textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality + textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 textSize = %1 @@ -92,28 +89,7 @@ Document should not contain illegible font - fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && - fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && - fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && - fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && - fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && - fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && - fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && - fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && - fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && - fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && - fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && - fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && - fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && - fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && - fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && - fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && - fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && - fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && - fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && - fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && - fontName.indexOf('VladimirScript') == -1 && - (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) + fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) Document contains illegible font @@ -135,9 +111,7 @@ Links shall contain an alternate description via their Contents or Alt keys or in the text value - (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || - (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || - (Alt != null && Alt != '' && altIsLink == false) + (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false) A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value @@ -183,7 +157,7 @@ Incorrect use of a paragraph - correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' + correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' score = %1, correct type = %2 @@ -196,7 +170,7 @@ Incorrect use of a span - correctSemanticScore >= 0.75 || correctType == null + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -209,7 +183,7 @@ Incorrect use of a heading - correctSemanticScore >= 0.75 || correctType == null + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -222,7 +196,7 @@ Incorrect use of a numbered heading - correctSemanticScore >= 0.75 || correctType == null + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -235,11 +209,7 @@ Incorrect table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || - (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && - correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && - correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || - parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) score = %1, correct type = %2, structure id = %3 @@ -253,11 +223,7 @@ Missing table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || - (isTableElem == true) || (correctType != 'TD' && - correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && - correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || - parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) score = %1, correct type = %2, structure id = %3 @@ -413,9 +379,8 @@ - The structure type and attributes of list elements shall be semantically appropriate. - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && - correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) + The structure type and attributes of list elements shall be semantically appropriate + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) score = %1, correct type = %2, structure id = %3 @@ -428,11 +393,8 @@ - The structure type and attributes of a list shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || - correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + The structure type and attributes of a list shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -444,11 +406,8 @@ - The structure type and attributes of a list item shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || - correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || - correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + The structure type and attributes of a list item shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -460,11 +419,8 @@ - The structure type and attributes of a list body shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || - correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || - correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + The structure type and attributes of a list body shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -476,11 +432,8 @@ - A table element is incorrectly tagged as a list element or a list has the wrong numbering - hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && - correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && - correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && - standardType != 'Lbl' && standardType != 'LBody') + A table element is incorrectly tagged as a list element or a list has the wrong numbering + hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') score = %1, correct type = %2 @@ -505,7 +458,7 @@ - The structure type and attributes of a TOCI shall be semantically appropriate. + The structure type and attributes of a TOCI shall be semantically appropriate correctType != 'TOCI' || standardType == 'TOCI' score = %1, correct type = %2, structure id = %3 @@ -743,11 +696,10 @@ - TOCI text should be presented on a destination page. + TOCI text should be presented on a destination page errorCodes.split(',').filter(elem => elem == 1008).length == 0 - TOCI text is not found on a destination page %wrongDestinationPage%. - Possible destination page number(s): %possiblePageNumbers% + TOCI text is not found on a destination page %wrongDestinationPage%. Possible destination page number(s): %possiblePageNumbers% errorArguments.split(';;')[errorCodes.split(',') .findIndex(elem => elem == 1008)].split(';')[0] @@ -760,7 +712,7 @@ - TOCI should have a destination. + TOCI should have a destination errorCodes.split(',').filter(elem => elem == 1009).length == 0 TOCI doesn't have a destination. Possible destination page number(s): %1 @@ -774,7 +726,7 @@ - TOCI should have a correct page label. + TOCI should have a correct page label errorCodes.split(',').filter(elem => elem == 1010).length == 0 TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 @@ -788,7 +740,7 @@ - TOCI should have a correct numbering. + TOCI should have a correct numbering errorCodes.split(',').filter(elem => elem == 1011).length == 0 TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering% @@ -804,7 +756,7 @@ - List should contain list items. + List should contain list items errorCodes.split(',').filter(elem => elem == 1201).length == 0 List contains only one child - list @@ -847,70 +799,11 @@ The structure type and attributes of a heading shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1300).length == 0 - This node is the single child with content. One of its ancestor nodes should be tagged as heading - instead of this one + This node is the single child with content. One of its ancestor nodes should be tagged as heading instead of this one - - - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema. - UAIdentification_size == 1 - - The document metadata stream doesn't contains PDF/UA Identification Schema. - - - - - - - The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms. - part == 1 - - The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file. - - part - - - - - - - Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - partPrefix == null || partPrefix == "pdfuaid" - - Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 - - partPrefix - - - - - - - Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - amdPrefix == null || amdPrefix == "pdfuaid" - - Property amd of the PDF/UA Identification Schema has invalid namespace prefix %1 - - amdPrefix - - - - - - - Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - corrPrefix == null || corrPrefix == "pdfuaid" - - Property corr of the PDF/UA Identification Schema has invalid namespace prefix %1 - - corrPrefix - - - - Content marked as Artifact should not present inside tagged content @@ -959,10 +852,7 @@ - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, - as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. - This mapping may be indirect; within the role map a non-standard type can map directly to another - non-standard type, but eventually the mapping shall terminate at a standard type. + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type circularMappingExist == true Non-standard structure type %1 is not mapped to a standard type @@ -988,7 +878,7 @@ - Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped. + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped isRemappedStandardType == false Standard type %1 is remapped @@ -1002,10 +892,10 @@ - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2. + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 metadata_size == 1 - The document catalog dictionary doesn't contain metadata key. + The document catalog dictionary doesn't contain metadata key @@ -1014,9 +904,7 @@ - The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the - recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which - clearly identifies the document. + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document dc_title != null && dc_title != '' Metadata stream does not contain dc:title @@ -1026,13 +914,10 @@ - The document catalog dictionary shall include a ViewerPreferences dictionary containing a - DisplayDocTitle key, whose value shall be true. + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true DisplayDocTitle == true - ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is - set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, - DisplayDocTitle = %2) + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2) ViewerPreferences DisplayDocTitle @@ -1042,9 +927,7 @@ - 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-1:2008, 14.7. + 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-1:2008, 14.7 StructTreeRoot_size == 1 StructTreeRoot entry is not present in the document catalog @@ -1067,8 +950,7 @@ Table element may contain only TR, THead, TBody, TFoot and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' - && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption @@ -1229,8 +1111,7 @@ If Table element contains TFoot kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains TFoot kid, but not contains TBody kids @@ -1246,8 +1127,7 @@ If Table element contains THead kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 Table element contains THead kid, but not contains TBody kids @@ -1323,8 +1203,7 @@ L element may contain only L, LI and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' - && elem != 'Caption').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' L element contains %1 element(s) instead of L, LI or Caption @@ -1389,8 +1268,7 @@ Natural language in the Contents entry for annotations shall be determined Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 - Natural language in the Contents entry for annotations cannot be - determined + Natural language in the Contents entry for annotations cannot be determined @@ -1424,8 +1302,7 @@ TOC element may contain only TOC, TOCI and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' - && elem != 'Caption').length == 0 || kidsStandardTypes == '' + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' TOC element contains %1 element(s) instead of TOC, TOCI or Caption @@ -1457,9 +1334,7 @@ - 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-1:2008, 14.9.2. - A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages. + 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) Value %1 of the Lang entry is not Language-Tag @@ -1648,8 +1523,7 @@ - Figure tags shall include an alternative representation or replacement text that represents the contents - marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 + Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 (Alt != null && Alt != '') || ActualText != null Figure structure element neither has an alternate description nor a replacement text @@ -1661,15 +1535,7 @@ - For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, - heading tags shall be used as follows: - (*) If any heading tags are used, H1 shall be the first. - (*) A document may use more than one instance of any specific tag level. For example, a tag level may - be repeated if document content requires it. - (*) If document semantics require a descending sequence of headers, such a sequence shall proceed - in strict numerical order and shall not skip an intervening heading level. - (*) A document may increment its heading sequence without restarting at H1 if document semantics - require it. + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it hasCorrectNestingLevel == true Heading level %1 is skipped in a descending sequence of header levels @@ -1683,7 +1549,7 @@ - Each node in the tag tree shall contain at most one child H tag. + Each node in the tag tree shall contain at most one child H tag kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 A node contains more than one H tag @@ -1693,7 +1559,7 @@ - All documents shall be either strongly or weakly structured, but not both. + All documents shall be either strongly or weakly structured, but not both usesHn == false Document uses both H and H# tags @@ -1703,7 +1569,7 @@ - All documents shall be either strongly or weakly structured, but not both. + All documents shall be either strongly or weakly structured, but not both usesH == false Document uses both H and H# tags @@ -1713,12 +1579,11 @@ - If the table's structure is not determinable via Headers and IDs, - then structure elements of type TH shall have a Scope attribute + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders != '' - TD does not contain Headers attribute, and Headers for this table cell cannot be determined - via algorithm from ISO32000-2, 14.8.4.8.3. + TD does not contain Headers attribute, and Headers for this table cell cannot be determined via algorithm from ISO 32000-2, 14.8.4.8.3 + @@ -1726,12 +1591,10 @@ - If the table's structure is not determinable via Headers and IDs, - then structure elements of type TH shall have a Scope attribute + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders == '' - TD references undefined Header(s) %1, and Headers for this table cell cannot be determined - via algorithm from ISO32000-2, 14.8.4.8.3. + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined via algorithm from ISO 32000-2, 14.8.4.8.3 unknownHeaders @@ -1742,8 +1605,7 @@ - All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, - 14.8.4.5 and shall have Alt or ActualText attributes + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes (Alt != null && Alt != '') || ActualText != null Formula structure element neither has an alternate description nor a replacement text @@ -1777,8 +1639,7 @@ - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the - value of the Configs key in the OCProperties dictionary, shall contain the Name key. + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key Name != null && Name.length() > 0 Missing or empty Name entry of the optional content configuration dictionary @@ -1788,7 +1649,7 @@ - The AS key shall not appear in any optional content configuration dictionary. + The AS key shall not appear in any optional content configuration dictionary AS == null AS key is present in the optional content configuration dictionary @@ -1801,8 +1662,7 @@ The file specification dictionary for an embedded file shall contain the non-empty F and UF keys containsEF == false || (F != null && F != '' && UF != null && UF != '') - The file specification dictionary for an embedded file does not contain either F or UF key or - at least one of the keys is empty (F = %1, UF = %2) + The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2) F UF @@ -1822,17 +1682,13 @@ - An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, - 7.6.3.2, Table 21). The 10th bit position of the P key shall be true. + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true P != null && (P & 512) == 512 - The file is encrypted but does not contain a P entry in its encryption dictionary or - the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false - (P = %1, 10th bit = %2) - + The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2) P - P != null ? (P & 512) >> 9 : null + P != null ? (P & 512) >> 9 : null @@ -1842,8 +1698,7 @@ An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || - (F & 2) == 2 || structParentStandardType == 'Annot' + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' %1 annotation is artifact or is nested within %2 tag (standard type = %3) instead of Annot @@ -1856,15 +1711,10 @@ - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, - or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry - in the enclosing structure element - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' - || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || - (Alt != null && Alt != '') + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') - %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box - has neither Contents key nor an Alt entry in the enclosing structure element + %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element Subtype @@ -1873,21 +1723,17 @@ - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - shall have a TU key present or all its Widget annotations shall have alternative descriptions - (in the form of an Alt entry in the enclosing structure elements) + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt - entry in the enclosing structure element) + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) - Annotations of subtype TrapNet shall not be permitted. + Annotations of subtype TrapNet shall not be permitted isOutsideCropBox == true || (F & 2) == 2 An annotation of subtype TrapNet exists @@ -1897,10 +1743,10 @@ - Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S. + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S annots_size == 0 || Tabs == 'S' - A page containing an annotation contains a Tabs key with value %1 instead of S. + A page containing an annotation contains a Tabs key with value %1 instead of S Tabs @@ -1909,7 +1755,7 @@ - A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340. + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 A Widget annotation is artifact or is nested within %1 tag (standard type = %2) instead of Form @@ -1924,13 +1770,11 @@ - If the Form element omits a Role attribute (Table 348), it shall have - only one child: an object reference (14.7.4.3) identifying the widget annotation - per ISO 32000-1:2008, 14.8.4.5, Table 340. + If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340 roleAttribute != null || hasOneInteractiveChild == true - The Form element omits a Role attribute and doesn't have only one child identifying - the widget annotation + The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation + @@ -1938,7 +1782,7 @@ - Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element. + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element structParentStandardType == 'Link' || structParentStandardType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2 @@ -1954,8 +1798,7 @@ - In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) - is required. + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required CT != null CT key is missing from the media clip data dictionary @@ -1967,8 +1810,7 @@ - In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) - is required. + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required hasCorrectAlt == true Alt key (value %1) is missing from the media clip data dictionary or has incorrect value @@ -1982,8 +1824,7 @@ - PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page - elements as defined in ISO 32000-1:2008, 14.8.2.2.3. + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3 (structParentType == null || isArtifact == true) || isOutsideCropBox == true || (F & 2) == 2 A PrinterMark annotation is included in logical structure @@ -2005,8 +1846,7 @@ - The content of Form XObjects shall be incorporated into structure elements according to - ISO 32000-1:2008, 14.7.2. + The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2 isUniqueSemanticParent == true Form XObject contains MCIDs and is referenced more than once @@ -2018,19 +1858,10 @@ - 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 is Identity-H or Identity-V, any values of Registry, Ordering, - and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap. - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && - CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && - CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible - (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, - CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) CIDFontOrdering CMapOrdering @@ -2044,8 +1875,7 @@ - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117. + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry @@ -2057,24 +1887,8 @@ - All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described - in ISO 32000-1:2008, 9.7.5. - 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" || - embeddedFile_size == 1 + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 A non-standard CMap %1 is not embedded @@ -2087,8 +1901,7 @@ - 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. + 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 WMode == dictWMode WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical @@ -2101,23 +1914,8 @@ - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118. - 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" + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" A CMap references another non-standard CMap %1 @@ -2130,7 +1928,7 @@ - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9. + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 The font program is not embedded @@ -2142,11 +1940,7 @@ - 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 according to ISO 32000-1:2008, 9.6.6.4 - without the use of a non-standard mapping chosen by the conforming processor. + 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 according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true Not all glyphs referenced for rendering are present in the embedded font program @@ -2159,8 +1953,7 @@ - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs - present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program @@ -2170,8 +1963,7 @@ - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, - regardless of whether a CID in the font is referenced or used by the PDF or not. + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset @@ -2181,10 +1973,8 @@ - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded - font program shall be consistent. - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || - Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) @@ -2196,8 +1986,7 @@ - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic - cmap entries such that all necessary glyph lookups can be carried out. + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries @@ -2207,14 +1996,10 @@ - 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. - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && - (containsDifferences == false || differencesAreUnicodeCompliant == true)) + 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List - (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) Encoding containsDifferences @@ -2235,13 +2020,10 @@ - The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either - exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, - Encoding ID=0) encoding. + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding isSymbolic == false || nrCmaps == 1 || cmap30Present == true - The embedded font program for a symbolic TrueType font contains %1 cmap subtables and - does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) nrCmaps @@ -2250,8 +2032,7 @@ - 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 ISO 14289-1, 7.21.7. + 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 ISO 14289-1, 7.21.7 toUnicode != null The glyph can not be mapped to Unicode @@ -2263,8 +2044,8 @@ - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE. - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE @@ -2273,8 +2054,7 @@ - A PDF/UA compliant document 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. + A PDF/UA compliant document 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 name != ".notdef" The document contains a reference to the .notdef glyph @@ -2284,25 +2064,21 @@ - - false - true - - - false - true + + null + mostCommonOrientation 0 Lang_size - - null - parentStructureTag + + false + true - - null - mostCommonOrientation + + false + true diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-21-Dev.xml index 63123d28..2e8c2aa2 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-21-Dev.xml @@ -18,8 +18,8 @@ - The structure type and attributes of a paragraph shall be semantically appropriate. - correctType == 'P' && correctSemanticScore >= 0.75 + The structure type and attributes of a paragraph shall be semantically appropriate + correctType == 'P' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -31,8 +31,8 @@ - The structure type and attributes of a span shall be semantically appropriate. - correctType == 'Span' && correctSemanticScore >= 0.75 + The structure type and attributes of a span shall be semantically appropriate + correctType == 'Span' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -44,8 +44,8 @@ - The structure type and attributes of a table shall be semantically appropriate. - (correctType == 'Table' && correctSemanticScore >= 0.75) + The structure type and attributes of a table shall be semantically appropriate + (correctType == 'Table' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -57,8 +57,8 @@ - The structure type and attributes of a heading shall be semantically appropriate. - correctType == 'H' && correctSemanticScore >= 0.75 + The structure type and attributes of a heading shall be semantically appropriate + correctType == 'H' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -70,8 +70,8 @@ - The structure type and attributes of a numbered heading shall be semantically appropriate. - correctType == 'Hn' && correctSemanticScore >= 0.75 + The structure type and attributes of a numbered heading shall be semantically appropriate + correctType == 'Hn' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -83,8 +83,8 @@ - The structure type and attributes of a table row shall be semantically appropriate. - (correctType == 'TR' && correctSemanticScore >= 0.75) + The structure type and attributes of a table row shall be semantically appropriate + (correctType == 'TR' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -96,8 +96,8 @@ - The structure type and attributes of a table header cell shall be semantically appropriate. - (correctType == 'TH' && correctSemanticScore >= 0.75) + The structure type and attributes of a table header cell shall be semantically appropriate + (correctType == 'TH' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -109,8 +109,8 @@ - The structure type and attributes of a table cell shall be semantically appropriate. - (correctType == 'TD' && correctSemanticScore >= 0.75) + The structure type and attributes of a table cell shall be semantically appropriate + (correctType == 'TD' && correctSemanticScore >= 0.75) score = %1, correct type = %2 @@ -122,8 +122,8 @@ - The structure type and attributes of table elements shall be semantically appropriate. - (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && + The structure type and attributes of table elements shall be semantically appropriate + (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot') @@ -138,8 +138,8 @@ - The structure type and attributes of a caption shall be semantically appropriate. - correctType == 'Caption' && correctSemanticScore >= 0.75 + The structure type and attributes of a caption shall be semantically appropriate + correctType == 'Caption' && correctSemanticScore >= 0.75 score = %1, correct type = %2 @@ -151,7 +151,7 @@ - The structure type and attributes of a caption shall be semantically appropriate. + The structure type and attributes of a caption shall be semantically appropriate standardType == 'Caption' || correctType != 'Caption' score = %1, correct type = %2 @@ -164,8 +164,8 @@ - The structure type and attributes of list elements shall be semantically appropriate. - (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'L' && + The structure type and attributes of list elements shall be semantically appropriate + (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'L' && correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') score = %1, correct type = %2, structure id = %3 @@ -179,8 +179,8 @@ - The structure type and attributes of a list shall be semantically appropriate. - (correctType == 'L' && correctSemanticScore >= 0.75) + The structure type and attributes of a list shall be semantically appropriate + (correctType == 'L' && correctSemanticScore >= 0.75) score = %1, correct type = %2, id = %3 @@ -193,8 +193,8 @@ - The structure type and attributes of a list item shall be semantically appropriate. - (correctType == 'LI' && correctSemanticScore >= 0.75) + The structure type and attributes of a list item shall be semantically appropriate + (correctType == 'LI' && correctSemanticScore >= 0.75) score = %1, correct type = %2, id = %3 @@ -207,8 +207,8 @@ - The structure type and attributes of a list label shall be semantically appropriate. - (correctType == 'Lbl' && correctSemanticScore >= 0.75) + The structure type and attributes of a list label shall be semantically appropriate + (correctType == 'Lbl' && correctSemanticScore >= 0.75) score = %1, correct type = %2, id = %3 @@ -221,8 +221,8 @@ - The structure type and attributes of a list body shall be semantically appropriate. - (correctType == 'LBody' && correctSemanticScore >= 0.75) + The structure type and attributes of a list body shall be semantically appropriate + (correctType == 'LBody' && correctSemanticScore >= 0.75) score = %1, correct type = %2, id = %3 @@ -235,7 +235,7 @@ - A table element is incorrectly tagged as a list element or a list has the wrong numbering + A table element is incorrectly tagged as a list element or a list has the wrong numbering (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && @@ -266,8 +266,8 @@ - The structure type and attributes of table headers shall be semantically appropriate. - (correctType == 'THead' && correctSemanticScore >= 0.75) + The structure type and attributes of table headers shall be semantically appropriate + (correctType == 'THead' && correctSemanticScore >= 0.75) score = %1, correct type = %2, id = %3 @@ -280,8 +280,8 @@ - The structure type and attributes of a table body shall be semantically appropriate. - (correctType == 'TBody' && correctSemanticScore >= 0.75) + The structure type and attributes of a table body shall be semantically appropriate + (correctType == 'TBody' && correctSemanticScore >= 0.75) score = %1, correct type = %2, id = %3 @@ -294,8 +294,8 @@ - The structure type and attributes of a table footer shall be semantically appropriate. - (correctType == 'TFoot' && correctSemanticScore >= 0.75) + The structure type and attributes of a table footer shall be semantically appropriate + (correctType == 'TFoot' && correctSemanticScore >= 0.75) score = %1, correct type = %2, id = %3 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 72f0aa7c..e1fad187 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -6,7 +6,7 @@
- + Text should not contain repeated non space characters isNonSpace == false || numberOfRepeatedCharacters < 5 @@ -18,7 +18,7 @@
- + Text should not contain repeated space characters isNonSpace == true || numberOfRepeatedCharacters < 3 @@ -30,7 +30,7 @@ - + Underlined text isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 @@ -40,7 +40,7 @@ - + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 @@ -50,7 +50,7 @@ - + Pages shall have the same orientation orientation == 'Square' || gMostCommonPageOrientation == orientation @@ -62,12 +62,12 @@ - + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. - Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : - (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + Large-scale text and images of large-scale text have a contrast ratio of at least 3:1
+ textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : + (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 contrastRatio = %1 @@ -76,11 +76,11 @@
- + Font size is too small: text may not be resized without assistive technology - up to 200 percent without loss of content or functionality. - textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + up to 200 percent without loss of content or functionality + textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 textSize = %1 @@ -89,7 +89,7 @@ - + Document should not contain illegible font fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && @@ -120,7 +120,7 @@ - + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page page != lastPage || hasBBox == true @@ -132,7 +132,7 @@
- + Links shall contain an alternate description via their Contents or Alt keys or in the text value (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || @@ -146,7 +146,7 @@ - + Table shouldn't have merged cells ColSpan == 1 && RowSpan == 1 @@ -156,7 +156,7 @@ - + Table shouldn't have merged cells ColSpan == 1 && RowSpan == 1 @@ -166,7 +166,7 @@ - + Table shouldn't have merged cells colSpan == 1 && rowSpan == 1 @@ -180,10 +180,10 @@ - + Incorrect use of a paragraph - correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' + correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' score = %1, correct type = %2 @@ -193,10 +193,10 @@ - + Incorrect use of a span - correctSemanticScore >= 0.75 || correctType == null + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -206,10 +206,10 @@ - + Incorrect use of a heading - correctSemanticScore >= 0.75 || correctType == null + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -219,10 +219,10 @@ - + Incorrect use of a numbered heading - correctSemanticScore >= 0.75 || correctType == null + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 @@ -232,11 +232,29 @@ - + + + Incorrect table element + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || + (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && + correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && + correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || + parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + Missing table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || - ((correctType != 'TD' || standardType == 'TH') && + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || + (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) @@ -250,7 +268,7 @@ - + This structure element should be a heading instead of a paragraph correctType != 'H' && correctType != 'Hn' @@ -263,7 +281,7 @@ - + This structure element should be a span instead of a paragraph correctType != 'Span' @@ -276,7 +294,7 @@ - + This structure element should be a paragraph instead of a span correctType != 'P' @@ -289,7 +307,7 @@ - + This structure element should be a heading instead of a span correctType != 'H' && correctType != 'Hn' @@ -302,7 +320,7 @@ - + This structure element should be a paragraph instead of a heading correctType != 'P' @@ -315,7 +333,7 @@ - + This structure element should be a paragraph instead of a numbered heading correctType != 'P' @@ -328,7 +346,7 @@ - + Redundant paragraph correctType != null @@ -341,7 +359,7 @@ - + Redundant span correctType != null @@ -354,7 +372,7 @@ - + Redundant heading correctType != null @@ -367,7 +385,7 @@ - + Redundant numbered heading correctType != null @@ -380,7 +398,7 @@ - + This structure element should be a caption instead of a paragraph correctType != 'Caption' @@ -393,10 +411,10 @@ - + - The structure type and attributes of list elements shall be semantically appropriate. - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && + The structure type and attributes of list elements shall be semantically appropriate + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) score = %1, correct type = %2, structure id = %3 @@ -408,10 +426,10 @@ - + - The structure type and attributes of a list shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || + The structure type and attributes of a list shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' @@ -424,10 +442,10 @@ - + - The structure type and attributes of a list item shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || + The structure type and attributes of a list item shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' @@ -440,10 +458,10 @@ - + - The structure type and attributes of a list body shall be semantically appropriate. - hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || + The structure type and attributes of a list body shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' @@ -456,9 +474,9 @@ - + - A table element is incorrectly tagged as a list element or a list has the wrong numbering + A table element is incorrectly tagged as a list element or a list has the wrong numbering hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && @@ -472,7 +490,7 @@ - + This structure element should be a part or several different paragraphs instead of a paragraph correctType != 'Part' || correctSemanticScore < 0.75 @@ -485,9 +503,9 @@ - + - The structure type and attributes of a TOCI shall be semantically appropriate. + The structure type and attributes of a TOCI shall be semantically appropriate correctType != 'TOCI' || standardType == 'TOCI' score = %1, correct type = %2, structure id = %3 @@ -499,7 +517,7 @@ - + TOCI shall contain one or more text lines errorCodes.split(',').filter(elem => elem == 1000).length == 0 @@ -513,7 +531,7 @@ - + TOCI page label shall match the destination page errorCodes.split(',').filter(elem => elem == 1002).length == 0 @@ -527,7 +545,7 @@ - + TOCI shall have a right alignment that matches a right alignment of other TOCIs errorCodes.split(',').filter(elem => elem == 1003).length == 0 @@ -541,7 +559,7 @@ - + This list and neighbor list(s) should be tagged as one list errorCodes.split(',').filter(elem => elem == 1200).length == 0 @@ -555,7 +573,7 @@ - + This TOC and neighbor TOC(s) should be tagged as one TOC errorCodes.split(',').filter(elem => elem == 1006).length == 0 @@ -569,7 +587,7 @@ - + The number of rows of this table does not match the number of rows of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1104).length == 0 @@ -583,7 +601,7 @@ - + The number of columns of this table does not match the number of columns of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1105).length == 0 @@ -597,7 +615,7 @@ - + The row span of this table cell does not match the row span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1106).length == 0 @@ -611,7 +629,7 @@ - + The column span of this table cell does not match the column span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1107).length == 0 @@ -625,7 +643,7 @@ - + This content should be tagged as a list item false @@ -639,7 +657,7 @@ - + This cell is below than some cells in the next row errorCodes.split(',').filter(elem => elem == 1100).length == 0 @@ -653,7 +671,7 @@ - + This cell is above than some cells in the previous row errorCodes.split(',').filter(elem => elem == 1101).length == 0 @@ -667,7 +685,7 @@ - + This cell is to the right of some cells in the next column errorCodes.split(',').filter(elem => elem == 1102).length == 0 @@ -681,7 +699,7 @@ - + This cell is to the left of some cells in the previous column errorCodes.split(',').filter(elem => elem == 1103).length == 0 @@ -695,7 +713,7 @@ - + This structure element should be a table cell instead of a table header correctType != 'TD' @@ -709,7 +727,7 @@ - + TOCI text should be presented in the document errorCodes.split(',').filter(elem => elem == 1007).length == 0 @@ -723,9 +741,9 @@ - + - TOCI text should be presented on a destination page. + TOCI text should be presented on a destination page errorCodes.split(',').filter(elem => elem == 1008).length == 0 TOCI text is not found on a destination page %wrongDestinationPage%. @@ -740,9 +758,9 @@ - + - TOCI should have a destination. + TOCI should have a destination errorCodes.split(',').filter(elem => elem == 1009).length == 0 TOCI doesn't have a destination. Possible destination page number(s): %1 @@ -754,9 +772,9 @@ - + - TOCI should have a correct page label. + TOCI should have a correct page label errorCodes.split(',').filter(elem => elem == 1010).length == 0 TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 @@ -768,9 +786,9 @@ - + - TOCI should have a correct numbering. + TOCI should have a correct numbering errorCodes.split(',').filter(elem => elem == 1011).length == 0 TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering% @@ -784,9 +802,9 @@ - + - List should contain list items. + List should contain list items errorCodes.split(',').filter(elem => elem == 1201).length == 0 List contains only one child - list @@ -794,7 +812,7 @@ - + The structure type and attributes of a list item shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1202).length == 0 @@ -804,7 +822,7 @@ - + This structure element should be a note instead of a span correctType != 'Note' @@ -814,7 +832,7 @@ - + This structure element should be a note instead of a paragraph correctType != 'Note' @@ -824,7 +842,7 @@ - + The structure type and attributes of a heading shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1300).length == 0 diff --git a/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml b/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml index 95b5da80..ebd0a53d 100644 --- a/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml +++ b/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml @@ -3,15 +3,15 @@
ISO 14289-1:2014 - 1.4 Distinguishable - 1.4.3 Contrast (Minimum) The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. - Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. + Large-scale text and images of large-scale text have a contrast ratio of at least 3:1
The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. - Large-scale text and images of large-scale text have a contrast ratio of at least 3:1. - textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) + Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) contrastRatio = %1 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml index d56c7dea..538fee3d 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph - The structure type and attributes of a paragraph shall be semantically appropriate. + The structure type and attributes of a paragraph shall be semantically appropriate
- The structure type and attributes of a paragraph shall be semantically appropriate. - correctType == 'P' && correctSemanticScore >= 0.75 + The structure type and attributes of a paragraph shall be semantically appropriate + correctType == 'P' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml index 802c38d3..d12daceb 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Span - The structure type and attributes of a span shall be semantically appropriate. + The structure type and attributes of a span shall be semantically appropriate
- The structure type and attributes of a span shall be semantically appropriate. - correctType == 'Span' && correctSemanticScore >= 0.75 + The structure type and attributes of a span shall be semantically appropriate + correctType == 'Span' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml index 69c37368..d3e662a8 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table - The structure type and attributes of a table shall be semantically appropriate. + The structure type and attributes of a table shall be semantically appropriate
- The structure type and attributes of a table shall be semantically appropriate. - correctType == 'Table' && correctSemanticScore >= 0.75 + The structure type and attributes of a table shall be semantically appropriate + correctType == 'Table' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml index fe78603c..09152f03 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading - The structure type and attributes of a heading shall be semantically appropriate. + The structure type and attributes of a heading shall be semantically appropriate
- The structure type and attributes of a heading shall be semantically appropriate. - correctType == 'H' && correctSemanticScore >= 0.75 + The structure type and attributes of a heading shall be semantically appropriate + correctType == 'H' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml index a439945f..32790262 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Number heading - The structure type and attributes of a number heading shall be semantically appropriate. + The structure type and attributes of a number heading shall be semantically appropriate
- The structure type and attributes of a number heading shall be semantically appropriate. - correctType == 'Hn' && correctSemanticScore >= 0.75 + The structure type and attributes of a number heading shall be semantically appropriate + correctType == 'Hn' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml index 2bcfc403..231ec607 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table row - The structure type and attributes of a table row shall be semantically appropriate. + The structure type and attributes of a table row shall be semantically appropriate
- The structure type and attributes of a table row shall be semantically appropriate. - correctType == 'TR' && correctSemanticScore >= 0.75 + The structure type and attributes of a table row shall be semantically appropriate + correctType == 'TR' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml index 20db4567..2865b26b 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table header cell - The structure type and attributes of a table header cell shall be semantically appropriate. + The structure type and attributes of a table header cell shall be semantically appropriate
- The structure type and attributes of a table header cell shall be semantically appropriate. - correctType == 'TH' && correctSemanticScore >= 0.75 + The structure type and attributes of a table header cell shall be semantically appropriate + correctType == 'TH' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml index c09adac6..a09dea6a 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell - The structure type and attributes of a table cell shall be semantically appropriate. + The structure type and attributes of a table cell shall be semantically appropriate
- The structure type and attributes of a table cell shall be semantically appropriate. - correctType == 'TD' && correctSemanticScore >= 0.75 + The structure type and attributes of a table cell shall be semantically appropriate + correctType == 'TD' && correctSemanticScore >= 0.75 score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml index a2a02438..56db5db2 100644 --- a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml +++ b/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table elements - The structure type and attributes of table elements shall be semantically appropriate. + The structure type and attributes of table elements shall be semantically appropriate
- The structure type and attributes of table elements shall be semantically appropriate. - (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && + The structure type and attributes of table elements shall be semantically appropriate + (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') From a483cdc5476ccac70573183cd1a4027a1c0629b2 Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 12 Sep 2023 17:15:22 +0300 Subject: [PATCH 487/557] Add PDF/UA-2 rules --- .../verapdf-profile-5-t01.xml | 21 + .../verapdf-profile-5-t02.xml | 26 + .../verapdf-profile-5-t03.xml | 23 + .../verapdf-profile-5-t04.xml | 23 + .../verapdf-profile-5-t05.xml | 23 + .../verapdf-profile-8-10-1-t01.xml | 26 + .../verapdf-profile-8-10-1-t02.xml | 23 + .../verapdf-profile-8-10-2-3-t01.xml | 23 + .../verapdf-profile-8-10-3-3-t01.xml | 26 + .../verapdf-profile-8-10-3-5-t01.xml | 24 + .../verapdf-profile-8-11-1-t01.xml | 25 + .../verapdf-profile-8-11-2-t01.xml | 30 + .../verapdf-profile-8-14-1-t01.xml | 23 + .../verapdf-profile-8-2-1-t01.xml | 25 + .../verapdf-profile-8-2-2-t01.xml | 21 + .../verapdf-profile-8-2-4-t01.xml | 33 + .../verapdf-profile-8-2-4-t02.xml | 23 + .../verapdf-profile-8-2-4-t03.xml | 23 + .../verapdf-profile-8-2-5-12-t01.xml | 21 + .../verapdf-profile-8-2-5-14-t01.xml | 23 + .../verapdf-profile-8-2-5-14-t02.xml | 28 + .../verapdf-profile-8-2-5-14-t03.xml | 23 + .../verapdf-profile-8-2-5-2-t01.xml | 30 + .../verapdf-profile-8-2-5-2-t02.xml | 31 + .../verapdf-profile-8-2-5-20-t01.xml | 27 + .../verapdf-profile-8-2-5-20-t02.xml | 27 + .../verapdf-profile-8-2-5-20-t03.xml | 26 + .../verapdf-profile-8-2-5-23-t01.xml | 25 + .../verapdf-profile-8-2-5-24-t01.xml | 25 + .../verapdf-profile-8-2-5-25-t01.xml | 26 + .../verapdf-profile-8-2-5-25-t02.xml | 24 + .../verapdf-profile-8-2-5-26-t01.xml | 21 + .../verapdf-profile-8-2-5-26-t02.xml | 28 + .../verapdf-profile-8-2-5-26-t03.xml | 25 + .../verapdf-profile-8-2-5-26-t04.xml | 27 + .../verapdf-profile-8-2-5-26-t05.xml | 27 + .../verapdf-profile-8-2-5-26-t06.xml | 30 + .../verapdf-profile-8-2-5-28-2-t01.xml | 28 + .../verapdf-profile-8-2-5-29-t01.xml | 23 + .../verapdf-profile-8-2-5-29-t02.xml | 24 + .../verapdf-profile-8-2-5-8-t01.xml | 24 + .../verapdf-profile-8-4-3-t01.xml | 21 + .../verapdf-profile-8-4-3-t02.xml | 21 + .../verapdf-profile-8-4-3-t03.xml | 21 + .../verapdf-profile-8-4-4-t01.xml | 23 + .../verapdf-profile-8-4-4-t02.xml | 32 + .../verapdf-profile-8-4-5-3-1-t01.xml | 44 + .../verapdf-profile-8-4-5-3-2-t01.xml | 25 + .../verapdf-profile-8-4-5-4-t01.xml | 42 + .../verapdf-profile-8-4-5-4-t02.xml | 26 + .../verapdf-profile-8-4-5-4-t03.xml | 40 + .../verapdf-profile-8-4-5-5-1-t01.xml | 25 + .../verapdf-profile-8-4-5-5-1-t02.xml | 32 + .../verapdf-profile-8-4-5-6-t01.xml | 28 + .../verapdf-profile-8-4-5-7-t01.xml | 26 + .../verapdf-profile-8-4-5-7-t02.xml | 37 + .../verapdf-profile-8-4-5-7-t03.xml | 21 + .../verapdf-profile-8-4-5-7-t04.xml | 24 + .../verapdf-profile-8-4-5-8-t01.xml | 26 + .../verapdf-profile-8-4-5-8-t02.xml | 24 + .../verapdf-profile-8-4-5-9-t01.xml | 23 + .../verapdf-profile-8-5-1-t01.xml | 28 + .../verapdf-profile-8-6-t01.xml | 23 + .../verapdf-profile-8-7-t01.xml | 39 + .../verapdf-profile-8-7-t02.xml | 21 + .../verapdf-profile-8-8-t01.xml | 24 + .../verapdf-profile-8-8-t02.xml | 24 + .../verapdf-profile-8-9-2-1-t01.xml | 34 + .../verapdf-profile-8-9-2-2-t01.xml | 29 + .../verapdf-profile-8-9-2-2-t02.xml | 31 + .../verapdf-profile-8-9-2-3-t01.xml | 24 + .../verapdf-profile-8-9-2-3-t02.xml | 24 + .../verapdf-profile-8-9-2-4-10-t01.xml | 29 + .../verapdf-profile-8-9-2-4-11-t01.xml | 21 + .../verapdf-profile-8-9-2-4-11-t02.xml | 21 + .../verapdf-profile-8-9-2-4-12-t01.xml | 21 + .../verapdf-profile-8-9-2-4-13-t01.xml | 28 + .../verapdf-profile-8-9-2-4-14-t01.xml | 26 + .../verapdf-profile-8-9-2-4-15-t01.xml | 21 + .../verapdf-profile-8-9-2-4-19-t01.xml | 23 + .../verapdf-profile-8-9-2-4-19-t02.xml | 23 + .../verapdf-profile-8-9-2-4-7-t01.xml | 23 + .../verapdf-profile-8-9-2-4-8-t01.xml | 21 + .../verapdf-profile-8-9-2-4-9-t01.xml | 26 + .../verapdf-profile-8-9-3-3-t01.xml | 25 + .../verapdf-profile-8-9-4-1-t01.xml | 30 + .../verapdf-profile-8-9-4-2-t01.xml | 24 + PDF_UA/PDFUA-2.xml | 1070 +++++++++++++++++ 88 files changed, 3328 insertions(+) create mode 100644 PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml create mode 100644 PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml create mode 100644 PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml create mode 100644 PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml create mode 100644 PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml create mode 100644 PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml create mode 100644 PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml create mode 100644 PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml create mode 100644 PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml create mode 100644 PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml create mode 100644 PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml create mode 100644 PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml create mode 100644 PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t02.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml create mode 100644 PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml create mode 100644 PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml create mode 100644 PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml create mode 100644 PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml create mode 100644 PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml create mode 100644 PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml create mode 100644 PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.1 Contents entries/verapdf-profile-8-9-4-1-t01.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml create mode 100644 PDF_UA/PDFUA-2.xml diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml new file mode 100644 index 00000000..82310772 --- /dev/null +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 5 Version identification - PDF/UA Identification Schema + The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema +
+ + + + + The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema + UAIdentification_size == 1 + + The document metadata stream doesn't contains PDF/UA Identification Schema + + + + + + +
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml new file mode 100644 index 00000000..c718dc33 --- /dev/null +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-2:202x - 5 Version identification - Part number + The value of pdfuaid:part shall be the part number of the International Standard to which the file + conforms +
+ + + + + The value of pdfuaid:part shall be the part number of the International Standard to which the + file conforms + part == 2 + + The "part" property of the PDF/UA Identification Schema is %1 instead of 2 for + PDF/UA-2 conforming file + + part + + + + + + +
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml new file mode 100644 index 00000000..429745b0 --- /dev/null +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 5 Version identification - part prefix + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid +
+ + + + + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + partPrefix == null || partPrefix == "pdfuaid" + + Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + +
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml new file mode 100644 index 00000000..1670e9c8 --- /dev/null +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 5 Version identification - rev prefix + Property rev of the PDF/UA Identification Schema shall have namespace prefix pdfuaid +
+ + + + + Property rev of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + revPrefix == null || revPrefix == "pdfuaid" + + Property rev of the PDF/UA Identification Schema has invalid namespace prefix %1 + + revPrefix + + + + + + +
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml new file mode 100644 index 00000000..db8ba9d3 --- /dev/null +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 5 Version identification - rev property + The value of pdfuaid:rev shall be the four digit year +
+ + + + + The value of pdfuaid:rev shall be the four digit year + /^\d{4}$/.test(rev) + + The value of pdfuaid:rev (%1) not the four digit year + + rev + + + + + + +
diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml new file mode 100644 index 00000000..bd8d6712 --- /dev/null +++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-2:202x - 8.10 Forms - 8.10.1 General - Form structure element + Each widget annotation shall be enclosed by a Form structure element unless the widget annotation + is an artifact +
+ + + + + Each widget annotation shall be enclosed by a Form structure element unless the widget + annotation is an artifact + structParentType == null || structParentStandardType == 'Form' || isArtifact == true + + A Widget annotation is nested within %1 tag (standard type = %2) instead of Form or Artifact + + structParentType + structParentStandardType + + + + + + +
diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml new file mode 100644 index 00000000..081b1d00 --- /dev/null +++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.10 Forms - 8.10.1 General - Widget annotations count + A Form structure element shall contain at most one widget annotation +
+ + + + + A Form structure element shall contain at most one widget annotation + widgetAnnotsCount <= 1 + + A Form structure element contains %1 annotations + + widgetAnnotsCount + + + + + + +
diff --git a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml new file mode 100644 index 00000000..ca69d0de --- /dev/null +++ b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.10 Forms - 8.10.2.3 Contents entry - Lbl + If a label for a widget annotation is not present, a Contents entry shall be provided to supply + description and context for the widget +
+ + + + + If a label for a widget annotation is not present, a Contents entry shall be provided to supply + description and context for the widget + containsLbl == true || Contents != null + + Widget annotation contains neither label nor Contents entry + + + + + + +
diff --git a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml new file mode 100644 index 00000000..3b4792a5 --- /dev/null +++ b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-2:202x - 8.10 Forms - 8.10.3.3 Text fields - RV and V entries + For text fields, when an RV entry is present a V entry shall also be present, and they shall be + textually equivalent +
+ + + + + For text fields, when an RV entry is present a V entry shall also be present, and they shall be + textually equivalent + containsRV == false || (V != null && RV == V) + + Text field contains RV entry, but no V entry or they are not textually equivalent (RV = %1, V = %2) + + RV + V + + + + + + +
diff --git a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml new file mode 100644 index 00000000..d8cc5453 --- /dev/null +++ b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.10 Forms - 8.10.3.5 Signature fields - Alt for the graphic + If a portion of the appearance of a signature is represented by a graphic, alternative text shall + be provided for that graphic +
+ + + + + If a portion of the appearance of a signature is represented by a graphic, alternative text + shall be provided for that graphic + isSignature == false || Alt != null + + A portion of the appearance of a signature is represented by a graphic, but alternative text + is not provided for that graphic + + + + + + +
diff --git a/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml b/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml new file mode 100644 index 00000000..054943e6 --- /dev/null +++ b/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-2:202x - 8.11 Metadata - 8.11.1 General - Dc title + The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary shall + contain a dc:title entry +
+ + + + + The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary + shall contain a dc:title entry + dc_title != null + + Metadata stream does not contain dc:title + + + + + + + + +
diff --git a/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml b/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml new file mode 100644 index 00000000..9cad758b --- /dev/null +++ b/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml @@ -0,0 +1,30 @@ + + +
+ ISO 14289-2:202x - 8.11 Metadata - 8.11.2 Interactive aspects - DisplayDocTitle + 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 +
+ + + + + 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 + DisplayDocTitle == true + + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is + set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, + DisplayDocTitle = %2) + + ViewerPreferences + DisplayDocTitle + + + + + + + + +
diff --git a/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml b/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml new file mode 100644 index 00000000..f018207c --- /dev/null +++ b/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.14 Use of embedded files - 8.14.1 Descriptions for embedded files - Desc entry + The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles + name tree of a conforming document +
+ + + + + The Desc entry shall be present on all file specification dictionaries present in the + EmbeddedFiles name tree of a conforming document + containsDesc == true + + The file specification dictionary for an embedded file does not contain Desc key + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml new file mode 100644 index 00000000..d3081321 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.1 General - StructureTreeRoot + 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 +
+ + + + + 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 + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml new file mode 100644 index 00000000..46359770 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.2 Real content - Artifact or real content + Content that is not considered real shall be an artifact +
+ + + + + Content that is not considered real shall be an artifact + parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + + Content is neither marked as Artifact nor tagged as real content + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml new file mode 100644 index 00000000..3621f868 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml @@ -0,0 +1,33 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.4 Structure types - Standard roles + 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 +
+ + + + + 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 + circularMappingExist == true + + Non-standard structure type %1 is not mapped to a standard type + + valueS + + + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml new file mode 100644 index 00000000..9b79733a --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.4 Structure types - Circular mapping + A circular mapping shall not exist +
+ + + + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists for %1 structure type + + valueS + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml new file mode 100644 index 00000000..5512e0d2 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.4 Structure types - Same namespace mapping + Structure types shall not be role mapped to other structure types in the same namespace +
+ + + + + Structure types shall not be role mapped to other structure types in the same namespace + roleMapToSameNamespaceTag == null + + Structure type %1 is role mapped to other structure type in the same namespace + + roleMapToSameNamespaceTag + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml new file mode 100644 index 00000000..db909b7a --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.12 Heading (Hn) and (H) - H + Conforming files shall not use the H structure type +
+ + + + + Conforming files shall not use the H structure type + false + + Document uses H structure type + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml new file mode 100644 index 00000000..4cc939f3 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Note + 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 +
+ + + + + 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 + false + + Document uses Note structure type + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml new file mode 100644 index 00000000..ca3da3c4 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml @@ -0,0 +1,28 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Ref entry + Real content that refers to footnotes or endnotes (real content enclosed in FENote structure + elements) shall use the Ref entry as specified in 8.8 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 +
+ + + + + Real content that refers to footnotes or endnotes (real content enclosed in FENote structure + elements) shall use the Ref entry as specified in 8.8 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 + orphanRefs == null + + Ref entry in the FENote does not reference structure elements with object numbers %1, while + these structure elements reference this FENote + + orphanRefs + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml new file mode 100644 index 00000000..3f11818b --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - NoteType + The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None +
+ + + + + The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None + NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None' + + NoteType attribute of the FENote structure element has value %1 instead of Footnote, Endnote or None + + NoteType + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml new file mode 100644 index 00000000..be6814c8 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml @@ -0,0 +1,30 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.2 Document and DocumentFragment - Struct tree root child + 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 +
+ + + + + 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 + kidsStandardTypes == 'Document' + + The structure tree root contains %1 element(s) instead of a single Document structure element + + kidsStandardTypes.replaceAll('&', ',') + + + + + + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml new file mode 100644 index 00000000..cc3ad0ff --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml @@ -0,0 +1,31 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.2 Document and DocumentFragment - Struct tree root child + 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 +
+ + + + + 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 + kidsStandardTypes != 'Document' || firstChildStandardTypeNamespaceURL == 'http://iso.org/pdf2/ssn' + + The structure tree root contains a single Document structure element, but this element is not + within the PDF 2.0 namespace (namespace URI = %1) + + firstChildStandardTypeNamespaceURL + + + + + + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml new file mode 100644 index 00000000..548e77ce --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.20 Link and Reference - Link annotation + A link annotation and its associated content shall be enclosed in either a Link or Reference + structure element +
+ + + + + A link annotation and its associated content shall be enclosed in either a Link or Reference + structure element + structParentStandardType == 'Link' || structParentStandardType == 'Reference' + + A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link + or Reference + + structParentType + structParentStandardType + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml new file mode 100644 index 00000000..492fe100 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.20 Link and Reference - Different locations + Link annotations that target different locations shall be in separate Link or Reference + structure elements +
+ + + + + Link annotations that target different locations shall be in separate Link or Reference + structure elements + differentTargetAnnotObjectKey == null + + Struct element %1 contains Link annotations %1 and %2 that target different locations + + structParentObjectKey + objectKey + differentTargetAnnotObjectKey + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml new file mode 100644 index 00000000..6925851c --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.20 Link and Reference - Same locations + Multiple link annotations shall be included in a single Link or Reference structure element if + they target the same location and are semantically perceived to be a single link +
+ + + + + Multiple link annotations shall be included in a single Link or Reference structure element if + they target the same location and are semantically perceived to be a single link + sameTargetAnnotObjectKey == null + + Annotations %1 and %2 target the same location, but are included into different structure elements + + objectKey + sameTargetAnnotObjectKey + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml new file mode 100644 index 00000000..7130b8f8 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.23 Ruby (Ruby, RB, RT, RP) - Ruby's children + 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 +
+ + + + + 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 + kidsStandardTypes == 'RB&RT' || kidsStandardTypes == 'RB&RP&RT&RP' + + The Ruby structure element has invalid sequence of children: %1 + + kidsStandardTypes.split('&').toString() + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml new file mode 100644 index 00000000..a13d7c71 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.24 Warichu (WT, WP) - Warichu's children + 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 +
+ + + + + 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 + kidsStandardTypes == 'WP&WT&WP' + + The Warichu structure element has invalid sequence of children: %1 + + kidsStandardTypes.split('&').toString() + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml new file mode 100644 index 00000000..3731accb --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-2:202x - 8.2 logical structure - 8.2.5.25 List (L, LI, LBody) - ListNumbering attribute + 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 +
+ + + + + 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 + containsLabels == false || ListNumbering != 'None' + + List items contain Lbl structure elements, but the ListNumbering attribute is not present on + the respective L structure element or it has value None + + + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml new file mode 100644 index 00000000..2caa3c16 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.2 logical structure - 8.2.5.25 List (L, LI, LBody) - Real content within LI + 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 +
+ + + + + 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 + hasContentItems == false + + The LI structure element contains real content as its direct child instead of enclosing it into + Lbl or LBody structure elements + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml new file mode 100644 index 00000000..377465a9 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Regular Table + Tables shall be regular. Table cell shall not have intersection with other cells +
+ + + + + Tables shall be regular. Table cell shall not have intersection with other cells + hasIntersection != true + + Table cell has intersection with other cells + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml new file mode 100644 index 00000000..81042786 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml @@ -0,0 +1,28 @@ + + +
+ ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Regular Table + 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 +
+ + + + + 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 + numberOfColumnWithWrongRowSpan == null + + Columns 1 and %1 span different number of rows in table or one of row groupings formed by THead, + TBody and TFoot structure elements + + numberOfColumnWithWrongRowSpan + 1 + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml new file mode 100644 index 00000000..43a9e739 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Regular Table + Tables shall be regular. Table rows shall have the same number of columns (taking into account + column spans) +
+ + + + + Tables shall be regular. Table rows shall have the same number of columns (taking into account + column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null + + Table rows 1 and %1 span different number of columns + + numberOfRowWithWrongColumnSpan + 1 + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml new file mode 100644 index 00000000..6a5e7b75 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Regular Table + Tables shall be regular. Table rows shall have the same number of columns (taking into account + column spans) +
+ + + + + Tables shall be regular. Table rows shall have the same number of columns (taking into account + column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null + + Table rows 1 and %1 span different number of columns (%2 and %3 respectively) + + numberOfRowWithWrongColumnSpan + 1 + columnSpan + wrongColumnSpan + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml new file mode 100644 index 00000000..320a79f7 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Headers, IDs and Scope + 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 +
+ + + + + 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 + hasConnectedHeader != false || unknownHeaders != '' + + TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically + + + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml new file mode 100644 index 00000000..243049a7 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml @@ -0,0 +1,30 @@ + + +
+ ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Headers, IDs and Scope + 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 +
+ + + + + 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 + hasConnectedHeader != false || unknownHeaders == '' + + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically + + unknownHeaders + + + + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml new file mode 100644 index 00000000..4a728a5c --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml @@ -0,0 +1,28 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.28 Figure - Figure alternative and replacement text + 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 +
+ + + + + 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 + Alt != null || ActualText != null + + Figure structure element neither has an alternate description nor a replacement text + + + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml new file mode 100644 index 00000000..50c3a804 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.29 Formula - Math structure type + The math structure type shall occur only as a child of a Formula structure element +
+ + + + + The math structure type shall occur only as a child of a Formula structure element + parentStandardType == 'Formula' || parentStandardType == 'MathML' + + The math structure type is nested within %1 tag instead of Formula + + parentStandardType + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t02.xml new file mode 100644 index 00000000..405cf7a4 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t02.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.29 Formula - Non-math formula + Non-mathematical scientific formula enclosed within Formula structure elements shall have either + an Alt entry or an ActualText entry in its structure element dictionary +
+ + + + + Non-mathematical scientific formula enclosed within Formula structure elements shall have either + an Alt entry or an ActualText entry in its structure element dictionary + Alt != null || ActualText != null || isMathFormula == true + + A non-mathematical scientific formula enclosed within Formula structure elements contains + neither Alt nor ActualText entry in its structure element dictionary + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml new file mode 100644 index 00000000..58f4a748 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.8 Table of Contents (TOC/TOCI) - Reference in TOCI + 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 a child structure element contained within +
+ + + + + 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 a child structure element contained within + containsRef == true + + TOCI in the TOC does not contain the Ref entry, neither directly on the TOCI structure element + itself nor on its descendant structure elements + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml new file mode 100644 index 00000000..01dabd42 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.4 Text representation for content - Unicode PUA + In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present +
+ + + + + In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present + unicodePUA == false || actualTextPresent == true || altPresent == true + + Real content maps to Unicode PUA values, but ActualText and Alt entry are not present + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml new file mode 100644 index 00000000..b9838ca4 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.4 Text representation for content - Unicode PUA in ActualText + The ActualText entry shall not contain any PUA values +
+ + + + + The ActualText entry shall not contain any PUA values + containsPUA == false + + The ActualText entry contains a Private Unicoide Area value + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml new file mode 100644 index 00000000..371838fb --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.4 Text representation for content - Unicode PUA in Alt + The Alt entry shall not contain any PUA values +
+ + + + + The Alt entry shall not contain any PUA values + containsPUA == false + + The Alt entry contains a Private Unicoide Area value + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml new file mode 100644 index 00000000..38b250c1 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.4 Text representation for content - Lang in catalog + 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 +
+ + + + + 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 + Lang_size > 0 + + Catalog dictionary does not contain Lang entry + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml new file mode 100644 index 00000000..b91b7e10 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml @@ -0,0 +1,32 @@ + + +
+ ISO 14289-2:202x - 8.4 Text representation for content - Natural language specification + 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 +
+ + + + + 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 + /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) + + Value %1 of the Lang entry is not a Language-Tag + + unicodeValue + + + + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml new file mode 100644 index 00000000..82d5fc56 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml @@ -0,0 +1,44 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.3 Composite fonts - CIDSystemInfo + 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 greater than or equal to the value of the Supplement key in the CIDSystemInfo dictionary of the CMap +
+ + + + + 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 + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && + CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && + CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible + (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, + CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml new file mode 100644 index 00000000..fcd026f3 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.3 Composite fonts - CIDToGIDMap + 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 +
+ + + + + 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 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml new file mode 100644 index 00000000..3dd25111 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml @@ -0,0 +1,42 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.4 Composite fonts - CMaps + All CMaps used within a file that conforms to PDF/UA-2, 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 +
+ + + + + All CMaps used within a file that conforms to PDF/UA-2, 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 + 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" || + embeddedFile_size == 1 + + A non-standard CMap %1 is not embedded + + CMapName + + + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml new file mode 100644 index 00000000..8be21cb3 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.4 Composite fonts - WMode + 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 +
+ + + + + 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 + WMode == dictWMode + + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml new file mode 100644 index 00000000..b30ebd33 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml @@ -0,0 +1,40 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.4 Composite fonts - CMaps + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116 +
+ + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116 + 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" + + A CMap references another non-standard CMap %1 + + CMapName + + + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml new file mode 100644 index 00000000..571477de --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.5 Embedding - General + 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 +
+ + + + + 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 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml new file mode 100644 index 00000000..f6f7931b --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml @@ -0,0 +1,32 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.5 Embedding - Glyphs + 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 +
+ + + + + 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 + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml new file mode 100644 index 00000000..87655d74 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml @@ -0,0 +1,28 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.6 Font metrics - Glyph width + 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 +
+ + + + + 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 + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || + Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font + dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml new file mode 100644 index 00000000..07a6c7c9 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.7 Character encodings - cmaps for non-symbolic TrueType fonts + 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 +
+ + + + + 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 + isSymbolic == true || cmap31Present == true || cmap10Present == true + + The embedded font program for a non-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 + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml new file mode 100644 index 00000000..a4b7067a --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml @@ -0,0 +1,37 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.7 Character encodings - Non-symbolic TrueType fonts + 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 +
+ + + + + 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && + (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List + (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + + Encoding + containsDifferences + differencesAreUnicodeCompliant + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml new file mode 100644 index 00000000..52c1af72 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.7 Character encodings - Symbolic TrueType fonts + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary +
+ + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml new file mode 100644 index 00000000..ba155906 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.7 Character encodings - cmaps in the symbolic TrueType font program + 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 +
+ + + + + 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 + isSymbolic == false || cmap30Present == true || cmap10Present == true + + 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 + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml new file mode 100644 index 00000000..cba7b3c4 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.8 Unicode character maps - Unicode mapping + 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 ISO 14289-2, 8.4.5.8 +
+ + + + + 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 ISO 14289-2, 8.4.5.8 + toUnicode != null + + The glyph can not be mapped to Unicode + + + + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml new file mode 100644 index 00000000..781089ec --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.8 Unicode character maps - Valid Unicode values + 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 +
+ + + + + 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 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && + toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + + + + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml new file mode 100644 index 00000000..948cd183 --- /dev/null +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.9 Use of .notdef glyph - Use of .notdef glyph + A file in conformance with PDF/UA-2 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 +
+ + + + + A file in conformance with PDF/UA-2 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 + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + +
diff --git a/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml b/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml new file mode 100644 index 00000000..183615e2 --- /dev/null +++ b/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml @@ -0,0 +1,28 @@ + + +
+ ISO 14289-2:202x - 8.5 Real content without textual semantics - 8.5.1 General - Figure and Formula + Real content that does not possess the semantics of text objects and does not have an alternate + textual representation shall be enclosed within Figure or Formula structure elements as appropriate +
+ + + + + Real content that does not possess the semantics of text objects and does not have an alternate + textual representation shall be enclosed within Figure or Formula structure elements as appropriate + itemType == 'text' || parentStructureTag == null || ActualText != null || + isArtifact == true || isFigure == true || isFormula == true + + Real content that does not possess the semantics of text objects and does not have an alternate + textual representation is not enclosed within Figure or Formula structure elements + + + + + + + + + +
diff --git a/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml b/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml new file mode 100644 index 00000000..a7cde446 --- /dev/null +++ b/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.6 Text string objects - Unicode PUA + Text strings intended to be human readable shall not use the Unicode PUA +
+ + + + + Text strings intended to be human readable shall not use the Unicode PUA + containsPUA == false + + Text string intended to be human readable uses Unicode PUA + + + + + + + + +
diff --git a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml new file mode 100644 index 00000000..e97b720d --- /dev/null +++ b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml @@ -0,0 +1,39 @@ + + +
+ ISO 14289-2:202x - 8.7 Optional content - Name key present + 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 +
+ + + + + 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 + gContainsConfigs == false || (Name != null && Name.length() > 0) + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + + + + + false + containsConfigs + + +
diff --git a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml new file mode 100644 index 00000000..4a695104 --- /dev/null +++ b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.7 Optional content - AS key + The AS key shall not appear in any optional content configuration dictionary +
+ + + + + The AS key shall not appear in any optional content configuration dictionary + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + +
diff --git a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml new file mode 100644 index 00000000..097fcddb --- /dev/null +++ b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.8 Intra-document destinations - Struct destination + All destinations whose target lies within the current document shall be structure destinations +
+ + + + + All destinations whose target lies within the current document shall be structure destinations + isStructDestination == true + + Destination in Outline item or Link annotation is not a structure destination + + + + + + + + + +
diff --git a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml new file mode 100644 index 00000000..90e71f76 --- /dev/null +++ b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.8 Intra-document destinations - Struct destination + All destinations whose target lies within the current document shall be structure destinations +
+ + + + + All destinations whose target lies within the current document shall be structure destinations + containsStructDestination == true + + Destination in GoTo action is not a structure destination + + + + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml new file mode 100644 index 00000000..c2da5fad --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml @@ -0,0 +1,34 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2 Semantics and content - Annotations in structure tree + Annotations shall be included in the structure tree unless explicitly excluded by the following + subclauses +
+ + + + + Annotations shall be included in the structure tree unless explicitly excluded by the following + subclauses + (structParentType != null && isArtifact == false) || + (Subtype == "Popup") || + (Subtype == "PrinterMark") || + (Subtype == "Widget" && width == 0 && height == 0) || + ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) + + + Annotation is not included in the structure tree + + + + + + + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml new file mode 100644 index 00000000..48a3ad3a --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml @@ -0,0 +1,29 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.2 Annotations as artifacts - Invisible flag + Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, + Table 167 +
+ + + + + Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, + Table 167 + structParentType == null || isArtifact == true || (F & 1) == 0 + + An invisible annotation is included in logical structure with tag %1 (standard type = %2, Invisible = %3) + + structParentType + structParentStandardType + F != null ? (F & 1) : null + + + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml new file mode 100644 index 00000000..7363264c --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml @@ -0,0 +1,31 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.2 Annotations as artifacts - NoView and ToggleNoView flags + 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 +
+ + + + + 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 + structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 1) + + An invisible annotation is included in logical structure with tag %1 (standard type = %2, + NoView = %3, ToggleNoView = %4) + + structParentType + structParentStandardType + F != null ? (F & 32) >> 5 : null + F != null ? (F & 256) >> 8 : null + + + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml new file mode 100644 index 00000000..ca5f8307 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.3 Markup annotations - Annot structure element + Markup annotations shall be enclosed within Annot structure elements +
+ + + + + Markup annotations shall be enclosed within Annot structure elements + structParentStandardType == 'Annot' + + A Markup annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Annot + + structParentType + structParentStandardType + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml new file mode 100644 index 00000000..875d5fb1 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.3 Markup annotations - RC and Contents entries + When both RC and Contents entries are present for markup annotation, they shall be textually equivalent +
+ + + + + When both RC and Contents entries are present for markup annotation, they shall be textually equivalent + containsRC == false || Contents == null || RC == Contents + + A Markup annotation contains Contents and RC entries with non-equivalent textual values (RC = %1, Contents = %2) + + RC + Contents + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml new file mode 100644 index 00000000..2c89fa77 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml @@ -0,0 +1,29 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - File attachment annotation + When a file attachment annotation references a file specification dictionary in accordance with + ISO 32000-2:2020, 7.11.3 using the FS entry in accordance with ISO 32000-2:2020, 12.5.6.15, that file + specification dictionary shall include an AFRelationship entry +
+ + + + + When a file attachment annotation references a file specification dictionary in accordance with + ISO 32000-2:2020, 7.11.3 using the FS entry in accordance with ISO 32000-2:2020, 12.5.6.15, that file + specification dictionary shall include an AFRelationship entry + containsFS == false || AFRelationship != null + + The file specification dictionary referenced by a file attachment annotation does not include + AFRelationship entry + + + + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml new file mode 100644 index 00000000..383293ee --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Sound annotation + Sound annotation cannot be used when conforming to PDF/UA-2 +
+ + + + + Sound annotation cannot be used when conforming to PDF/UA-2 + false + + An annotation of subtype Sound exists + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml new file mode 100644 index 00000000..0cc71beb --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Movie annotation + Movie annotation cannot be used when conforming to PDF/UA-2 +
+ + + + + Movie annotation cannot be used when conforming to PDF/UA-2 + false + + An annotation of subtype Movie exists + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml new file mode 100644 index 00000000..04827451 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Screen annotation + Screen annotations shall include a Contents entry +
+ + + + + Screen annotations shall include a Contents entry + Contents != null + + Screen annotation does not contain Contents entry + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml new file mode 100644 index 00000000..c9f09109 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml @@ -0,0 +1,28 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Widget annotation + A widget annotation of zero height and width, accordance with ISO 32000-2:2020, 12.7.5.5 shall be + an artifact +
+ + + + + A widget annotation of zero height and width, accordance with ISO 32000-2:2020, 12.7.5.5 shall + be an artifact + width != 0 || height != 0 || structParentType == null || isArtifact == true + + A Widget annotation of zero height and width is not marked as an Artifact (structure tag = %1, standard type = %2) + + structParentType + structParentStandardType + + + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml new file mode 100644 index 00000000..aba3d2c1 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - PrinterMark annotation + A printer's mark annotation as specified in ISO 32000-2:2020, 14.11.3 shall be an artifact +
+ + + + + A printer's mark annotation as specified in ISO 32000-2:2020, 14.11.3 shall be an artifact + structParentType == null || isArtifact == true + + A PrinterMark annotation is included in logical structure with tag %1 (standard type = %2) + + structParentType + structParentStandardType + + + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml new file mode 100644 index 00000000..ed1cd928 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Trap network annotation + Trap network annotations shall not be used in files conforming to PDF/UA-2 +
+ + + + + Trap network annotations shall not be used in files conforming to PDF/UA-2 + false + + An annotation of subtype TrapNet exists + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml new file mode 100644 index 00000000..0a614360 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - 3D annotation + 3D annotation shall include alternate description in respective Contents entry +
+ + + + + 3D annotation shall include alternate description in respective Contents entry + Contents != null + + 3D annotation does not contain Contents entry + + + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml new file mode 100644 index 00000000..e9e6bd84 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - RichMedia annotation + RichMedia annotation shall include alternate description in respective Contents entry +
+ + + + + RichMedia annotation shall include alternate description in respective Contents entry + Contents != null + + RichMedia annotation does not contain Contents entry + + + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml new file mode 100644 index 00000000..66f35de2 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Rubber stamp annotation + 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 +
+ + + + + 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 + Name != null || Contents != null + + Rubber stamp annotation contains neither Name nor Contents entry + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml new file mode 100644 index 00000000..52bc87d0 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Ink annotation + A Contents entry describing the author’s intent shall be provided for Ink annotation +
+ + + + + A Contents entry describing the author’s intent shall be provided for Ink annotation + Contents != null + + Ink annotation does not contain Contents entry + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml new file mode 100644 index 00000000..097169ab --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Popup annotation + Popup annotations shall not be present in the structure tree +
+ + + + + Popup annotations shall not be present in the structure tree + structParentType == null || isArtifact == true + + A Popup annotation is included in logical structure with tag %1 (standard type = %2) + + structParentType + structParentStandardType + + + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml new file mode 100644 index 00000000..d6b388f1 --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.3.3 Tab order - Tabs in page with annotations + 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 +
+ + + + + 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 + annots_size == 0 || Tabs == 'A' || Tabs == 'W' || Tabs == 'S' + + A page with annotation(s) contains Tabs key with value %1 instead of A, W or S + + Tabs + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.1 Contents entries/verapdf-profile-8-9-4-1-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.1 Contents entries/verapdf-profile-8-9-4-1-t01.xml new file mode 100644 index 00000000..138e67ae --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.1 Contents entries/verapdf-profile-8-9-4-1-t01.xml @@ -0,0 +1,30 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.4.1 Contents entries - Contents and Alt + Except Widget annotations, Contents entries in annotation dictionaries shall provide an alternative + description of the annotation. If Contents cannot be used for this purpose, an alternate description shall + be provided for the annotation via one of the other mechanisms defined in ISO 32000-2:2020, 14.9.3 +
+ + + + + Except Widget annotations, Contents entries in annotation dictionaries shall provide an + alternative description of the annotation. If Contents cannot be used for this purpose, an alternate + description shall be provided for the annotation via one of the other mechanisms defined in + ISO 32000-2:2020, 14.9.3 + Subtype == 'Widget' || Contents != null || Alt != null + + %1 annotation neither has a Contents entry nor alternate description + + Subtype + + + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml new file mode 100644 index 00000000..e3050a6c --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.4.2 Alt properties - Alt and Contents + Where both Contents and Alt entries are present for the annotation, they shall be identical +
+ + + + + Where both Contents and Alt entries are present for the annotation, they shall be identical + Contents == null || Alt == null || Contents == Alt + + Both Contents and Alt entries are present for the annotation, but they are not identical (Contents = %1, Alt = %2) + + Contents + Alt + + + + + + +
diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml new file mode 100644 index 00000000..8a03ae15 --- /dev/null +++ b/PDF_UA/PDFUA-2.xml @@ -0,0 +1,1070 @@ + + +
+ PDF/UA-2 validation profile + Validation rules against ISO 14289-2:202x +
+ + + + + The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema + UAIdentification_size == 1 + + The document metadata stream doesn't contains PDF/UA Identification Schema + + + + + + + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms + part == 2 + + The "part" property of the PDF/UA Identification Schema is %1 instead of 2 for PDF/UA-2 conforming file + + part + + + + + + + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + partPrefix == null || partPrefix == "pdfuaid" + + Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property rev of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + revPrefix == null || revPrefix == "pdfuaid" + + Property rev of the PDF/UA Identification Schema has invalid namespace prefix %1 + + revPrefix + + + + + + + The value of pdfuaid:rev shall be the four digit year + /^\d{4}$/.test(rev) + + The value of pdfuaid:rev (%1) not the four digit year + + rev + + + + + + + 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 + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + + Content that is not considered real shall be an artifact + parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + + Content is neither marked as Artifact nor tagged as real content + + + + + + + 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 + circularMappingExist == true + + Non-standard structure type %1 is not mapped to a standard type + + valueS + + + + + + + + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists for %1 structure type + + valueS + + + + + + + Structure types shall not be role mapped to other structure types in the same namespace + roleMapToSameNamespaceTag == null + + Structure type %1 is role mapped to other structure type in the same namespace + + roleMapToSameNamespaceTag + + + + + + + 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 + kidsStandardTypes == 'Document' + + The structure tree root contains %1 element(s) instead of a single Document structure element + + kidsStandardTypes.replaceAll('&', ',') + + + + + + + + + + + + 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 + kidsStandardTypes != 'Document' || firstChildStandardTypeNamespaceURL == 'http://iso.org/pdf2/ssn' + + The structure tree root contains a single Document structure element, but this element is not within the PDF 2.0 namespace (namespace URI = %1) + + firstChildStandardTypeNamespaceURL + + + + + + + + + + + + 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 a child structure element contained within + containsRef == true + + TOCI in the TOC does not contain the Ref entry, neither directly on the TOCI structure element itself nor on its descendant structure elements + + + + + + + Conforming files shall not use the H structure type + false + + Document uses H structure type + + + + + + + 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 + false + + Document uses Note structure type + + + + + + + Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry as specified in 8.8 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 + orphanRefs == null + + Ref entry in the FENote does not reference structure elements with object numbers %1, while these structure elements reference this FENote + + orphanRefs + + + + + + + The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None + NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None' + + NoteType attribute of the FENote structure element has value %1 instead of Footnote, Endnote or None + + NoteType + + + + + + + A link annotation and its associated content shall be enclosed in either a Link or Reference structure element + structParentStandardType == 'Link' || structParentStandardType == 'Reference' + + A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference + + structParentType + structParentStandardType + + + + + + + Link annotations that target different locations shall be in separate Link or Reference structure elements + differentTargetAnnotObjectKey == null + + Struct element %1 contains Link annotations %1 and %2 that target different locations + + structParentObjectKey + objectKey + differentTargetAnnotObjectKey + + + + + + + Multiple link annotations shall be included in a single Link or Reference structure element if they target the same location and are semantically perceived to be a single link + sameTargetAnnotObjectKey == null + + Annotations %1 and %2 target the same location, but are included into different structure elements + + objectKey + sameTargetAnnotObjectKey + + + + + + + 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 + kidsStandardTypes == 'RB&RT' || kidsStandardTypes == 'RB&RP&RT&RP' + + The Ruby structure element has invalid sequence of children: %1 + + kidsStandardTypes.split('&').toString() + + + + + + + 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 + kidsStandardTypes == 'WP&WT&WP' + + The Warichu structure element has invalid sequence of children: %1 + + kidsStandardTypes.split('&').toString() + + + + + + + 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 + containsLabels == false || ListNumbering != 'None' + + List items contain Lbl structure elements, but the ListNumbering attribute is not present on the respective L structure element or it has value None + + + + + + + + + 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 + hasContentItems == false + + The LI structure element contains real content as its direct child instead of enclosing it into Lbl or LBody structure elements + + + + + + + Tables shall be regular. Table cell shall not have intersection with other cells + hasIntersection != true + + Table cell has intersection with other cells + + + + + + + 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 + numberOfColumnWithWrongRowSpan == null + + Columns 1 and %1 span different number of rows in table or one of row groupings formed by THead, TBody and TFoot structure elements + + numberOfColumnWithWrongRowSpan + 1 + + + + + + + Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null + + Table rows 1 and %1 span different number of columns + + numberOfRowWithWrongColumnSpan + 1 + + + + + + + Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null + + Table rows 1 and %1 span different number of columns (%2 and %3 respectively) + + numberOfRowWithWrongColumnSpan + 1 + columnSpan + wrongColumnSpan + + + + + + + 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 + hasConnectedHeader != false || unknownHeaders != '' + + TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically + + + + + + + + + + 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 + hasConnectedHeader != false || unknownHeaders == '' + + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically + + unknownHeaders + + + + + + + + + + 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 + Alt != null || ActualText != null + + Figure structure element neither has an alternate description nor a replacement text + + + + + + + + + The math structure type shall occur only as a child of a Formula structure element + parentStandardType == 'Formula' || parentStandardType == 'MathML' + + The math structure type is nested within %1 tag instead of Formula + + parentStandardType + + + + + + + Non-mathematical scientific formula enclosed within Formula structure elements shall have either an Alt entry or an ActualText entry in its structure element dictionary + Alt != null || ActualText != null || isMathFormula == true + + A non-mathematical scientific formula enclosed within Formula structure elements contains neither Alt nor ActualText entry in its structure element dictionary + + + + + + + In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present + unicodePUA == false || actualTextPresent == true || altPresent == true + + Real content maps to Unicode PUA values, but ActualText and Alt entry are not present + + + + + + + The ActualText entry shall not contain any PUA values + containsPUA == false + + The ActualText entry contains a Private Unicoide Area value + + + + + + + The Alt entry shall not contain any PUA values + containsPUA == false + + The Alt entry contains a Private Unicoide Area value + + + + + + + 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 + Lang_size > 0 + + Catalog dictionary does not contain Lang entry + + + + + + + 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 + /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) + + Value %1 of the Lang entry is not a Language-Tag + + unicodeValue + + + + + + + + + + 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 + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + + + + + + + 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 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a file that conforms to PDF/UA-2, 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 + 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" || embeddedFile_size == 1 + + A non-standard CMap %1 is not embedded + + CMapName + + + + + + + + + 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 + WMode == dictWMode + + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + + + + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116 + 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" + + A CMap references another non-standard CMap %1 + + CMapName + + + + + + + + + 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 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + 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 + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + + + + 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 + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + + + + + + + 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 + isSymbolic == true || cmap31Present == true || cmap10Present == true + + The embedded font program for a non-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 + + + + + + + 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + + Encoding + containsDifferences + differencesAreUnicodeCompliant + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + 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 + isSymbolic == false || cmap30Present == true || cmap10Present == true + + 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 + + + + + + + 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 ISO 14289-2, 8.4.5.8 + toUnicode != null + + The glyph can not be mapped to Unicode + + + + + + + + + + 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 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + + + + + + + A file in conformance with PDF/UA-2 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 + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + Real content that does not possess the semantics of text objects and does not have an alternate textual representation shall be enclosed within Figure or Formula structure elements as appropriate + itemType == 'text' || parentStructureTag == null || ActualText != null || isArtifact == true || isFigure == true || isFormula == true + + Real content that does not possess the semantics of text objects and does not have an alternate textual representation is not enclosed within Figure or Formula structure elements + + + + + + + + + + Text strings intended to be human readable shall not use the Unicode PUA + containsPUA == false + + Text string intended to be human readable uses Unicode PUA + + + + + + + + + The AS key shall not appear in any optional content configuration dictionary + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + + All destinations whose target lies within the current document shall be structure destinations + isStructDestination == true + + Destination in Outline item or Link annotation is not a structure destination + + + + + + + + + + All destinations whose target lies within the current document shall be structure destinations + containsStructDestination == true + + Destination in GoTo action is not a structure destination + + + + + + + + + + Annotations shall be included in the structure tree unless explicitly excluded by the following subclauses + (structParentType != null && isArtifact == false) || (Subtype == "Popup") || (Subtype == "PrinterMark") || (Subtype == "Widget" && width == 0 && height == 0) || ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) + + Annotation is not included in the structure tree + + + + + + + + + + + + + Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, Table 167 + structParentType == null || isArtifact == true || (F & 1) == 0 + + An invisible annotation is included in logical structure with tag %1 (standard type = %2, Invisible = %3) + + structParentType + structParentStandardType + F != null ? (F & 1) : null + + + + + + + + + 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 + structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 1) + + An invisible annotation is included in logical structure with tag %1 (standard type = %2, NoView = %3, ToggleNoView = %4) + + structParentType + structParentStandardType + F != null ? (F & 32) >> 5 : null + F != null ? (F & 256) >> 8 : null + + + + + + + + + Markup annotations shall be enclosed within Annot structure elements + structParentStandardType == 'Annot' + + A Markup annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Annot + + structParentType + structParentStandardType + + + + + + + When both RC and Contents entries are present for markup annotation, they shall be textually equivalent + containsRC == false || Contents == null || RC == Contents + + A Markup annotation contains Contents and RC entries with non-equivalent textual values (RC = %1, Contents = %2) + + RC + Contents + + + + + + + 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 + Name != null || Contents != null + + Rubber stamp annotation contains neither Name nor Contents entry + + + + + + + A Contents entry describing the author’s intent shall be provided for Ink annotation + Contents != null + + Ink annotation does not contain Contents entry + + + + + + + Popup annotations shall not be present in the structure tree + structParentType == null || isArtifact == true + + A Popup annotation is included in logical structure with tag %1 (standard type = %2) + + structParentType + structParentStandardType + + + + + + + + + When a file attachment annotation references a file specification dictionary in accordance with ISO 32000-2:2020, 7.11.3 using the FS entry in accordance with ISO 32000-2:2020, 12.5.6.15, that file specification dictionary shall include an AFRelationship entry + containsFS == false || AFRelationship != null + + The file specification dictionary referenced by a file attachment annotation does not include AFRelationship entry + + + + + + + + + + Sound annotation cannot be used when conforming to PDF/UA-2 + false + + An annotation of subtype Sound exists + + + + + + + Movie annotation cannot be used when conforming to PDF/UA-2 + false + + An annotation of subtype Movie exists + + + + + + + Screen annotations shall include a Contents entry + Contents != null + + Screen annotation does not contain Contents entry + + + + + + + A widget annotation of zero height and width, accordance with ISO 32000-2:2020, 12.7.5.5 shall be an artifact + width != 0 || height != 0 || structParentType == null || isArtifact == true + + A Widget annotation of zero height and width is not marked as an Artifact (structure tag = %1, standard type = %2) + + structParentType + structParentStandardType + + + + + + + + + A printer's mark annotation as specified in ISO 32000-2:2020, 14.11.3 shall be an artifact + structParentType == null || isArtifact == true + + A PrinterMark annotation is included in logical structure with tag %1 (standard type = %2) + + structParentType + structParentStandardType + + + + + + + + + Trap network annotations shall not be used in files conforming to PDF/UA-2 + false + + An annotation of subtype TrapNet exists + + + + + + + 3D annotation shall include alternate description in respective Contents entry + Contents != null + + 3D annotation does not contain Contents entry + + + + + + + + + RichMedia annotation shall include alternate description in respective Contents entry + Contents != null + + RichMedia annotation does not contain Contents entry + + + + + + + + + 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 + annots_size == 0 || Tabs == 'A' || Tabs == 'W' || Tabs == 'S' + + A page with annotation(s) contains Tabs key with value %1 instead of A, W or S + + Tabs + + + + + + + Except Widget annotations, Contents entries in annotation dictionaries shall provide an alternative description of the annotation. If Contents cannot be used for this purpose, an alternate description shall be provided for the annotation via one of the other mechanisms defined in ISO 32000-2:2020, 14.9.3 + Subtype == 'Widget' || Contents != null || Alt != null + + %1 annotation neither has a Contents entry nor alternate description + + Subtype + + + + + + + + + Where both Contents and Alt entries are present for the annotation, they shall be identical + Contents == null || Alt == null || Contents == Alt + + Both Contents and Alt entries are present for the annotation, but they are not identical (Contents = %1, Alt = %2) + + Contents + Alt + + + + + + + Each widget annotation shall be enclosed by a Form structure element unless the widget annotation is an artifact + structParentType == null || structParentStandardType == 'Form' || isArtifact == true + + A Widget annotation is nested within %1 tag (standard type = %2) instead of Form or Artifact + + structParentType + structParentStandardType + + + + + + + A Form structure element shall contain at most one widget annotation + widgetAnnotsCount <= 1 + + A Form structure element contains %1 annotations + + widgetAnnotsCount + + + + + + + If a label for a widget annotation is not present, a Contents entry shall be provided to supply description and context for the widget + containsLbl == true || Contents != null + + Widget annotation contains neither label nor Contents entry + + + + + + + For text fields, when an RV entry is present a V entry shall also be present, and they shall be textually equivalent + containsRV == false || (V != null && RV == V) + + Text field contains RV entry, but no V entry or they are not textually equivalent (RV = %1, V = %2) + + RV + V + + + + + + + If a portion of the appearance of a signature is represented by a graphic, alternative text shall be provided for that graphic + isSignature == false || Alt != null + + A portion of the appearance of a signature is represented by a graphic, but alternative text is not provided for that graphic + + + + + + + The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary shall contain a dc:title entry + dc_title != null + + Metadata stream does not contain dc:title + + + + + + + + + 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 + DisplayDocTitle == true + + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2) + + ViewerPreferences + DisplayDocTitle + + + + + + + + + The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document + containsDesc == true + + The file specification dictionary for an embedded file does not contain Desc key + + + + + + + + false + containsConfigs + + +
From b5d15ae52ba1bcc8bc1791ba6d11331ec5f08573 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 29 Nov 2023 13:38:13 +0300 Subject: [PATCH 488/557] Update github action for pushing PDF/UA-2 to library --- ...kflow.yml => update-library-PDFUA-profiles-workflow.yml} | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) rename .github/workflows/{update-library-PDFUA-profile-workflow.yml => update-library-PDFUA-profiles-workflow.yml} (74%) diff --git a/.github/workflows/update-library-PDFUA-profile-workflow.yml b/.github/workflows/update-library-PDFUA-profiles-workflow.yml similarity index 74% rename from .github/workflows/update-library-PDFUA-profile-workflow.yml rename to .github/workflows/update-library-PDFUA-profiles-workflow.yml index daf64bc2..09283cee 100644 --- a/.github/workflows/update-library-PDFUA-profile-workflow.yml +++ b/.github/workflows/update-library-PDFUA-profiles-workflow.yml @@ -1,4 +1,4 @@ -name: Update PDF_UA profile in veraPDF-library +name: Update PDF_UA profiles in veraPDF-library on: push: @@ -6,6 +6,7 @@ on: [ integration ] paths: - 'PDF_UA/PDFUA-1.xml' + - 'PDF_UA/PDFUA-2.xml' jobs: update-files: @@ -23,13 +24,14 @@ jobs: - name: Commit to veraPDF-library uses: drud/action-cross-commit@master with: - source-folder: PDF_UA/PDFUA-1.xml + source-folder: PDF_UA destination-repository: https://veraPDF:${{ secrets.WORKFLOW_TOKEN }}@github.com/veraPDF/veraPDF-library destination-folder: core/src/main/resources/org/verapdf/pdfa/validation destination-branch: integration git-user: "Git User" git-commit-message: ${{ github.event.head_commit.message }} git-commit-sign-off: "false" + excludes: 1:2:WCAG:ISO-32000-1-Tagged.xml:ISO-32000-2-Tagged.xml:ISO-32005-Tagged.xml:WCAG-21.xml:WCAG-21-Complete.xml:WCAG-21-Dev.xml:PDFA-1A.xml:PDFA-1B.xml:PDFA-2A.xml:PDFA-2B.xml:PDFA-2U.xml:PDFA-3A.xml:PDFA-3B.xml:PDFA-3U.xml:PDFA-4.xml:PDFA-4E.xml:PDFA-4F.xml:validationProfile.xsd - name: Notify slack if library wasn't updated if: failure() From 9d8cee5e4d1ece91d199d96331b70ead33467943 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 29 Nov 2023 13:45:41 +0300 Subject: [PATCH 489/557] Update PDF/A and PDF/UA error message --- .../verapdf-profile-6-8-4-t01.xml | 2 +- .../verapdf-profile-6-7-4-t01.xml | 2 +- .../7.18.1 General/verapdf-profile-7-18-1-t01.xml | 2 +- .../verapdf-profile-7-18-3-t01.xml | 2 +- .../7.18.4 Forms/verapdf-profile-7-18-4-t01.xml | 2 +- .../7.18.5 Links/verapdf-profile-7-18-5-t01.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml | 2 +- PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml | 3 +-- PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml | 3 +-- PDF_UA/PDFUA-1.xml | 14 +++++++------- PDF_UA/WCAG-21-Complete.xml | 14 +++++++------- 11 files changed, 23 insertions(+), 25 deletions(-) diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml index a9b91300..d2782eef 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.4 Natural language specification/verapdf-profile-6-8-4-t01.xml @@ -15,7 +15,7 @@ the Identification of Languages, as described in PDF Reference 9.8.1 unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})*$/.test(unicodeValue) - Value %1 of the Lang entry is not Language-Tag + Value %1 of the Lang entry is not a Language-Tag unicodeValue diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml index 37f9c2a1..91a3c79f 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.4 Natural language specification/verapdf-profile-6-7-4-t01.xml @@ -17,7 +17,7 @@ as defined in RFC 3066, Tags for the Identification of Languages unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Value %1 of the Lang entry is not Language-Tag + Value %1 of the Lang entry is not a Language-Tag unicodeValue diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml index 2e83f975..a67748d3 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml @@ -12,7 +12,7 @@ Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' - %1 annotation is artifact or is nested within %2 tag (standard type = %3) instead of Annot + %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot Subtype structParentType diff --git a/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml index 8960ed11..e7bc8f46 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.3 Tab order/verapdf-profile-7-18-3-t01.xml @@ -11,7 +11,7 @@ Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S annots_size == 0 || Tabs == 'S' - A page containing an annotation contains a Tabs key with value %1 instead of S + A page with annotation(s) contains Tabs key with value %1 instead of S Tabs diff --git a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml index d6aadba1..475560ae 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.4 Forms/verapdf-profile-7-18-4-t01.xml @@ -11,7 +11,7 @@ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - A Widget annotation is artifact or is nested within %1 tag (standard type = %2) instead of Form + A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form structParentType structParentStandardType diff --git a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml index d47af51e..0c6fa2e3 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.5 Links/verapdf-profile-7-18-5-t01.xml @@ -11,7 +11,7 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 - A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link + A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link structParentType structParentStandardType diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml index 4671a29a..370caf17 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t29.xml @@ -15,7 +15,7 @@ A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Value %1 of the Lang entry is not Language-Tag + Value %1 of the Lang entry is not a Language-Tag unicodeValue diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml index 8f9e2240..71d448c8 100644 --- a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml +++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t01.xml @@ -13,8 +13,7 @@ then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders != '' - TD does not contain Headers attribute, and Headers for this table cell cannot be determined - via algorithm from ISO 32000-2, 14.8.4.8.3 + TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically diff --git a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml index 9247da18..83584e9e 100644 --- a/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml +++ b/PDF_UA/1/7.5 Tables/verapdf-profile-7-5-t02.xml @@ -13,8 +13,7 @@ then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders == '' - TD references undefined Header(s) %1, and Headers for this table cell cannot be determined - via algorithm from ISO 32000-2, 14.8.4.8.3 + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically unknownHeaders diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index d02708ea..96b3dea0 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -549,7 +549,7 @@ 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Value %1 of the Lang entry is not Language-Tag + Value %1 of the Lang entry is not a Language-Tag unicodeValue @@ -784,7 +784,7 @@ If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders != '' - TD does not contain Headers attribute, and Headers for this table cell cannot be determined via algorithm from ISO 32000-2, 14.8.4.8.3 + TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically @@ -796,7 +796,7 @@ If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders == '' - TD references undefined Header(s) %1, and Headers for this table cell cannot be determined via algorithm from ISO 32000-2, 14.8.4.8.3 + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically unknownHeaders @@ -902,7 +902,7 @@ An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' - %1 annotation is artifact or is nested within %2 tag (standard type = %3) instead of Annot + %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot Subtype structParentType @@ -948,7 +948,7 @@ Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S annots_size == 0 || Tabs == 'S' - A page containing an annotation contains a Tabs key with value %1 instead of S + A page with annotation(s) contains Tabs key with value %1 instead of S Tabs @@ -960,7 +960,7 @@ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - A Widget annotation is artifact or is nested within %1 tag (standard type = %2) instead of Form + A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form structParentType structParentStandardType @@ -987,7 +987,7 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 - A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link + A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link structParentType structParentStandardType diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 2ed6dcd5..dbe84f09 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1337,7 +1337,7 @@ 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Value %1 of the Lang entry is not Language-Tag + Value %1 of the Lang entry is not a Language-Tag unicodeValue @@ -1582,7 +1582,7 @@ If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders != '' - TD does not contain Headers attribute, and Headers for this table cell cannot be determined via algorithm from ISO 32000-2, 14.8.4.8.3 + TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically @@ -1594,7 +1594,7 @@ If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute hasConnectedHeader != false || unknownHeaders == '' - TD references undefined Header(s) %1, and Headers for this table cell cannot be determined via algorithm from ISO 32000-2, 14.8.4.8.3 + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically unknownHeaders @@ -1700,7 +1700,7 @@ An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' - %1 annotation is artifact or is nested within %2 tag (standard type = %3) instead of Annot + %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot Subtype structParentType @@ -1746,7 +1746,7 @@ Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S annots_size == 0 || Tabs == 'S' - A page containing an annotation contains a Tabs key with value %1 instead of S + A page with annotation(s) contains Tabs key with value %1 instead of S Tabs @@ -1758,7 +1758,7 @@ A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - A Widget annotation is artifact or is nested within %1 tag (standard type = %2) instead of Form + A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form structParentType structParentStandardType @@ -1786,7 +1786,7 @@ structParentStandardType == 'Link' || structParentStandardType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2 - A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference + A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference structParentType structParentStandardType From 046364438dd8d76e8fda1233d660c170b0222d4a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 30 Nov 2023 13:16:57 +0300 Subject: [PATCH 490/557] Update update-PDFA-profiles-workflow.yml --- .../update-PDFA-profiles-workflow.yml | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/.github/workflows/update-PDFA-profiles-workflow.yml b/.github/workflows/update-PDFA-profiles-workflow.yml index 21f1d19b..e27285dc 100644 --- a/.github/workflows/update-PDFA-profiles-workflow.yml +++ b/.github/workflows/update-PDFA-profiles-workflow.yml @@ -25,24 +25,20 @@ jobs: - uses: actions/checkout@v2 with: submodules: true + token: ${{ secrets.WORKFLOW_TOKEN }} - name: Set up JDK 1.11 uses: actions/setup-java@v1 with: java-version: 1.11 - - name: Run 'update-PDFA-profiles.yml' action in veraPDF-tools - uses: actions/github-script@v6 + - name: Generate PDF_A profiles + run: | + curl -LO https://raw.githubusercontent.com/veraPDF/veraPDF-tools/master/profile-merger/profile-merger-1.0-SNAPSHOT.jar + java -jar profile-merger-1.0-SNAPSHOT.jar pdfa + rm profile-merger-1.0-SNAPSHOT.jar + - name: Push PDF_A profiles + uses: stefanzweifel/git-auto-commit-action@v5 with: - github-token: ${{ secrets.WORKFLOW_TOKEN }} - script: | - await github.rest.actions.createWorkflowDispatch({ - owner: 'veraPDF', - repo: 'veraPDF-tools', - workflow_id: 'update-PDFA-profiles.yml', - ref: 'master', - inputs: { - commit: "${{ github.event.head_commit.message }}" - } - }) + commit_message: ${{ github.event.head_commit.message }} - name: Notify slack if action didn't run if: failure() From 9672e2771d69ca379bcd7fd390a35ad3fc4d1a13 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 29 Nov 2023 11:58:14 +0300 Subject: [PATCH 491/557] Update WCAG and PDF/UA rules --- .../update-PDFUA-profiles-workflow.yml | 44 +++++ .../7.2 Text/verapdf-profile-7-2-t03-t15.xml | 187 ------------------ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml | 27 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t05.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml | 23 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t12.xml | 23 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml | 24 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml | 24 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml | 23 +++ .../7.2 Text/verapdf-profile-7-2-t17-t20.xml | 69 ------- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t18.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t19.xml | 27 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t20.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26.xml | 25 +++ ...26-t27.xml => verapdf-profile-7-2-t27.xml} | 18 +- .../7.2 Text/verapdf-profile-7-2-t36-t38.xml | 53 ----- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t37.xml | 25 +++ PDF_UA/1/7.2 Text/verapdf-profile-7-2-t38.xml | 25 +++ PDF_UA/WCAG-21-Complete.xml | 3 +- .../verapdf-profile-1-3-4-t01.xml | 0 .../verapdf-profile-1-4-3-t01.xml | 0 .../verapdf-profile-4-1-2-t01.xml | 0 .../verapdf-profile-4-1-2-t02.xml | 0 .../verapdf-profile-4-1-2-t03.xml | 0 .../verapdf-profile-4-1-2-t06.xml | 0 .../verapdf-profile-4-1-2-t07.xml | 0 .../verapdf-profile-4-1-2-t08.xml | 0 .../verapdf-profile-4-1-2-t09.xml | 0 .../verapdf-profile-4-1-2-t10.xml | 0 .../verapdf-profile-4-1-2-t11.xml | 0 .../WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml | 23 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml | 23 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-1-t09.xml | 25 +++ .../PDF_UA/1/verapdf-profile-7-18-5-t01.xml | 27 +++ .../PDF_UA/1/verapdf-profile-7-18-8-t01.xml | 24 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t03.xml | 28 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t04.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t05.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t06.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t07.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t08.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t09.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t10.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t11.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t12.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t16.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t17.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t18.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t19.xml | 28 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t20.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t26.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t27.xml | 28 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t28.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t36.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t37.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t38.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t39.xml | 27 +++ .../WCAG/PDF_UA/1/verapdf-profile-7-2-t40.xml | 27 +++ .../PDF_UA/1/verapdf-profile-7-4-4-t01.xml | 21 ++ .../PDF_UA/1/verapdf-profile-7-4-4-t02.xml | 26 +++ .../PDF_UA/1/verapdf-profile-7-4-4-t03.xml | 26 +++ 71 files changed, 1441 insertions(+), 327 deletions(-) create mode 100644 .github/workflows/update-PDFUA-profiles-workflow.yml delete mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t05.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t12.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml delete mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t18.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t19.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t20.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26.xml rename PDF_UA/1/7.2 Text/{verapdf-profile-7-2-t26-t27.xml => verapdf-profile-7-2-t27.xml} (59%) delete mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t37.xml create mode 100644 PDF_UA/1/7.2 Text/verapdf-profile-7-2-t38.xml rename PDF_UA/WCAG/{ => 2.1}/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml (100%) rename PDF_UA/WCAG/{ => 2.1}/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml (100%) rename PDF_UA/WCAG/{ => 2.1}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml (100%) rename PDF_UA/WCAG/{ => 2.1}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml (100%) rename PDF_UA/WCAG/{ => 2.1}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml (100%) rename PDF_UA/WCAG/{ => 2.1}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml (100%) rename PDF_UA/WCAG/{ => 2.1}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml (100%) rename PDF_UA/WCAG/{ => 2.1}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml (100%) rename PDF_UA/WCAG/{ => 2.1}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml (100%) rename PDF_UA/WCAG/{ => 2.1}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml (100%) rename PDF_UA/WCAG/{ => 2.1}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml (100%) create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t09.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-5-t01.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-8-t01.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t03.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t04.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t05.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t06.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t07.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t08.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t09.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t10.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t11.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t12.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t16.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t17.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t18.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t19.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t20.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t26.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t27.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t28.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t36.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t37.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t38.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t39.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t40.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t01.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t02.xml create mode 100644 PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t03.xml diff --git a/.github/workflows/update-PDFUA-profiles-workflow.yml b/.github/workflows/update-PDFUA-profiles-workflow.yml new file mode 100644 index 00000000..a8927bed --- /dev/null +++ b/.github/workflows/update-PDFUA-profiles-workflow.yml @@ -0,0 +1,44 @@ +name: Update PDF_UA profiles + +on: + push: + branches: + [ integration ] + paths: + - 'PDF_UA/1/**' + - 'PDF_UA/2/**' + - 'PDF_UA/WCAG/PDF_UA/**' + - 'PDF_UA/WCAG-21.xml' + +jobs: + update-profiles: + if: github.repository == 'veraPDF/veraPDF-validation-profiles' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + token: ${{ secrets.WORKFLOW_TOKEN }} + - name: Set up JDK 1.11 + uses: actions/setup-java@v1 + with: + java-version: 1.11 + - name: Generate PDF_UA profiles + run: | + curl -LO https://raw.githubusercontent.com/veraPDF/veraPDF-tools/master/profile-merger/profile-merger-1.0-SNAPSHOT.jar + java -jar profile-merger-1.0-SNAPSHOT.jar pdfua + rm profile-merger-1.0-SNAPSHOT.jar + - name: Push PDF_UA profiles + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: ${{ github.event.head_commit.message }} + + - name: Notify slack if action didn't run + if: failure() + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }} + uses: voxmedia/github-action-slack-notify-build@v1 + with: + channel_id: C03E3JJGLQL + status: FAILED + color: danger diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml deleted file mode 100644 index c4440993..00000000 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03-t15.xml +++ /dev/null @@ -1,187 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.2 Text - Table structure - A table-related structure element should used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337 -
- - - - - Table element may contain only TR, THead, TBody, TFoot and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' - && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - - Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption - - kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' - && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() - - - - - - - - - TR element should be contained in Table, THead, TBody or TFoot element - /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) - - TR element contained in %1 instead of Table, THead, TBody or TFoot element - - parentStandardType - - - - - - - - - THead element should be contained in Table element - parentStandardType == 'Table' - - THead element contained in %1 instead of Table element - - parentStandardType - - - - - - - - - TBody element should be contained in Table element - parentStandardType == 'Table' - - TBody element contained in %1 instead of Table element - - parentStandardType - - - - - - - - - TFoot element should be contained in Table element - parentStandardType == 'Table' - - TFoot element contained in %1 instead of Table element - - parentStandardType - - - - - - - - - TH element should be contained in TR element - parentStandardType == 'TR' - - TH element contained in %1 instead of TR element - - parentStandardType - - - - - - - - - TD element should be contained in TR element - parentStandardType == 'TR' - - TD element contained in %1 instead of TR element - - parentStandardType - - - - - - - - - TR element may contain only TH and TD elements - /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - - TR element contains %1 element(s) instead of TH or TD - - kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() - - - - - - - - - Table element should contain zero or one THead kid - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 - - Table element contains more than one THead kid - - - - - - - - - Table element should contain zero or one TFoot kid - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 - - Table element contains more than one TFoot kid - - - - - - - - - If Table element contains TFoot kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - - Table element contains TFoot kid, but not contains TBody kids - - - - - - - - - If Table element contains THead kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - - Table element contains THead kid, but not contains TBody kids - - - - - - - - - Table cell shall not have intersection with other cells - hasIntersection != true - - Table cell has intersection with other cells - - - - - - - - -
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml new file mode 100644 index 00000000..7b5ca71a --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t03.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of Table + Table element may contain only TR, THead, TBody, TFoot and Caption elements +
+ + + + + Table element may contain only TR, THead, TBody, TFoot and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml new file mode 100644 index 00000000..e91d23a4 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t04.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TR + TR element should be contained in Table, THead, TBody or TFoot element +
+ + + + + TR element should be contained in Table, THead, TBody or TFoot element + /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) + + TR element contained in %1 instead of Table, THead, TBody or TFoot element + + parentStandardType + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t05.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t05.xml new file mode 100644 index 00000000..837c55cd --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t05.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of THead + THead element should be contained in Table element +
+ + + + + THead element should be contained in Table element + parentStandardType == 'Table' + + THead element contained in %1 instead of Table element + + parentStandardType + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml new file mode 100644 index 00000000..2c9f8a2d --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t06.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TBody + TBody element should be contained in Table element +
+ + + + + TBody element should be contained in Table element + parentStandardType == 'Table' + + TBody element contained in %1 instead of Table element + + parentStandardType + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml new file mode 100644 index 00000000..b995cde7 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t07.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TFoot + TFoot element should be contained in Table element +
+ + + + + TFoot element should be contained in Table element + parentStandardType == 'Table' + + TFoot element contained in %1 instead of Table element + + parentStandardType + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml new file mode 100644 index 00000000..3f3e10e6 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t08.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TH + TH element should be contained in TR element +
+ + + + + TH element should be contained in TR element + parentStandardType == 'TR' + + TH element contained in %1 instead of TR element + + parentStandardType + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml new file mode 100644 index 00000000..dd609574 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t09.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TD + TD element should be contained in TR element +
+ + + + + TD element should be contained in TR element + parentStandardType == 'TR' + + TD element contained in %1 instead of TR element + + parentStandardType + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml new file mode 100644 index 00000000..1c822f10 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t10.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of TR + TR element may contain only TH and TD elements +
+ + + + + TR element may contain only TH and TD elements + /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + TR element contains %1 element(s) instead of TH or TD + + kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml new file mode 100644 index 00000000..6c7a532f --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t11.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - count of THead + Table element should contain zero or one THead kid +
+ + + + + Table element should contain zero or one THead kid + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 + + Table element contains more than one THead kid + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t12.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t12.xml new file mode 100644 index 00000000..7f63de98 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t12.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - count of TFoot + Table element should contain zero or one TFoot kid +
+ + + + + Table element should contain zero or one TFoot kid + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 + + Table element contains more than one TFoot kid + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml new file mode 100644 index 00000000..c4fd4b4c --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - TFoot and TBody + If Table element contains TFoot kid, Table element should contain one or more TBody kids +
+ + + + + If Table element contains TFoot kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains TFoot kid, but not contains TBody kids + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml new file mode 100644 index 00000000..4fdaaa08 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - THead and TBody + If Table element contains THead kid, Table element should contain one or more TBody kids +
+ + + + + If Table element contains THead kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains THead kid, but not contains TBody kids + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml new file mode 100644 index 00000000..d44c566f --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Intersections of cells + Table cell shall not have intersection with other cells +
+ + + + + Table cell shall not have intersection with other cells + hasIntersection != true + + Table cell has intersection with other cells + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml deleted file mode 100644 index cecc3a6e..00000000 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17-t20.xml +++ /dev/null @@ -1,69 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.2 Text - List structure - A list-related structure element should used in a way that conform to Table 336 in ISO 32000-1 -
- - - - - LI element should be contained in L element - parentStandardType == 'L' - - LI element contained in %1 instead of L element - - parentStandardType - - - - - - - - - LBody element should be contained in LI element - parentStandardType == 'LI' - - LBody element contained in %1 instead of LI element - - parentStandardType - - - - - - - - - L element may contain only L, LI and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' - && elem != 'Caption').length == 0 || kidsStandardTypes == '' - - L element contains %1 element(s) instead of L, LI or Caption - - kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' - && elem != 'Caption').toString() - - - - - - - - - LI element may contain only Lbl and LBody elements - /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - - LI element contains %1 element(s) instead of Lbl or LBody - - kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() - - - - - - - - -
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17.xml new file mode 100644 index 00000000..4b33fd23 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t17.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of LI + LI element should be contained in L element +
+ + + + + LI element should be contained in L element + parentStandardType == 'L' + + LI element contained in %1 instead of L element + + parentStandardType + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t18.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t18.xml new file mode 100644 index 00000000..5cf0e259 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t18.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of LBody + LBody element should be contained in LI element +
+ + + + + LBody element should be contained in LI element + parentStandardType == 'LI' + + LBody element contained in %1 instead of LI element + + parentStandardType + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t19.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t19.xml new file mode 100644 index 00000000..66eef864 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t19.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of L + L element may contain only L, LI and Caption elements +
+ + + + + L element may contain only L, LI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + L element contains %1 element(s) instead of L, LI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').toString() + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t20.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t20.xml new file mode 100644 index 00000000..bdb446bc --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t20.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of LI + LI element may contain only Lbl and LBody elements +
+ + + + + LI element may contain only Lbl and LBody elements + /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + LI element contains %1 element(s) instead of Lbl or LBody + + kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26.xml new file mode 100644 index 00000000..155c4b7b --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TOCI + TOCI element should be contained in TOC element +
+ + + + + TOCI element should be contained in TOC element + parentStandardType == 'TOC' + + TOCI element contained in %1 instead of TOC element + + parentStandardType + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t27.xml similarity index 59% rename from PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml rename to PDF_UA/1/7.2 Text/verapdf-profile-7-2-t27.xml index b09ee52b..fe0004f2 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t26-t27.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t27.xml @@ -1,25 +1,11 @@
- ISO 14289-1:2014 - 7.2 Text - TOC structure - A TOC-related structure element should used in a way that conform to Table 333 in ISO 32000-1 + ISO 14289-1:2014 - 7.2 Text - children of TOC + TOC element may contain only TOC, TOCI and Caption elements
- - - TOCI element should be contained in TOC element - parentStandardType == 'TOC' - - TOCI element contained in %1 instead of TOC element - - parentStandardType - - - - - - TOC element may contain only TOC, TOCI and Caption elements diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml deleted file mode 100644 index db4ef5fc..00000000 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36-t38.xml +++ /dev/null @@ -1,53 +0,0 @@ - - -
- ISO 14289-1:2014 - 7.2 Text - Table structure - A table-related structure element should used in a way that does not conform to the syntax defined in ISO 32000-1, Table 337 -
- - - - - THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - - THead element contains %1 element(s) instead of TR - - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - - - - - - - - - TBody element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - - TBody element contains %1 element(s) instead of TR - - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - - - - - - - - - TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - - TFoot element contains %1 element(s) instead of TR - - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - - - - - - - - -
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36.xml new file mode 100644 index 00000000..cb64a287 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t36.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of THead + THead element may contain only TR elements +
+ + + + + THead element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + THead element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t37.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t37.xml new file mode 100644 index 00000000..c9037517 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t37.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of TBody + TBody element may contain only TR elements +
+ + + + + TBody element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + TBody element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + + + + + + + +
diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t38.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t38.xml new file mode 100644 index 00000000..6ca7e831 --- /dev/null +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t38.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of TFoot + TFoot element may contain only TR elements +
+ + + + + TFoot element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + TFoot element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + + + + + + + +
diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index dbe84f09..64e8ffb2 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1783,8 +1783,7 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element - structParentStandardType == 'Link' || structParentStandardType == 'Reference' || - isOutsideCropBox == true || (F & 2) == 2 + structParentStandardType == 'Link' || structParentStandardType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2 A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference diff --git a/PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml b/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml similarity index 100% rename from PDF_UA/WCAG/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml rename to PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml diff --git a/PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml b/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml similarity index 100% rename from PDF_UA/WCAG/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml rename to PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml similarity index 100% rename from PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml similarity index 100% rename from PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml similarity index 100% rename from PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml similarity index 100% rename from PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml similarity index 100% rename from PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml similarity index 100% rename from PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml similarity index 100% rename from PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml similarity index 100% rename from PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml diff --git a/PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml similarity index 100% rename from PDF_UA/WCAG/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml new file mode 100644 index 00000000..da26652b --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Artifact inside tagged content + Content marked as Artifact should not present inside tagged content +
+ + + + + Content marked as Artifact should not present inside tagged content + tag != 'Artifact' || (parentStructureTag == null || isArtifact == true) + + Content marked as Artifact is present inside tagged content (tag %1) + + parentStructureTag + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml new file mode 100644 index 00000000..d892067c --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Tagged content inside Artifact + Tagged content should not present inside content marked as Artifact +
+ + + + + Tagged content should not present inside content marked as Artifact + (parentStructureTag == null || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + + Tagged content (tag %1) is present inside content marked as Artifact + + parentStructureTag + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t09.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t09.xml new file mode 100644 index 00000000..e437e799 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t09.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Dc title + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc + is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which + clearly identifies the document +
+ + + + + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where + dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, + which clearly identifies the document + dc_title != null && dc_title != '' + + Metadata stream does not contain dc:title + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-5-t01.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-5-t01.xml new file mode 100644 index 00000000..d197156f --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-5-t01.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.5 Links - Link annotation + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element +
+ + + + + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element + structParentStandardType == 'Link' || structParentStandardType == 'Reference' || + isOutsideCropBox == true || (F & 2) == 2 + + A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference + + structParentType + structParentStandardType + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-8-t01.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-8-t01.xml new file mode 100644 index 00000000..5c4671bb --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-18-8-t01.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-1:2014 - 7.18 Annotations - 7.18.8 PrinterMark - Logical structure + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page + elements as defined in ISO 32000-1:2008, 14.8.2.2.3 +
+ + + + + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3 + (structParentType == null || isArtifact == true) || isOutsideCropBox == true || (F & 2) == 2 + + A PrinterMark annotation is included in logical structure + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t03.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t03.xml new file mode 100644 index 00000000..11358166 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t03.xml @@ -0,0 +1,28 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of Table + Table element may contain only TR, THead, TBody, TFoot and Caption elements +
+ + + + + Table element may contain only TR, THead, TBody, TFoot and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t04.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t04.xml new file mode 100644 index 00000000..ab5371e1 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t04.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TR + TR element should be contained in Table, THead, TBody or TFoot element +
+ + + + + TR element should be contained in Table, THead, TBody or TFoot element + /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) + + TR element contained in %1 instead of Table, THead, TBody or TFoot element + + parentStandardType + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t05.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t05.xml new file mode 100644 index 00000000..52f29578 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t05.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of THead + THead element should be contained in Table element +
+ + + + + THead element should be contained in Table element + parentStandardType == 'Table' + + THead element contained in %1 instead of Table element + + parentStandardType + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t06.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t06.xml new file mode 100644 index 00000000..01225bd3 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t06.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TBody + TBody element should be contained in Table element +
+ + + + + TBody element should be contained in Table element + parentStandardType == 'Table' + + TBody element contained in %1 instead of Table element + + parentStandardType + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t07.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t07.xml new file mode 100644 index 00000000..aef4eeb3 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t07.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TFoot + TFoot element should be contained in Table element +
+ + + + + TFoot element should be contained in Table element + parentStandardType == 'Table' + + TFoot element contained in %1 instead of Table element + + parentStandardType + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t08.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t08.xml new file mode 100644 index 00000000..a81986e7 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t08.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TH + TH element should be contained in TR element +
+ + + + + TH element should be contained in TR element + parentStandardType == 'TR' + + TH element contained in %1 instead of TR element + + parentStandardType + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t09.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t09.xml new file mode 100644 index 00000000..19ae1fa4 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t09.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TD + TD element should be contained in TR element +
+ + + + + TD element should be contained in TR element + parentStandardType == 'TR' + + TD element contained in %1 instead of TR element + + parentStandardType + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t10.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t10.xml new file mode 100644 index 00000000..db533c81 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t10.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of TR + TR element may contain only TH and TD elements +
+ + + + + TR element may contain only TH and TD elements + /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + TR element contains %1 element(s) instead of TH or TD + + kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t11.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t11.xml new file mode 100644 index 00000000..3db0cf15 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t11.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - count of THead + Table element should contain zero or one THead kid +
+ + + + + Table element should contain zero or one THead kid + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 + + Table element contains more than one THead kid + + + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t12.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t12.xml new file mode 100644 index 00000000..959de3ab --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t12.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - count of TFoot + Table element should contain zero or one TFoot kid +
+ + + + + Table element should contain zero or one TFoot kid + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 + + Table element contains more than one TFoot kid + + + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml new file mode 100644 index 00000000..bd31d94e --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - TFoot and TBody + If Table element contains TFoot kid, Table element should contain one or more TBody kids +
+ + + + + If Table element contains TFoot kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains TFoot kid, but not contains TBody kids + + + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml new file mode 100644 index 00000000..6bcb3b0f --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - THead and TBody + If Table element contains THead kid, Table element should contain one or more TBody kids +
+ + + + + If Table element contains THead kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains THead kid, but not contains TBody kids + + + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t16.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t16.xml new file mode 100644 index 00000000..ceb14dbf --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t16.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Caption of Table + Table element may contain a Caption element as its first or last kid +
+ + + + + Table element may contain a Caption element as its first or last kid + kidsStandardTypes.indexOf('&Caption&') < 0 + + Table element contains Caption as its %1 child instead of first or last one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t17.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t17.xml new file mode 100644 index 00000000..45d51003 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t17.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of LI + LI element should be contained in L element +
+ + + + + LI element should be contained in L element + parentStandardType == 'L' + + LI element contained in %1 instead of L element + + parentStandardType + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t18.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t18.xml new file mode 100644 index 00000000..48047505 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t18.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of LBody + LBody element should be contained in LI element +
+ + + + + LBody element should be contained in LI element + parentStandardType == 'LI' + + LBody element contained in %1 instead of LI element + + parentStandardType + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t19.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t19.xml new file mode 100644 index 00000000..5f5ca145 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t19.xml @@ -0,0 +1,28 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of L + L element may contain only L, LI and Caption elements +
+ + + + + L element may contain only L, LI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + L element contains %1 element(s) instead of L, LI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').toString() + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t20.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t20.xml new file mode 100644 index 00000000..b1fcc1b9 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t20.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of LI + LI element may contain only Lbl and LBody elements +
+ + + + + LI element may contain only Lbl and LBody elements + /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + LI element contains %1 element(s) instead of Lbl or LBody + + kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t26.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t26.xml new file mode 100644 index 00000000..d67011ee --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t26.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - parent of TOCI + TOCI element should be contained in TOC element +
+ + + + + TOCI element should be contained in TOC element + parentStandardType == 'TOC' + + TOCI element contained in %1 instead of TOC element + + parentStandardType + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t27.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t27.xml new file mode 100644 index 00000000..4edc9dc9 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t27.xml @@ -0,0 +1,28 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of TOC + TOC element may contain only TOC, TOCI and Caption elements +
+ + + + + TOC element may contain only TOC, TOCI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + TOC element contains %1 element(s) instead of TOC, TOCI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' + && elem != 'Caption').toString() + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t28.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t28.xml new file mode 100644 index 00000000..3f14d588 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t28.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Caption of TOC + TOC element may contain a Caption element only as its first kid +
+ + + + + TOC element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + TOC element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t36.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t36.xml new file mode 100644 index 00000000..fa94f866 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t36.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of THead + THead element may contain only TR elements +
+ + + + + THead element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + THead element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t37.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t37.xml new file mode 100644 index 00000000..9292b24a --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t37.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of TBody + TBody element may contain only TR elements +
+ + + + + TBody element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + TBody element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t38.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t38.xml new file mode 100644 index 00000000..33586e03 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t38.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - children of TFoot + TFoot element may contain only TR elements +
+ + + + + TFoot element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + TFoot element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t39.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t39.xml new file mode 100644 index 00000000..940ccbdb --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t39.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Caption of Table + Table element may contain only one Caption element +
+ + + + + Table element may contain only one Caption element + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 + + Table element contains %1 Caption elements instead of one + + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t40.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t40.xml new file mode 100644 index 00000000..df512db8 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t40.xml @@ -0,0 +1,27 @@ + + +
+ ISO 14289-1:2014 - 7.2 Text - Caption of List + L element may contain a Caption element only as its first kid +
+ + + + + L element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + L element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + structureID + + + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t01.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t01.xml new file mode 100644 index 00000000..f3f76c0a --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t01.xml @@ -0,0 +1,21 @@ + + +
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - Number of H + Each node in the tag tree shall contain at most one child H tag +
+ + + + + Each node in the tag tree shall contain at most one child H tag + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + A node contains more than one H tag + + + + + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t02.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t02.xml new file mode 100644 index 00000000..70a5bdf3 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t02.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn + All documents shall be either strongly or weakly structured, but not both +
+ + + + + All documents shall be either strongly or weakly structured, but not both + usesHn == false + + Document uses both H and H# tags + + + + + + + + false + true + + +
diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t03.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t03.xml new file mode 100644 index 00000000..cf11b4e7 --- /dev/null +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-4-4-t03.xml @@ -0,0 +1,26 @@ + + +
+ ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - H and Hn + All documents shall be either strongly or weakly structured, but not both +
+ + + + + All documents shall be either strongly or weakly structured, but not both + usesH == false + + Document uses both H and H# tags + + + + + + + + false + true + + +
From fd8f255d0254ee7f277bf802bdc35920c9b607ce Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 30 Nov 2023 11:33:10 +0000 Subject: [PATCH 492/557] Merge pull request #381 from veraPDF/update_profiles Update WCAG and PDF/UA rules --- output/PDFUA-1.xml | 1293 +++++++++++++++++++++ output/WCAG-21-Complete.xml | 2095 +++++++++++++++++++++++++++++++++++ 2 files changed, 3388 insertions(+) create mode 100644 output/PDFUA-1.xml create mode 100644 output/WCAG-21-Complete.xml diff --git a/output/PDFUA-1.xml b/output/PDFUA-1.xml new file mode 100644 index 00000000..164a2914 --- /dev/null +++ b/output/PDFUA-1.xml @@ -0,0 +1,1293 @@ + + +
+ PDF/UA-1 validation profile + Validation rules against ISO 14289-1:2014 +
+ + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema + UAIdentification_size == 1 + + The document metadata stream doesn't contains PDF/UA Identification Schema + + + + + + + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms + part == 1 + + The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file + + part + + + + + + + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + partPrefix == null || partPrefix == "pdfuaid" + + Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + amdPrefix == null || amdPrefix == "pdfuaid" + + Property amd of the PDF/UA Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + + Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + corrPrefix == null || corrPrefix == "pdfuaid" + + Property corr of the PDF/UA Identification Schema has invalid namespace prefix %1 + + corrPrefix + + + + + + + Content marked as Artifact should not present inside tagged content + tag != 'Artifact' || parentStructureTag == null + + Content marked as Artifact is present inside tagged content (tag %1) + + parentStructureTag + + + + + + + Tagged content should not present inside content marked as Artifact + parentStructureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + + Tagged content (tag %1) is present inside content marked as Artifact + + parentStructureTag + + + + + + + Content shall be marked as Artifact or tagged as real content + parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + + Content is neither marked as Artifact nor tagged as real content + + + + + + + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) + Suspects != true + + Suspects entry has a value of true + + + + + + + + + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type + circularMappingExist == true + + Non-standard structure type %1 is not mapped to a standard type + + valueS + + + + + + + + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists for %1 structure type + + valueS + + + + + + + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped + isRemappedStandardType == false + + Standard type %1 is remapped + + valueS + + + + + + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key + + + + + + + + + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document + dc_title != null + + Metadata stream does not contain dc:title + + + + + + + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true + DisplayDocTitle == true + + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2) + + ViewerPreferences + DisplayDocTitle + + + + + + + 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-1:2008, 14.7 + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + + Natural language in the Outline entries shall be determined + gSizeCatalogLang != 0 + + Natural language in the Outline entries cannot be determined + + + + + + + Table element may contain only TR, THead, TBody, TFoot and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() + + + + + + + + + TR element should be contained in Table, THead, TBody or TFoot element + /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) + + TR element contained in %1 instead of Table, THead, TBody or TFoot element + + parentStandardType + + + + + + + + + THead element should be contained in Table element + parentStandardType == 'Table' + + THead element contained in %1 instead of Table element + + parentStandardType + + + + + + + + + TBody element should be contained in Table element + parentStandardType == 'Table' + + TBody element contained in %1 instead of Table element + + parentStandardType + + + + + + + + + TFoot element should be contained in Table element + parentStandardType == 'Table' + + TFoot element contained in %1 instead of Table element + + parentStandardType + + + + + + + + + TH element should be contained in TR element + parentStandardType == 'TR' + + TH element contained in %1 instead of TR element + + parentStandardType + + + + + + + + + TD element should be contained in TR element + parentStandardType == 'TR' + + TD element contained in %1 instead of TR element + + parentStandardType + + + + + + + + + TR element may contain only TH and TD elements + /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + TR element contains %1 element(s) instead of TH or TD + + kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() + + + + + + + + + Table element should contain zero or one THead kid + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 + + Table element contains more than one THead kid + + + + + + + + + Table element should contain zero or one TFoot kid + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 + + Table element contains more than one TFoot kid + + + + + + + + + If Table element contains TFoot kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains TFoot kid, but not contains TBody kids + + + + + + + + + If Table element contains THead kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains THead kid, but not contains TBody kids + + + + + + + + + Table cell shall not have intersection with other cells + hasIntersection != true + + Table cell has intersection with other cells + + + + + + + + + Table element may contain a Caption element as its first or last kid + kidsStandardTypes.indexOf('&Caption&') < 0 + + Table element contains Caption as its %1 child instead of first or last one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + + + + LI element should be contained in L element + parentStandardType == 'L' + + LI element contained in %1 instead of L element + + parentStandardType + + + + + + + + + LBody element should be contained in LI element + parentStandardType == 'LI' + + LBody element contained in %1 instead of LI element + + parentStandardType + + + + + + + + + L element may contain only L, LI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + L element contains %1 element(s) instead of L, LI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').toString() + + + + + + + + + LI element may contain only Lbl and LBody elements + /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + LI element contains %1 element(s) instead of Lbl or LBody + + kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() + + + + + + + + + Natural language for text in ActualText attribute shall be determined + ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute cannot be determined + + + + + + + Natural language for text in Alt attribute shall be determined + Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute cannot be determined + + + + + + + Natural language for text in E attribute shall be determined + E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + Natural language for text in E attribute cannot be determined + + + + + + + Natural language in the Contents entry for annotations shall be determined + Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the Contents entry for annotations cannot be determined + + + + + + + Natural language in the TU key for form fields shall be determined + TU == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the TU key for form fields cannot be determined + + + + + + + TOCI element should be contained in TOC element + parentStandardType == 'TOC' + + TOCI element contained in %1 instead of TOC element + + parentStandardType + + + + + + + + + TOC element may contain only TOC, TOCI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + TOC element contains %1 element(s) instead of TOC, TOCI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' + && elem != 'Caption').toString() + + + + + + + + + TOC element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + TOC element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + + + + 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages + /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) + + Value %1 of the Lang entry is not a Language-Tag + + unicodeValue + + + + + + + + + + Natural language for text in ActualText attribute in Span Marked Content shall be determined + tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute in Span Marked Content cannot be determined + + + + + + + Natural language for text in Alt attribute in Span Marked Content shall be determined + tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute in Span Marked Content cannot be determined + + + + + + + Natural language for text in E attribute in Span Marked Content shall be determined + tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + + Natural language for text in E attribute in Span Marked Content cannot be determined + + + + + + + Natural language for document metadata shall be determined + xDefault == false || gSizeCatalogLang != 0 + + Natural language for document metadata cannot be determined + + + + + + + Natural language for text in page content shall be determined + gSizeCatalogLang != 0 || Lang != null + + Natural language for text in page content cannot be determined + + + + + + + THead element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + THead element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + + + + + + + + TBody element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + TBody element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + + + + + + + + TFoot element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + TFoot element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + + + + + + + + Table element may contain only one Caption element + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 + + Table element contains %1 Caption elements instead of one + + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length + + + + + + + + + L element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + L element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + + + + Table columns shall have the same number of rows (taking into account row spans) + numberOfColumnWithWrongRowSpan == null + + Table columns 1 and %1 span different number of rows + + numberOfColumnWithWrongRowSpan + 1 + + + + + + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null + + Table rows 1 and %1 span different number of columns + + numberOfRowWithWrongColumnSpan + 1 + + + + + + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null + + Table rows 1 and %1 span different number of columns (%2 and %3 respectively) + + numberOfRowWithWrongColumnSpan + 1 + columnSpan + wrongColumnSpan + + + + + + + + + Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 + (Alt != null && Alt != '') || ActualText != null + + Figure structure element neither has an alternate description nor a replacement text + + + + + + + + + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it + hasCorrectNestingLevel == true + + Heading level %1 is skipped in a descending sequence of header levels + + nestingLevel - 1 + + + + + + + + + Each node in the tag tree shall contain at most one child H tag + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + A node contains more than one H tag + + + + + + + All documents shall be either strongly or weakly structured, but not both + usesHn == false + + Document uses both H and H# tags + + + + + + + All documents shall be either strongly or weakly structured, but not both + usesH == false + + Document uses both H and H# tags + + + + + + + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute + hasConnectedHeader != false || unknownHeaders != '' + + TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically + + + + + + + + + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute + hasConnectedHeader != false || unknownHeaders == '' + + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically + + unknownHeaders + + + + + + + + + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes + (Alt != null && Alt != '') || ActualText != null + + Formula structure element neither has an alternate description nor a replacement text + + + + + + + + + Note tag shall have ID entry + noteID != null && noteID != '' + + ID key of the Note tag is not present + + + + + + + Each Note tag shall have unique ID key + hasDuplicateNoteID == false + + ID key %1 of the Note tag is non-unique + + noteID + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + The AS key shall not appear in any optional content configuration dictionary + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys + containsEF == false || (F != null && F != '' && UF != null && UF != '') + + The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2) + + F + UF + + + + + + + Dynamic XFA forms shall not be used + dynamicRender != 'required' + + Dynamic XFA forms is present + + + + + + + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true + P != null && (P & 512) == 512 + + The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2) + + P + P != null ? (P & 512) >> 9 : null + + + + + + + + + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' + + %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot + + Subtype + structParentType + structParentStandardType + + + + + + + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') + + %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element + + Subtype + + + + + + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) + isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) + + + + + + + Annotations of subtype TrapNet shall not be permitted + isOutsideCropBox == true || (F & 2) == 2 + + An annotation of subtype TrapNet exists + + + + + + + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S + annots_size == 0 || Tabs == 'S' + + A page with annotation(s) contains Tabs key with value %1 instead of S + + Tabs + + + + + + + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 + structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 + + A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form + + structParentType + structParentStandardType + + + + + + + + + If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340 + roleAttribute != null || hasOneInteractiveChild == true + + The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation + + + + + + + + + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element + structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 + + A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link + + structParentType + structParentStandardType + + + + + + + + + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3 + (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 + + A link annotation does not include an alternate description in the Contents Key + + + + + + + + + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required + CT != null + + CT key is missing from the media clip data dictionary + + + + + + + + + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required + hasCorrectAlt == true + + Alt key (value %1) is missing from the media clip data dictionary or has incorrect value + + Alt + + + + + + + + + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3 + structParentType == null || isOutsideCropBox == true || (F & 2) == 2 + + A PrinterMark annotation is included in logical structure + + + + + + + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2 + isUniqueSemanticParent == true + + Form XObject contains MCIDs and is referenced more than once + + + + + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + + + + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 + + A non-standard CMap %1 is not embedded + + CMapName + + + + + + + + + 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 + WMode == dictWMode + + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + + + + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" + + A CMap references another non-standard CMap %1 + + CMapName + + + + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + 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 according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true + + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset + + + + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + + + + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) + + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + + + + + + + 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + + Encoding + containsDifferences + differencesAreUnicodeCompliant + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + + + + + + + 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 ISO 14289-1, 7.21.7 + toUnicode != null + + The glyph can not be mapped to Unicode + + + + + + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + + + + + + + A PDF/UA compliant document 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 + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + + 0 + Lang_size + + + false + true + + + false + true + + +
diff --git a/output/WCAG-21-Complete.xml b/output/WCAG-21-Complete.xml new file mode 100644 index 00000000..17fc7267 --- /dev/null +++ b/output/WCAG-21-Complete.xml @@ -0,0 +1,2095 @@ + + +
+ WCAG-2.1-Complete validation profile + Validation rules against WCAG 2.1 and ISO 14289-1:2014 +
+ + + + + Text should not contain repeated non space characters + isNonSpace == false || numberOfRepeatedCharacters < 5 + + Text contains %1 repeated non space characters + + numberOfRepeatedCharacters + + + + + + + Text should not contain repeated space characters + isNonSpace == true || numberOfRepeatedCharacters < 3 + + Text contains %1 repeated space characters + + numberOfRepeatedCharacters + + + + + + + Underlined text + isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 + + Underlined text is detected + + + + + + + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element + hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element + + + + + + + Pages shall have the same orientation + orientation == 'Square' || gMostCommonPageOrientation == orientation + + Page %1 has different orientation + + pageNumber + 1 + + + + + + + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + contrastRatio = %1 + + contrastRatio + + + + + + + Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality + textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + textSize = %1 + + textSize + + + + + + + Document should not contain illegible font + fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) + + Document contains illegible font + + + + + + + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page + page != lastPage || hasBBox == true + + "Figure" structure element on a single page with no bounding box + + + + + + + + + Links shall contain an alternate description via their Contents or Alt keys or in the text value + (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false) + + A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value + + + + + + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + + + + Table shouldn't have merged cells + colSpan == 1 && rowSpan == 1 + + Table has merged cells + + + + structureID + + + + + + + Incorrect use of a paragraph + correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Incorrect use of a span + correctSemanticScore >= 0.75 || correctType == null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Incorrect use of a heading + correctSemanticScore >= 0.75 || correctType == null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Incorrect use of a numbered heading + correctSemanticScore >= 0.75 || correctType == null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Incorrect table element + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + Missing table element + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + This structure element should be a heading instead of a paragraph + correctType != 'H' && correctType != 'Hn' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a span instead of a paragraph + correctType != 'Span' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a span + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a heading instead of a span + correctType != 'H' && correctType != 'Hn' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a heading + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a numbered heading + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant paragraph + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant span + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant heading + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant numbered heading + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a caption instead of a paragraph + correctType != 'Caption' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of list elements shall be semantically appropriate + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + The structure type and attributes of a list shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list item shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list body shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + A table element is incorrectly tagged as a list element or a list has the wrong numbering + hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a part or several different paragraphs instead of a paragraph + correctType != 'Part' || correctSemanticScore < 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a TOCI shall be semantically appropriate + correctType != 'TOCI' || standardType == 'TOCI' + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + TOCI shall contain one or more text lines + errorCodes.split(',').filter(elem => elem == 1000).length == 0 + + TOCI doesn't have a text + + + + structureID + + + + + + + TOCI page label shall match the destination page + errorCodes.split(',').filter(elem => elem == 1002).length == 0 + + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] + + structureID + + + + + + + TOCI shall have a right alignment that matches a right alignment of other TOCIs + errorCodes.split(',').filter(elem => elem == 1003).length == 0 + + TOCI has a bad right alignment + + + + structureID + + + + + + + This list and neighbor list(s) should be tagged as one list + errorCodes.split(',').filter(elem => elem == 1200).length == 0 + + This list and neighbor list(s) should be tagged as one list + + + + structureID + + + + + + + This TOC and neighbor TOC(s) should be tagged as one TOC + errorCodes.split(',').filter(elem => elem == 1006).length == 0 + + This TOC and neighbor TOC(s) should be tagged as one TOC + + + + structureID + + + + + + + The number of rows of this table does not match the number of rows of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1104).length == 0 + + The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1] + structureID + + + + + + + The number of columns of this table does not match the number of columns of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1105).length == 0 + + The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1] + structureID + + + + + + + The row span of this table cell does not match the row span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1106).length == 0 + + The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1] + structureID + + + + + + + The column span of this table cell does not match the column span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1107).length == 0 + + The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1] + structureID + + + + + + + This content should be tagged as a list item + false + + This content should be tagged as a list item + + + + structureID + + + + + + + This cell is below than some cells in the next row + errorCodes.split(',').filter(elem => elem == 1100).length == 0 + + This cell is below than some cells in the next row + + + + structureID + + + + + + + This cell is above than some cells in the previous row + errorCodes.split(',').filter(elem => elem == 1101).length == 0 + + This cell is above than some cells in the previous row + + + + structureID + + + + + + + This cell is to the right of some cells in the next column + errorCodes.split(',').filter(elem => elem == 1102).length == 0 + + This cell is to the right of some cells in the next column + + + + structureID + + + + + + + This cell is to the left of some cells in the previous column + errorCodes.split(',').filter(elem => elem == 1103).length == 0 + + This cell is to the left of some cells in the previous column + + + + structureID + + + + + + + This structure element should be a table cell instead of a table header + correctType != 'TD' + + score = %1, correct type = %2, id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + TOCI text should be presented in the document + errorCodes.split(',').filter(elem => elem == 1007).length == 0 + + TOCI text is not found in the document + + + + structureID + + + + + + + TOCI text should be presented on a destination page + errorCodes.split(',').filter(elem => elem == 1008).length == 0 + + TOCI text is not found on a destination page %wrongDestinationPage%. Possible destination page number(s): %possiblePageNumbers% + + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[1] + structureID + + + + + + + TOCI should have a destination + errorCodes.split(',').filter(elem => elem == 1009).length == 0 + + TOCI doesn't have a destination. Possible destination page number(s): %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] + + structureID + + + + + + + TOCI should have a correct page label + errorCodes.split(',').filter(elem => elem == 1010).length == 0 + + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] + + structureID + + + + + + + TOCI should have a correct numbering + errorCodes.split(',').filter(elem => elem == 1011).length == 0 + + TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering% + + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[1] + structureID + + + + + + + List should contain list items + errorCodes.split(',').filter(elem => elem == 1201).length == 0 + + List contains only one child - list + + + + + + + The structure type and attributes of a list item shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1202).length == 0 + + This list item should be tagged as several different list items + + + + + + + This structure element should be a note instead of a span + correctType != 'Note' + + This structure element should be a note instead of a span + + + + + + + This structure element should be a note instead of a paragraph + correctType != 'Note' + + This structure element should be a note instead of a paragraph + + + + + + + The structure type and attributes of a heading shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1300).length == 0 + + This node is the single child with content. One of its ancestor nodes should be tagged as heading instead of this one + + + + + + + The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema + UAIdentification_size == 1 + + The document metadata stream doesn't contains PDF/UA Identification Schema + + + + + + + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms + part == 1 + + The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file + + part + + + + + + + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + partPrefix == null || partPrefix == "pdfuaid" + + Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + amdPrefix == null || amdPrefix == "pdfuaid" + + Property amd of the PDF/UA Identification Schema has invalid namespace prefix %1 + + amdPrefix + + + + + + + Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + corrPrefix == null || corrPrefix == "pdfuaid" + + Property corr of the PDF/UA Identification Schema has invalid namespace prefix %1 + + corrPrefix + + + + + + + Content marked as Artifact should not present inside tagged content + tag != 'Artifact' || parentStructureTag == null + + Content marked as Artifact is present inside tagged content (tag %1) + + parentStructureTag + + + + + + + Tagged content should not present inside content marked as Artifact + parentStructureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + + Tagged content (tag %1) is present inside content marked as Artifact + + parentStructureTag + + + + + + + Content shall be marked as Artifact or tagged as real content + parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + + Content is neither marked as Artifact nor tagged as real content + + + + + + + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) + Suspects != true + + Suspects entry has a value of true + + + + + + + + + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type + circularMappingExist == true + + Non-standard structure type %1 is not mapped to a standard type + + valueS + + + + + + + + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists for %1 structure type + + valueS + + + + + + + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped + isRemappedStandardType == false + + Standard type %1 is remapped + + valueS + + + + + + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key + + + + + + + + + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document + dc_title != null + + Metadata stream does not contain dc:title + + + + + + + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true + DisplayDocTitle == true + + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2) + + ViewerPreferences + DisplayDocTitle + + + + + + + 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-1:2008, 14.7 + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + + Natural language in the Outline entries shall be determined + gSizeCatalogLang != 0 + + Natural language in the Outline entries cannot be determined + + + + + + + Table element may contain only TR, THead, TBody, TFoot and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() + + + + + + + + + TR element should be contained in Table, THead, TBody or TFoot element + /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) + + TR element contained in %1 instead of Table, THead, TBody or TFoot element + + parentStandardType + + + + + + + + + THead element should be contained in Table element + parentStandardType == 'Table' + + THead element contained in %1 instead of Table element + + parentStandardType + + + + + + + + + TBody element should be contained in Table element + parentStandardType == 'Table' + + TBody element contained in %1 instead of Table element + + parentStandardType + + + + + + + + + TFoot element should be contained in Table element + parentStandardType == 'Table' + + TFoot element contained in %1 instead of Table element + + parentStandardType + + + + + + + + + TH element should be contained in TR element + parentStandardType == 'TR' + + TH element contained in %1 instead of TR element + + parentStandardType + + + + + + + + + TD element should be contained in TR element + parentStandardType == 'TR' + + TD element contained in %1 instead of TR element + + parentStandardType + + + + + + + + + TR element may contain only TH and TD elements + /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + TR element contains %1 element(s) instead of TH or TD + + kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() + + + + + + + + + Table element should contain zero or one THead kid + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 + + Table element contains more than one THead kid + + + + + + + + + Table element should contain zero or one TFoot kid + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 + + Table element contains more than one TFoot kid + + + + + + + + + If Table element contains TFoot kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains TFoot kid, but not contains TBody kids + + + + + + + + + If Table element contains THead kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains THead kid, but not contains TBody kids + + + + + + + + + Table cell shall not have intersection with other cells + hasIntersection != true + + Table cell has intersection with other cells + + + + + + + + + Table element may contain a Caption element as its first or last kid + kidsStandardTypes.indexOf('&Caption&') < 0 + + Table element contains Caption as its %1 child instead of first or last one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + + + + LI element should be contained in L element + parentStandardType == 'L' + + LI element contained in %1 instead of L element + + parentStandardType + + + + + + + + + LBody element should be contained in LI element + parentStandardType == 'LI' + + LBody element contained in %1 instead of LI element + + parentStandardType + + + + + + + + + L element may contain only L, LI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + L element contains %1 element(s) instead of L, LI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').toString() + + + + + + + + + LI element may contain only Lbl and LBody elements + /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + LI element contains %1 element(s) instead of Lbl or LBody + + kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() + + + + + + + + + Natural language for text in ActualText attribute shall be determined + ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute cannot be determined + + + + + + + Natural language for text in Alt attribute shall be determined + Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute cannot be determined + + + + + + + Natural language for text in E attribute shall be determined + E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + Natural language for text in E attribute cannot be determined + + + + + + + Natural language in the Contents entry for annotations shall be determined + Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the Contents entry for annotations cannot be determined + + + + + + + Natural language in the TU key for form fields shall be determined + TU == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the TU key for form fields cannot be determined + + + + + + + TOCI element should be contained in TOC element + parentStandardType == 'TOC' + + TOCI element contained in %1 instead of TOC element + + parentStandardType + + + + + + + + + TOC element may contain only TOC, TOCI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + TOC element contains %1 element(s) instead of TOC, TOCI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' + && elem != 'Caption').toString() + + + + + + + + + TOC element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + TOC element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + + + + 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages + /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) + + Value %1 of the Lang entry is not a Language-Tag + + unicodeValue + + + + + + + + + + Natural language for text in ActualText attribute in Span Marked Content shall be determined + tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute in Span Marked Content cannot be determined + + + + + + + Natural language for text in Alt attribute in Span Marked Content shall be determined + tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute in Span Marked Content cannot be determined + + + + + + + Natural language for text in E attribute in Span Marked Content shall be determined + tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + + Natural language for text in E attribute in Span Marked Content cannot be determined + + + + + + + Natural language for document metadata shall be determined + xDefault == false || gSizeCatalogLang != 0 + + Natural language for document metadata cannot be determined + + + + + + + Natural language for text in page content shall be determined + gSizeCatalogLang != 0 || Lang != null + + Natural language for text in page content cannot be determined + + + + + + + THead element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + THead element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + + + + + + + + TBody element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + TBody element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + + + + + + + + TFoot element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + TFoot element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + + + + + + + + Table element may contain only one Caption element + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 + + Table element contains %1 Caption elements instead of one + + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length + + + + + + + + + L element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + L element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + + + + Table columns shall have the same number of rows (taking into account row spans) + numberOfColumnWithWrongRowSpan == null + + Table columns 1 and %1 span different number of rows + + numberOfColumnWithWrongRowSpan + 1 + + + + + + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null + + Table rows 1 and %1 span different number of columns + + numberOfRowWithWrongColumnSpan + 1 + + + + + + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null + + Table rows 1 and %1 span different number of columns (%2 and %3 respectively) + + numberOfRowWithWrongColumnSpan + 1 + columnSpan + wrongColumnSpan + + + + + + + + + Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 + (Alt != null && Alt != '') || ActualText != null + + Figure structure element neither has an alternate description nor a replacement text + + + + + + + + + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it + hasCorrectNestingLevel == true + + Heading level %1 is skipped in a descending sequence of header levels + + nestingLevel - 1 + + + + + + + + + Each node in the tag tree shall contain at most one child H tag + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + A node contains more than one H tag + + + + + + + All documents shall be either strongly or weakly structured, but not both + usesHn == false + + Document uses both H and H# tags + + + + + + + All documents shall be either strongly or weakly structured, but not both + usesH == false + + Document uses both H and H# tags + + + + + + + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute + hasConnectedHeader != false || unknownHeaders != '' + + TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically + + + + + + + + + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute + hasConnectedHeader != false || unknownHeaders == '' + + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically + + unknownHeaders + + + + + + + + + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes + (Alt != null && Alt != '') || ActualText != null + + Formula structure element neither has an alternate description nor a replacement text + + + + + + + + + Note tag shall have ID entry + noteID != null && noteID != '' + + ID key of the Note tag is not present + + + + + + + Each Note tag shall have unique ID key + hasDuplicateNoteID == false + + ID key %1 of the Note tag is non-unique + + noteID + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + The AS key shall not appear in any optional content configuration dictionary + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys + containsEF == false || (F != null && F != '' && UF != null && UF != '') + + The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2) + + F + UF + + + + + + + Dynamic XFA forms shall not be used + dynamicRender != 'required' + + Dynamic XFA forms is present + + + + + + + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true + P != null && (P & 512) == 512 + + The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2) + + P + P != null ? (P & 512) >> 9 : null + + + + + + + + + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' + + %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot + + Subtype + structParentType + structParentStandardType + + + + + + + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') + + %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element + + Subtype + + + + + + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) + isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) + + + + + + + Annotations of subtype TrapNet shall not be permitted + isOutsideCropBox == true || (F & 2) == 2 + + An annotation of subtype TrapNet exists + + + + + + + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S + annots_size == 0 || Tabs == 'S' + + A page with annotation(s) contains Tabs key with value %1 instead of S + + Tabs + + + + + + + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 + structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 + + A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form + + structParentType + structParentStandardType + + + + + + + + + If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340 + roleAttribute != null || hasOneInteractiveChild == true + + The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation + + + + + + + + + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element + structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 + + A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link + + structParentType + structParentStandardType + + + + + + + + + Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3 + (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 + + A link annotation does not include an alternate description in the Contents Key + + + + + + + + + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required + CT != null + + CT key is missing from the media clip data dictionary + + + + + + + + + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required + hasCorrectAlt == true + + Alt key (value %1) is missing from the media clip data dictionary or has incorrect value + + Alt + + + + + + + + + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3 + structParentType == null || isOutsideCropBox == true || (F & 2) == 2 + + A PrinterMark annotation is included in logical structure + + + + + + + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2 + isUniqueSemanticParent == true + + Form XObject contains MCIDs and is referenced more than once + + + + + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + + + + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 + + A non-standard CMap %1 is not embedded + + CMapName + + + + + + + + + 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 + WMode == dictWMode + + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + + + + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" + + A CMap references another non-standard CMap %1 + + CMapName + + + + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + 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 according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true + + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset + + + + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + + + + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) + + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + + + + + + + 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + + Encoding + containsDifferences + differencesAreUnicodeCompliant + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + + + + + + + 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 ISO 14289-1, 7.21.7 + toUnicode != null + + The glyph can not be mapped to Unicode + + + + + + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + + + + + + + A PDF/UA compliant document 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 + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + + null + mostCommonOrientation + + + 0 + Lang_size + + + false + true + + + false + true + + +
From fcbb01f99d4df94ad739889e0139fd06d3c1842f Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 30 Nov 2023 14:41:45 +0300 Subject: [PATCH 493/557] Delete output directory --- output/PDFUA-1.xml | 1293 --------------------- output/WCAG-21-Complete.xml | 2095 ----------------------------------- 2 files changed, 3388 deletions(-) delete mode 100644 output/PDFUA-1.xml delete mode 100644 output/WCAG-21-Complete.xml diff --git a/output/PDFUA-1.xml b/output/PDFUA-1.xml deleted file mode 100644 index 164a2914..00000000 --- a/output/PDFUA-1.xml +++ /dev/null @@ -1,1293 +0,0 @@ - - -
- PDF/UA-1 validation profile - Validation rules against ISO 14289-1:2014 -
- - - - - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema - UAIdentification_size == 1 - - The document metadata stream doesn't contains PDF/UA Identification Schema - - - - - - - The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms - part == 1 - - The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file - - part - - - - - - - Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - partPrefix == null || partPrefix == "pdfuaid" - - Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 - - partPrefix - - - - - - - Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - amdPrefix == null || amdPrefix == "pdfuaid" - - Property amd of the PDF/UA Identification Schema has invalid namespace prefix %1 - - amdPrefix - - - - - - - Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - corrPrefix == null || corrPrefix == "pdfuaid" - - Property corr of the PDF/UA Identification Schema has invalid namespace prefix %1 - - corrPrefix - - - - - - - Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || parentStructureTag == null - - Content marked as Artifact is present inside tagged content (tag %1) - - parentStructureTag - - - - - - - Tagged content should not present inside content marked as Artifact - parentStructureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 - - Tagged content (tag %1) is present inside content marked as Artifact - - parentStructureTag - - - - - - - Content shall be marked as Artifact or tagged as real content - parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 - - Content is neither marked as Artifact nor tagged as real content - - - - - - - Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) - Suspects != true - - Suspects entry has a value of true - - - - - - - - - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type - circularMappingExist == true - - Non-standard structure type %1 is not mapped to a standard type - - valueS - - - - - - - - - A circular mapping shall not exist - circularMappingExist != true - - A circular mapping exists for %1 structure type - - valueS - - - - - - - Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped - isRemappedStandardType == false - - Standard type %1 is remapped - - valueS - - - - - - - - - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 - metadata_size == 1 - - The document catalog dictionary doesn't contain metadata key - - - - - - - - - The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document - dc_title != null - - Metadata stream does not contain dc:title - - - - - - - The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true - DisplayDocTitle == true - - ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2) - - ViewerPreferences - DisplayDocTitle - - - - - - - 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-1:2008, 14.7 - StructTreeRoot_size == 1 - - StructTreeRoot entry is not present in the document catalog - - - - - - - - - Natural language in the Outline entries shall be determined - gSizeCatalogLang != 0 - - Natural language in the Outline entries cannot be determined - - - - - - - Table element may contain only TR, THead, TBody, TFoot and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - - Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption - - kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' - && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() - - - - - - - - - TR element should be contained in Table, THead, TBody or TFoot element - /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) - - TR element contained in %1 instead of Table, THead, TBody or TFoot element - - parentStandardType - - - - - - - - - THead element should be contained in Table element - parentStandardType == 'Table' - - THead element contained in %1 instead of Table element - - parentStandardType - - - - - - - - - TBody element should be contained in Table element - parentStandardType == 'Table' - - TBody element contained in %1 instead of Table element - - parentStandardType - - - - - - - - - TFoot element should be contained in Table element - parentStandardType == 'Table' - - TFoot element contained in %1 instead of Table element - - parentStandardType - - - - - - - - - TH element should be contained in TR element - parentStandardType == 'TR' - - TH element contained in %1 instead of TR element - - parentStandardType - - - - - - - - - TD element should be contained in TR element - parentStandardType == 'TR' - - TD element contained in %1 instead of TR element - - parentStandardType - - - - - - - - - TR element may contain only TH and TD elements - /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - - TR element contains %1 element(s) instead of TH or TD - - kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() - - - - - - - - - Table element should contain zero or one THead kid - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 - - Table element contains more than one THead kid - - - - - - - - - Table element should contain zero or one TFoot kid - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 - - Table element contains more than one TFoot kid - - - - - - - - - If Table element contains TFoot kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - - Table element contains TFoot kid, but not contains TBody kids - - - - - - - - - If Table element contains THead kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - - Table element contains THead kid, but not contains TBody kids - - - - - - - - - Table cell shall not have intersection with other cells - hasIntersection != true - - Table cell has intersection with other cells - - - - - - - - - Table element may contain a Caption element as its first or last kid - kidsStandardTypes.indexOf('&Caption&') < 0 - - Table element contains Caption as its %1 child instead of first or last one - - kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - - - - - - - - - LI element should be contained in L element - parentStandardType == 'L' - - LI element contained in %1 instead of L element - - parentStandardType - - - - - - - - - LBody element should be contained in LI element - parentStandardType == 'LI' - - LBody element contained in %1 instead of LI element - - parentStandardType - - - - - - - - - L element may contain only L, LI and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - - L element contains %1 element(s) instead of L, LI or Caption - - kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' - && elem != 'Caption').toString() - - - - - - - - - LI element may contain only Lbl and LBody elements - /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - - LI element contains %1 element(s) instead of Lbl or LBody - - kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() - - - - - - - - - Natural language for text in ActualText attribute shall be determined - ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 - - Natural language for text in ActualText attribute cannot be determined - - - - - - - Natural language for text in Alt attribute shall be determined - Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 - - Natural language for text in Alt attribute cannot be determined - - - - - - - Natural language for text in E attribute shall be determined - E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 - - Natural language for text in E attribute cannot be determined - - - - - - - Natural language in the Contents entry for annotations shall be determined - Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language in the Contents entry for annotations cannot be determined - - - - - - - Natural language in the TU key for form fields shall be determined - TU == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language in the TU key for form fields cannot be determined - - - - - - - TOCI element should be contained in TOC element - parentStandardType == 'TOC' - - TOCI element contained in %1 instead of TOC element - - parentStandardType - - - - - - - - - TOC element may contain only TOC, TOCI and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - - TOC element contains %1 element(s) instead of TOC, TOCI or Caption - - kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' - && elem != 'Caption').toString() - - - - - - - - - TOC element may contain a Caption element only as its first kid - kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 - - TOC element contains Caption as its %1 child instead of first one - - kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - - - - - - - - - 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages - /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - - Value %1 of the Lang entry is not a Language-Tag - - unicodeValue - - - - - - - - - - Natural language for text in ActualText attribute in Span Marked Content shall be determined - tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - - Natural language for text in ActualText attribute in Span Marked Content cannot be determined - - - - - - - Natural language for text in Alt attribute in Span Marked Content shall be determined - tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - - Natural language for text in Alt attribute in Span Marked Content cannot be determined - - - - - - - Natural language for text in E attribute in Span Marked Content shall be determined - tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - - Natural language for text in E attribute in Span Marked Content cannot be determined - - - - - - - Natural language for document metadata shall be determined - xDefault == false || gSizeCatalogLang != 0 - - Natural language for document metadata cannot be determined - - - - - - - Natural language for text in page content shall be determined - gSizeCatalogLang != 0 || Lang != null - - Natural language for text in page content cannot be determined - - - - - - - THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - - THead element contains %1 element(s) instead of TR - - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - - - - - - - - - TBody element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - - TBody element contains %1 element(s) instead of TR - - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - - - - - - - - - TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - - TFoot element contains %1 element(s) instead of TR - - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - - - - - - - - - Table element may contain only one Caption element - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 - - Table element contains %1 Caption elements instead of one - - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length - - - - - - - - - L element may contain a Caption element only as its first kid - kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 - - L element contains Caption as its %1 child instead of first one - - kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - - - - - - - - - Table columns shall have the same number of rows (taking into account row spans) - numberOfColumnWithWrongRowSpan == null - - Table columns 1 and %1 span different number of rows - - numberOfColumnWithWrongRowSpan + 1 - - - - - - - - - Table rows shall have the same number of columns (taking into account column spans) - numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null - - Table rows 1 and %1 span different number of columns - - numberOfRowWithWrongColumnSpan + 1 - - - - - - - - - Table rows shall have the same number of columns (taking into account column spans) - numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null - - Table rows 1 and %1 span different number of columns (%2 and %3 respectively) - - numberOfRowWithWrongColumnSpan + 1 - columnSpan - wrongColumnSpan - - - - - - - - - Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 - (Alt != null && Alt != '') || ActualText != null - - Figure structure element neither has an alternate description nor a replacement text - - - - - - - - - For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it - hasCorrectNestingLevel == true - - Heading level %1 is skipped in a descending sequence of header levels - - nestingLevel - 1 - - - - - - - - - Each node in the tag tree shall contain at most one child H tag - kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 - - A node contains more than one H tag - - - - - - - All documents shall be either strongly or weakly structured, but not both - usesHn == false - - Document uses both H and H# tags - - - - - - - All documents shall be either strongly or weakly structured, but not both - usesH == false - - Document uses both H and H# tags - - - - - - - If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute - hasConnectedHeader != false || unknownHeaders != '' - - TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically - - - - - - - - - If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute - hasConnectedHeader != false || unknownHeaders == '' - - TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically - - unknownHeaders - - - - - - - - - All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes - (Alt != null && Alt != '') || ActualText != null - - Formula structure element neither has an alternate description nor a replacement text - - - - - - - - - Note tag shall have ID entry - noteID != null && noteID != '' - - ID key of the Note tag is not present - - - - - - - Each Note tag shall have unique ID key - hasDuplicateNoteID == false - - ID key %1 of the Note tag is non-unique - - noteID - - - - - - - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key - Name != null && Name.length() > 0 - - Missing or empty Name entry of the optional content configuration dictionary - - - - - - - The AS key shall not appear in any optional content configuration dictionary - AS == null - - AS key is present in the optional content configuration dictionary - - - - - - - The file specification dictionary for an embedded file shall contain the non-empty F and UF keys - containsEF == false || (F != null && F != '' && UF != null && UF != '') - - The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2) - - F - UF - - - - - - - Dynamic XFA forms shall not be used - dynamicRender != 'required' - - Dynamic XFA forms is present - - - - - - - An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true - P != null && (P & 512) == 512 - - The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2) - - P - P != null ? (P & 512) >> 9 : null - - - - - - - - - An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' - - %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot - - Subtype - structParentType - structParentStandardType - - - - - - - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') - - %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element - - Subtype - - - - - - - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) - isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') - - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) - - - - - - - Annotations of subtype TrapNet shall not be permitted - isOutsideCropBox == true || (F & 2) == 2 - - An annotation of subtype TrapNet exists - - - - - - - Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S - annots_size == 0 || Tabs == 'S' - - A page with annotation(s) contains Tabs key with value %1 instead of S - - Tabs - - - - - - - A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 - structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - - A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form - - structParentType - structParentStandardType - - - - - - - - - If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340 - roleAttribute != null || hasOneInteractiveChild == true - - The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation - - - - - - - - - Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element - structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 - - A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link - - structParentType - structParentStandardType - - - - - - - - - Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3 - (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 - - A link annotation does not include an alternate description in the Contents Key - - - - - - - - - In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required - CT != null - - CT key is missing from the media clip data dictionary - - - - - - - - - In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required - hasCorrectAlt == true - - Alt key (value %1) is missing from the media clip data dictionary or has incorrect value - - Alt - - - - - - - - - PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3 - structParentType == null || isOutsideCropBox == true || (F & 2) == 2 - - A PrinterMark annotation is included in logical structure - - - - - - - - - A conforming file shall not contain any reference XObjects - containsRef == false - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - - - - - The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2 - isUniqueSemanticParent == true - - Form XObject contains MCIDs and is referenced more than once - - - - - - - - - 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) - - CIDFontOrdering - CMapOrdering - CIDFontRegistry - CMapRegistry - CIDFontSupplement - CMapSupplement - - - - - - - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - - - - - - - All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 - 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" || embeddedFile_size == 1 - - A non-standard CMap %1 is not embedded - - CMapName - - - - - - - - - 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 - WMode == dictWMode - - WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical - - WMode - dictWMode - - - - - - - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 - 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" - - A CMap references another non-standard CMap %1 - - CMapName - - - - - - - - - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 - - The font program is not embedded - - - - - - - - - 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 according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor - renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - - - - - - - - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true - - A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program - - - - - - - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true - - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset - - - - - - - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - - Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) - - widthFromFontProgram - widthFromDictionary - - - - - - - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out - isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - - The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries - - - - - - - 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 - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) - - Encoding - containsDifferences - differencesAreUnicodeCompliant - - - - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - - - - - The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding - isSymbolic == false || nrCmaps == 1 || cmap30Present == true - - The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) - - nrCmaps - - - - - - - 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 ISO 14289-1, 7.21.7 - toUnicode != null - - The glyph can not be mapped to Unicode - - - - - - - - - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE - - - - - - - A PDF/UA compliant document 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 - name != ".notdef" - - The document contains a reference to the .notdef glyph - - - - - - - - 0 - Lang_size - - - false - true - - - false - true - - -
diff --git a/output/WCAG-21-Complete.xml b/output/WCAG-21-Complete.xml deleted file mode 100644 index 17fc7267..00000000 --- a/output/WCAG-21-Complete.xml +++ /dev/null @@ -1,2095 +0,0 @@ - - -
- WCAG-2.1-Complete validation profile - Validation rules against WCAG 2.1 and ISO 14289-1:2014 -
- - - - - Text should not contain repeated non space characters - isNonSpace == false || numberOfRepeatedCharacters < 5 - - Text contains %1 repeated non space characters - - numberOfRepeatedCharacters - - - - - - - Text should not contain repeated space characters - isNonSpace == true || numberOfRepeatedCharacters < 3 - - Text contains %1 repeated space characters - - numberOfRepeatedCharacters - - - - - - - Underlined text - isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 - - Underlined text is detected - - - - - - - If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element - hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 - - Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element - - - - - - - Pages shall have the same orientation - orientation == 'Square' || gMostCommonPageOrientation == orientation - - Page %1 has different orientation - - pageNumber + 1 - - - - - - - The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 - textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 - - contrastRatio = %1 - - contrastRatio - - - - - - - Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality - textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 - - textSize = %1 - - textSize - - - - - - - Document should not contain illegible font - fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) - - Document contains illegible font - - - - - - - Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page - page != lastPage || hasBBox == true - - "Figure" structure element on a single page with no bounding box - - - - - - - - - Links shall contain an alternate description via their Contents or Alt keys or in the text value - (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false) - - A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value - - - - - - - - - Table shouldn't have merged cells - ColSpan == 1 && RowSpan == 1 - - Table has merged cells - - - - - - - Table shouldn't have merged cells - ColSpan == 1 && RowSpan == 1 - - Table has merged cells - - - - - - - Table shouldn't have merged cells - colSpan == 1 && rowSpan == 1 - - Table has merged cells - - - - structureID - - - - - - - Incorrect use of a paragraph - correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Incorrect use of a span - correctSemanticScore >= 0.75 || correctType == null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Incorrect use of a heading - correctSemanticScore >= 0.75 || correctType == null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Incorrect use of a numbered heading - correctSemanticScore >= 0.75 || correctType == null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Incorrect table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) - - score = %1, correct type = %2, structure id = %3 - - correctSemanticScore - correctType - structureID - - - - - - - Missing table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) - - score = %1, correct type = %2, structure id = %3 - - correctSemanticScore - correctType - structureID - - - - - - - This structure element should be a heading instead of a paragraph - correctType != 'H' && correctType != 'Hn' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a span instead of a paragraph - correctType != 'Span' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a paragraph instead of a span - correctType != 'P' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a heading instead of a span - correctType != 'H' && correctType != 'Hn' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a paragraph instead of a heading - correctType != 'P' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a paragraph instead of a numbered heading - correctType != 'P' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Redundant paragraph - correctType != null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Redundant span - correctType != null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Redundant heading - correctType != null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Redundant numbered heading - correctType != null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a caption instead of a paragraph - correctType != 'Caption' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of list elements shall be semantically appropriate - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) - - score = %1, correct type = %2, structure id = %3 - - correctSemanticScore - correctType - structureID - - - - - - - The structure type and attributes of a list shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list item shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list body shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - A table element is incorrectly tagged as a list element or a list has the wrong numbering - hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a part or several different paragraphs instead of a paragraph - correctType != 'Part' || correctSemanticScore < 0.75 - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a TOCI shall be semantically appropriate - correctType != 'TOCI' || standardType == 'TOCI' - - score = %1, correct type = %2, structure id = %3 - - correctSemanticScore - correctType - structureID - - - - - - - TOCI shall contain one or more text lines - errorCodes.split(',').filter(elem => elem == 1000).length == 0 - - TOCI doesn't have a text - - - - structureID - - - - - - - TOCI page label shall match the destination page - errorCodes.split(',').filter(elem => elem == 1002).length == 0 - - TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] - - structureID - - - - - - - TOCI shall have a right alignment that matches a right alignment of other TOCIs - errorCodes.split(',').filter(elem => elem == 1003).length == 0 - - TOCI has a bad right alignment - - - - structureID - - - - - - - This list and neighbor list(s) should be tagged as one list - errorCodes.split(',').filter(elem => elem == 1200).length == 0 - - This list and neighbor list(s) should be tagged as one list - - - - structureID - - - - - - - This TOC and neighbor TOC(s) should be tagged as one TOC - errorCodes.split(',').filter(elem => elem == 1006).length == 0 - - This TOC and neighbor TOC(s) should be tagged as one TOC - - - - structureID - - - - - - - The number of rows of this table does not match the number of rows of the visual representation of this table - errorCodes.split(',').filter(elem => elem == 1104).length == 0 - - The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1] - structureID - - - - - - - The number of columns of this table does not match the number of columns of the visual representation of this table - errorCodes.split(',').filter(elem => elem == 1105).length == 0 - - The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1] - structureID - - - - - - - The row span of this table cell does not match the row span of the visual representation of this table cell - errorCodes.split(',').filter(elem => elem == 1106).length == 0 - - The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1] - structureID - - - - - - - The column span of this table cell does not match the column span of the visual representation of this table cell - errorCodes.split(',').filter(elem => elem == 1107).length == 0 - - The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1] - structureID - - - - - - - This content should be tagged as a list item - false - - This content should be tagged as a list item - - - - structureID - - - - - - - This cell is below than some cells in the next row - errorCodes.split(',').filter(elem => elem == 1100).length == 0 - - This cell is below than some cells in the next row - - - - structureID - - - - - - - This cell is above than some cells in the previous row - errorCodes.split(',').filter(elem => elem == 1101).length == 0 - - This cell is above than some cells in the previous row - - - - structureID - - - - - - - This cell is to the right of some cells in the next column - errorCodes.split(',').filter(elem => elem == 1102).length == 0 - - This cell is to the right of some cells in the next column - - - - structureID - - - - - - - This cell is to the left of some cells in the previous column - errorCodes.split(',').filter(elem => elem == 1103).length == 0 - - This cell is to the left of some cells in the previous column - - - - structureID - - - - - - - This structure element should be a table cell instead of a table header - correctType != 'TD' - - score = %1, correct type = %2, id = %3 - - correctSemanticScore - correctType - structureID - - - - - - - TOCI text should be presented in the document - errorCodes.split(',').filter(elem => elem == 1007).length == 0 - - TOCI text is not found in the document - - - - structureID - - - - - - - TOCI text should be presented on a destination page - errorCodes.split(',').filter(elem => elem == 1008).length == 0 - - TOCI text is not found on a destination page %wrongDestinationPage%. Possible destination page number(s): %possiblePageNumbers% - - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1008)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1008)].split(';')[1] - structureID - - - - - - - TOCI should have a destination - errorCodes.split(',').filter(elem => elem == 1009).length == 0 - - TOCI doesn't have a destination. Possible destination page number(s): %1 - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] - - structureID - - - - - - - TOCI should have a correct page label - errorCodes.split(',').filter(elem => elem == 1010).length == 0 - - TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] - - structureID - - - - - - - TOCI should have a correct numbering - errorCodes.split(',').filter(elem => elem == 1011).length == 0 - - TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering% - - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1011)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1011)].split(';')[1] - structureID - - - - - - - List should contain list items - errorCodes.split(',').filter(elem => elem == 1201).length == 0 - - List contains only one child - list - - - - - - - The structure type and attributes of a list item shall be semantically appropriate - errorCodes.split(',').filter(elem => elem == 1202).length == 0 - - This list item should be tagged as several different list items - - - - - - - This structure element should be a note instead of a span - correctType != 'Note' - - This structure element should be a note instead of a span - - - - - - - This structure element should be a note instead of a paragraph - correctType != 'Note' - - This structure element should be a note instead of a paragraph - - - - - - - The structure type and attributes of a heading shall be semantically appropriate - errorCodes.split(',').filter(elem => elem == 1300).length == 0 - - This node is the single child with content. One of its ancestor nodes should be tagged as heading instead of this one - - - - - - - The PDF/UA version and conformance level of a file shall be specified using the PDF/UA Identification extension schema - UAIdentification_size == 1 - - The document metadata stream doesn't contains PDF/UA Identification Schema - - - - - - - The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms - part == 1 - - The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file - - part - - - - - - - Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - partPrefix == null || partPrefix == "pdfuaid" - - Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 - - partPrefix - - - - - - - Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - amdPrefix == null || amdPrefix == "pdfuaid" - - Property amd of the PDF/UA Identification Schema has invalid namespace prefix %1 - - amdPrefix - - - - - - - Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid - corrPrefix == null || corrPrefix == "pdfuaid" - - Property corr of the PDF/UA Identification Schema has invalid namespace prefix %1 - - corrPrefix - - - - - - - Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || parentStructureTag == null - - Content marked as Artifact is present inside tagged content (tag %1) - - parentStructureTag - - - - - - - Tagged content should not present inside content marked as Artifact - parentStructureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 - - Tagged content (tag %1) is present inside content marked as Artifact - - parentStructureTag - - - - - - - Content shall be marked as Artifact or tagged as real content - parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 - - Content is neither marked as Artifact nor tagged as real content - - - - - - - Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) - Suspects != true - - Suspects entry has a value of true - - - - - - - - - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type - circularMappingExist == true - - Non-standard structure type %1 is not mapped to a standard type - - valueS - - - - - - - - - A circular mapping shall not exist - circularMappingExist != true - - A circular mapping exists for %1 structure type - - valueS - - - - - - - Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped - isRemappedStandardType == false - - Standard type %1 is remapped - - valueS - - - - - - - - - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 - metadata_size == 1 - - The document catalog dictionary doesn't contain metadata key - - - - - - - - - The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document - dc_title != null - - Metadata stream does not contain dc:title - - - - - - - The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true - DisplayDocTitle == true - - ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2) - - ViewerPreferences - DisplayDocTitle - - - - - - - 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-1:2008, 14.7 - StructTreeRoot_size == 1 - - StructTreeRoot entry is not present in the document catalog - - - - - - - - - Natural language in the Outline entries shall be determined - gSizeCatalogLang != 0 - - Natural language in the Outline entries cannot be determined - - - - - - - Table element may contain only TR, THead, TBody, TFoot and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - - Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption - - kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' - && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() - - - - - - - - - TR element should be contained in Table, THead, TBody or TFoot element - /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) - - TR element contained in %1 instead of Table, THead, TBody or TFoot element - - parentStandardType - - - - - - - - - THead element should be contained in Table element - parentStandardType == 'Table' - - THead element contained in %1 instead of Table element - - parentStandardType - - - - - - - - - TBody element should be contained in Table element - parentStandardType == 'Table' - - TBody element contained in %1 instead of Table element - - parentStandardType - - - - - - - - - TFoot element should be contained in Table element - parentStandardType == 'Table' - - TFoot element contained in %1 instead of Table element - - parentStandardType - - - - - - - - - TH element should be contained in TR element - parentStandardType == 'TR' - - TH element contained in %1 instead of TR element - - parentStandardType - - - - - - - - - TD element should be contained in TR element - parentStandardType == 'TR' - - TD element contained in %1 instead of TR element - - parentStandardType - - - - - - - - - TR element may contain only TH and TD elements - /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - - TR element contains %1 element(s) instead of TH or TD - - kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() - - - - - - - - - Table element should contain zero or one THead kid - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 - - Table element contains more than one THead kid - - - - - - - - - Table element should contain zero or one TFoot kid - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 - - Table element contains more than one TFoot kid - - - - - - - - - If Table element contains TFoot kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - - Table element contains TFoot kid, but not contains TBody kids - - - - - - - - - If Table element contains THead kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - - Table element contains THead kid, but not contains TBody kids - - - - - - - - - Table cell shall not have intersection with other cells - hasIntersection != true - - Table cell has intersection with other cells - - - - - - - - - Table element may contain a Caption element as its first or last kid - kidsStandardTypes.indexOf('&Caption&') < 0 - - Table element contains Caption as its %1 child instead of first or last one - - kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - - - - - - - - - LI element should be contained in L element - parentStandardType == 'L' - - LI element contained in %1 instead of L element - - parentStandardType - - - - - - - - - LBody element should be contained in LI element - parentStandardType == 'LI' - - LBody element contained in %1 instead of LI element - - parentStandardType - - - - - - - - - L element may contain only L, LI and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - - L element contains %1 element(s) instead of L, LI or Caption - - kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' - && elem != 'Caption').toString() - - - - - - - - - LI element may contain only Lbl and LBody elements - /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - - LI element contains %1 element(s) instead of Lbl or LBody - - kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() - - - - - - - - - Natural language for text in ActualText attribute shall be determined - ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 - - Natural language for text in ActualText attribute cannot be determined - - - - - - - Natural language for text in Alt attribute shall be determined - Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 - - Natural language for text in Alt attribute cannot be determined - - - - - - - Natural language for text in E attribute shall be determined - E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 - - Natural language for text in E attribute cannot be determined - - - - - - - Natural language in the Contents entry for annotations shall be determined - Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language in the Contents entry for annotations cannot be determined - - - - - - - Natural language in the TU key for form fields shall be determined - TU == null || Lang_size != 0 || gSizeCatalogLang != 0 - - Natural language in the TU key for form fields cannot be determined - - - - - - - TOCI element should be contained in TOC element - parentStandardType == 'TOC' - - TOCI element contained in %1 instead of TOC element - - parentStandardType - - - - - - - - - TOC element may contain only TOC, TOCI and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - - TOC element contains %1 element(s) instead of TOC, TOCI or Caption - - kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' - && elem != 'Caption').toString() - - - - - - - - - TOC element may contain a Caption element only as its first kid - kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 - - TOC element contains Caption as its %1 child instead of first one - - kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - - - - - - - - - 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages - /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - - Value %1 of the Lang entry is not a Language-Tag - - unicodeValue - - - - - - - - - - Natural language for text in ActualText attribute in Span Marked Content shall be determined - tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - - Natural language for text in ActualText attribute in Span Marked Content cannot be determined - - - - - - - Natural language for text in Alt attribute in Span Marked Content shall be determined - tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - - Natural language for text in Alt attribute in Span Marked Content cannot be determined - - - - - - - Natural language for text in E attribute in Span Marked Content shall be determined - tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 - - Natural language for text in E attribute in Span Marked Content cannot be determined - - - - - - - Natural language for document metadata shall be determined - xDefault == false || gSizeCatalogLang != 0 - - Natural language for document metadata cannot be determined - - - - - - - Natural language for text in page content shall be determined - gSizeCatalogLang != 0 || Lang != null - - Natural language for text in page content cannot be determined - - - - - - - THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - - THead element contains %1 element(s) instead of TR - - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - - - - - - - - - TBody element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - - TBody element contains %1 element(s) instead of TR - - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - - - - - - - - - TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - - TFoot element contains %1 element(s) instead of TR - - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - - - - - - - - - Table element may contain only one Caption element - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 - - Table element contains %1 Caption elements instead of one - - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length - - - - - - - - - L element may contain a Caption element only as its first kid - kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 - - L element contains Caption as its %1 child instead of first one - - kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - - - - - - - - - Table columns shall have the same number of rows (taking into account row spans) - numberOfColumnWithWrongRowSpan == null - - Table columns 1 and %1 span different number of rows - - numberOfColumnWithWrongRowSpan + 1 - - - - - - - - - Table rows shall have the same number of columns (taking into account column spans) - numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null - - Table rows 1 and %1 span different number of columns - - numberOfRowWithWrongColumnSpan + 1 - - - - - - - - - Table rows shall have the same number of columns (taking into account column spans) - numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null - - Table rows 1 and %1 span different number of columns (%2 and %3 respectively) - - numberOfRowWithWrongColumnSpan + 1 - columnSpan - wrongColumnSpan - - - - - - - - - Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 - (Alt != null && Alt != '') || ActualText != null - - Figure structure element neither has an alternate description nor a replacement text - - - - - - - - - For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it - hasCorrectNestingLevel == true - - Heading level %1 is skipped in a descending sequence of header levels - - nestingLevel - 1 - - - - - - - - - Each node in the tag tree shall contain at most one child H tag - kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 - - A node contains more than one H tag - - - - - - - All documents shall be either strongly or weakly structured, but not both - usesHn == false - - Document uses both H and H# tags - - - - - - - All documents shall be either strongly or weakly structured, but not both - usesH == false - - Document uses both H and H# tags - - - - - - - If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute - hasConnectedHeader != false || unknownHeaders != '' - - TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically - - - - - - - - - If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute - hasConnectedHeader != false || unknownHeaders == '' - - TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically - - unknownHeaders - - - - - - - - - All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes - (Alt != null && Alt != '') || ActualText != null - - Formula structure element neither has an alternate description nor a replacement text - - - - - - - - - Note tag shall have ID entry - noteID != null && noteID != '' - - ID key of the Note tag is not present - - - - - - - Each Note tag shall have unique ID key - hasDuplicateNoteID == false - - ID key %1 of the Note tag is non-unique - - noteID - - - - - - - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key - Name != null && Name.length() > 0 - - Missing or empty Name entry of the optional content configuration dictionary - - - - - - - The AS key shall not appear in any optional content configuration dictionary - AS == null - - AS key is present in the optional content configuration dictionary - - - - - - - The file specification dictionary for an embedded file shall contain the non-empty F and UF keys - containsEF == false || (F != null && F != '' && UF != null && UF != '') - - The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2) - - F - UF - - - - - - - Dynamic XFA forms shall not be used - dynamicRender != 'required' - - Dynamic XFA forms is present - - - - - - - An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true - P != null && (P & 512) == 512 - - The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2) - - P - P != null ? (P & 512) >> 9 : null - - - - - - - - - An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' - - %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot - - Subtype - structParentType - structParentStandardType - - - - - - - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') - - %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element - - Subtype - - - - - - - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) - isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') - - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) - - - - - - - Annotations of subtype TrapNet shall not be permitted - isOutsideCropBox == true || (F & 2) == 2 - - An annotation of subtype TrapNet exists - - - - - - - Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S - annots_size == 0 || Tabs == 'S' - - A page with annotation(s) contains Tabs key with value %1 instead of S - - Tabs - - - - - - - A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 - structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - - A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form - - structParentType - structParentStandardType - - - - - - - - - If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340 - roleAttribute != null || hasOneInteractiveChild == true - - The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation - - - - - - - - - Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element - structParentStandardType == 'Link' || isOutsideCropBox == true || (F & 2) == 2 - - A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link - - structParentType - structParentStandardType - - - - - - - - - Links shall contain an alternate description via their Contents key as described in ISO 32000-1:2008, 14.9.3 - (Contents != null && Contents != '') || isOutsideCropBox == true || (F & 2) == 2 - - A link annotation does not include an alternate description in the Contents Key - - - - - - - - - In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required - CT != null - - CT key is missing from the media clip data dictionary - - - - - - - - - In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required - hasCorrectAlt == true - - Alt key (value %1) is missing from the media clip data dictionary or has incorrect value - - Alt - - - - - - - - - PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3 - structParentType == null || isOutsideCropBox == true || (F & 2) == 2 - - A PrinterMark annotation is included in logical structure - - - - - - - - - A conforming file shall not contain any reference XObjects - containsRef == false - - The document contains a reference XObject (Ref key in the form XObject dictionary) - - - - - - - The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2 - isUniqueSemanticParent == true - - Form XObject contains MCIDs and is referenced more than once - - - - - - - - - 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) - - CIDFontOrdering - CMapOrdering - CIDFontRegistry - CMapRegistry - CIDFontSupplement - CMapSupplement - - - - - - - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 - - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - - - - - - - - - All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 - 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" || embeddedFile_size == 1 - - A non-standard CMap %1 is not embedded - - CMapName - - - - - - - - - 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 - WMode == dictWMode - - WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical - - WMode - dictWMode - - - - - - - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 - 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" - - A CMap references another non-standard CMap %1 - - CMapName - - - - - - - - - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 - - The font program is not embedded - - - - - - - - - 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 according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor - renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true - - Not all glyphs referenced for rendering are present in the embedded font program - - - - - - - - - - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true - - A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program - - - - - - - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true - - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset - - - - - - - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - - Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) - - widthFromFontProgram - widthFromDictionary - - - - - - - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out - isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - - The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries - - - - - - - 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 - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) - - Encoding - containsDifferences - differencesAreUnicodeCompliant - - - - - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null - - A symbolic TrueType font specifies an Encoding entry in its dictionary - - - - - - - The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding - isSymbolic == false || nrCmaps == 1 || cmap30Present == true - - The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) - - nrCmaps - - - - - - - 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 ISO 14289-1, 7.21.7 - toUnicode != null - - The glyph can not be mapped to Unicode - - - - - - - - - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE - - - - - - - A PDF/UA compliant document 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 - name != ".notdef" - - The document contains a reference to the .notdef glyph - - - - - - - - null - mostCommonOrientation - - - 0 - Lang_size - - - false - true - - - false - true - - -
From e5b0993c67b63edce1f29bc5aeca50165381b8e5 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 30 Nov 2023 14:38:55 +0300 Subject: [PATCH 494/557] WCAG and PDF/UA. Reorder tags --- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml | 2 +- .../1/7.3 Graphics/verapdf-profile-7-3-t01.xml | 2 +- PDF_UA/WCAG-21.xml | 16 ++++++++-------- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml index 54d13580..d594f39c 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t24.xml @@ -7,7 +7,7 @@
- + Natural language in the Contents entry for annotations shall be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml index 623768ff..b17eb48a 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t33.xml @@ -6,7 +6,7 @@
- + Natural language for document metadata shall be determined xDefault == false || gSizeCatalogLang != 0 diff --git a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml index 73c487d5..c61f5bf5 100644 --- a/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml +++ b/PDF_UA/1/7.3 Graphics/verapdf-profile-7-3-t01.xml @@ -7,7 +7,7 @@
- + Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index e1fad187..dfb5c95a 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -40,7 +40,7 @@ - + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 @@ -62,7 +62,7 @@ - + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 @@ -132,7 +132,7 @@
- + Links shall contain an alternate description via their Contents or Alt keys or in the text value (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || @@ -307,7 +307,7 @@ - + This structure element should be a heading instead of a span correctType != 'H' && correctType != 'Hn' @@ -398,7 +398,7 @@ - + This structure element should be a caption instead of a paragraph correctType != 'Caption' @@ -474,7 +474,7 @@ - + A table element is incorrectly tagged as a list element or a list has the wrong numbering hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && @@ -822,7 +822,7 @@ - + This structure element should be a note instead of a span correctType != 'Note' @@ -832,7 +832,7 @@ - + This structure element should be a note instead of a paragraph correctType != 'Note' From a329844faf3a3d8ec08d731c647e13c2e6730feb Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 30 Nov 2023 11:43:19 +0000 Subject: [PATCH 495/557] WCAG and PDF/UA. Reorder tags --- PDF_UA/PDFUA-1.xml | 8 ++++---- PDF_UA/WCAG-21-Complete.xml | 26 +++++++++++++------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 96b3dea0..2720176b 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -1,6 +1,6 @@ -
+
PDF/UA-1 validation profile Validation rules against ISO 14289-1:2014
@@ -481,7 +481,7 @@ - + Natural language in the Contents entry for annotations shall be determined Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 @@ -589,7 +589,7 @@ - + Natural language for document metadata shall be determined xDefault == false || gSizeCatalogLang != 0 @@ -723,7 +723,7 @@ - + Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 (Alt != null && Alt != '') || ActualText != null diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 64e8ffb2..375d971f 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1,6 +1,6 @@ -
+
WCAG-2.1-Complete validation profile Validation rules against WCAG 2.1 and ISO 14289-1:2014
@@ -40,7 +40,7 @@ - + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 @@ -62,7 +62,7 @@ - + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 @@ -108,7 +108,7 @@ - + Links shall contain an alternate description via their Contents or Alt keys or in the text value (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false) @@ -273,7 +273,7 @@ - + This structure element should be a heading instead of a span correctType != 'H' && correctType != 'Hn' @@ -364,7 +364,7 @@ - + This structure element should be a caption instead of a paragraph correctType != 'Caption' @@ -430,7 +430,7 @@ - + A table element is incorrectly tagged as a list element or a list has the wrong numbering hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') @@ -774,7 +774,7 @@ - + This structure element should be a note instead of a span correctType != 'Note' @@ -784,7 +784,7 @@ - + This structure element should be a note instead of a paragraph correctType != 'Note' @@ -1263,7 +1263,7 @@ - + Natural language in the Contents entry for annotations shall be determined Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 @@ -1377,7 +1377,7 @@ - + Natural language for document metadata shall be determined xDefault == false || gSizeCatalogLang != 0 @@ -1521,7 +1521,7 @@ - + Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 (Alt != null && Alt != '') || ActualText != null @@ -1785,7 +1785,7 @@ Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element structParentStandardType == 'Link' || structParentStandardType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2 - A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference + A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference structParentType structParentStandardType From 40b4590c83fb6d0013e0c957074c37ad7710f463 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 4 Dec 2023 16:58:29 +0300 Subject: [PATCH 496/557] PDF/UA-1. Update rules 7.2-30 - 7.2-32 --- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml index 29e8cef1..5ba330ce 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t30.xml @@ -9,7 +9,7 @@ Natural language for text in ActualText attribute in Span Marked Content shall be determined - tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + tag != 'Span' || ActualText == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in ActualText attribute in Span Marked Content cannot be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml index c60e7588..d6404da1 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t31.xml @@ -9,7 +9,7 @@ Natural language for text in Alt attribute in Span Marked Content shall be determined - tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + tag != 'Span' || Alt == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in Alt attribute in Span Marked Content cannot be determined diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml index eed0d3e6..f97af42d 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t32.xml @@ -9,7 +9,7 @@ Natural language for text in E attribute in Span Marked Content shall be determined - tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + tag != 'Span' || E == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in E attribute in Span Marked Content cannot be determined From 1de9d9bfb25bf6270885b6ebd12a3d4a7d6d5c88 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 4 Dec 2023 14:06:46 +0000 Subject: [PATCH 497/557] PDF/UA-1. Update rules 7.2-30 - 7.2-32 --- PDF_UA/PDFUA-1.xml | 6 +++--- PDF_UA/WCAG-21-Complete.xml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 2720176b..82ec59da 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -562,7 +562,7 @@ Natural language for text in ActualText attribute in Span Marked Content shall be determined - tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + tag != 'Span' || ActualText == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in ActualText attribute in Span Marked Content cannot be determined @@ -572,7 +572,7 @@ Natural language for text in Alt attribute in Span Marked Content shall be determined - tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + tag != 'Span' || Alt == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in Alt attribute in Span Marked Content cannot be determined @@ -582,7 +582,7 @@ Natural language for text in E attribute in Span Marked Content shall be determined - tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + tag != 'Span' || E == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in E attribute in Span Marked Content cannot be determined diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 375d971f..6faa5fc4 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -1350,7 +1350,7 @@ Natural language for text in ActualText attribute in Span Marked Content shall be determined - tag != 'Span' || ActualText == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + tag != 'Span' || ActualText == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in ActualText attribute in Span Marked Content cannot be determined @@ -1360,7 +1360,7 @@ Natural language for text in Alt attribute in Span Marked Content shall be determined - tag != 'Span' || Alt == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + tag != 'Span' || Alt == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in Alt attribute in Span Marked Content cannot be determined @@ -1370,7 +1370,7 @@ Natural language for text in E attribute in Span Marked Content shall be determined - tag != 'Span' || E == null || Lang_size != 0 || inheritedLang != null || gSizeCatalogLang != 0 + tag != 'Span' || E == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 Natural language for text in E attribute in Span Marked Content cannot be determined From 30e307113b52d6d6c5c211d44d02e9bc0ee609dd Mon Sep 17 00:00:00 2001 From: Maxim Date: Sat, 2 Dec 2023 16:51:34 +0300 Subject: [PATCH 498/557] Add PDFUA-2 with ISO32005 profile --- ...update-library-PDFUA-profiles-workflow.yml | 2 +- PDF_UA/PDFUA-2-ISO32005.xml | 20932 ++++++++++++++++ 2 files changed, 20933 insertions(+), 1 deletion(-) create mode 100644 PDF_UA/PDFUA-2-ISO32005.xml diff --git a/.github/workflows/update-library-PDFUA-profiles-workflow.yml b/.github/workflows/update-library-PDFUA-profiles-workflow.yml index 09283cee..5b5513e5 100644 --- a/.github/workflows/update-library-PDFUA-profiles-workflow.yml +++ b/.github/workflows/update-library-PDFUA-profiles-workflow.yml @@ -31,7 +31,7 @@ jobs: git-user: "Git User" git-commit-message: ${{ github.event.head_commit.message }} git-commit-sign-off: "false" - excludes: 1:2:WCAG:ISO-32000-1-Tagged.xml:ISO-32000-2-Tagged.xml:ISO-32005-Tagged.xml:WCAG-21.xml:WCAG-21-Complete.xml:WCAG-21-Dev.xml:PDFA-1A.xml:PDFA-1B.xml:PDFA-2A.xml:PDFA-2B.xml:PDFA-2U.xml:PDFA-3A.xml:PDFA-3B.xml:PDFA-3U.xml:PDFA-4.xml:PDFA-4E.xml:PDFA-4F.xml:validationProfile.xsd + excludes: 1:2:WCAG:ISO-32000-1-Tagged.xml:ISO-32000-2-Tagged.xml:PDFUA-2-ISO32005.xml:ISO-32005-Tagged.xml:WCAG-21.xml:WCAG-21-Complete.xml:WCAG-21-Dev.xml:PDFA-1A.xml:PDFA-1B.xml:PDFA-2A.xml:PDFA-2B.xml:PDFA-2U.xml:PDFA-3A.xml:PDFA-3B.xml:PDFA-3U.xml:PDFA-4.xml:PDFA-4E.xml:PDFA-4F.xml:validationProfile.xsd - name: Notify slack if library wasn't updated if: failure() diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml new file mode 100644 index 00000000..0724971a --- /dev/null +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -0,0 +1,20932 @@ + + +
+ PDF/UA-2 + Tagged PDF validation profile + Validation rules against ISO 14289-2:202x and ISO 32005 +
+ + + + + The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema + UAIdentification_size == 1 + + The document metadata stream doesn't contains PDF/UA Identification Schema + + + + + + + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms + part == 2 + + The "part" property of the PDF/UA Identification Schema is %1 instead of 2 for PDF/UA-2 conforming file + + part + + + + + + + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + partPrefix == null || partPrefix == "pdfuaid" + + Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + + partPrefix + + + + + + + Property rev of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + revPrefix == null || revPrefix == "pdfuaid" + + Property rev of the PDF/UA Identification Schema has invalid namespace prefix %1 + + revPrefix + + + + + + + The value of pdfuaid:rev shall be the four digit year + /^\d{4}$/.test(rev) + + The value of pdfuaid:rev (%1) not the four digit year + + rev + + + + + + + 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 + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + + Content that is not considered real shall be an artifact + parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + + Content is neither marked as Artifact nor tagged as real content + + + + + + + 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 + circularMappingExist == true + + Non-standard structure type %1 is not mapped to a standard type + + valueS + + + + + + + + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists for %1 structure type + + valueS + + + + + + + Structure types shall not be role mapped to other structure types in the same namespace + roleMapToSameNamespaceTag == null + + Structure type %1 is role mapped to other structure type in the same namespace + + roleMapToSameNamespaceTag + + + + + + + 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 + kidsStandardTypes == 'Document' + + The structure tree root contains %1 element(s) instead of a single Document structure element + + kidsStandardTypes.replaceAll('&', ',') + + + + + + + + + + + + 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 + kidsStandardTypes != 'Document' || firstChildStandardTypeNamespaceURL == 'http://iso.org/pdf2/ssn' + + The structure tree root contains a single Document structure element, but this element is not within the PDF 2.0 namespace (namespace URI = %1) + + firstChildStandardTypeNamespaceURL + + + + + + + + + + + + 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 a child structure element contained within + containsRef == true + + TOCI in the TOC does not contain the Ref entry, neither directly on the TOCI structure element itself nor on its descendant structure elements + + + + + + + Conforming files shall not use the H structure type + false + + Document uses H structure type + + + + + + + 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 + false + + Document uses Note structure type + + + + + + + Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry as specified in 8.8 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 + orphanRefs == null + + Ref entry in the FENote does not reference structure elements with object numbers %1, while these structure elements reference this FENote + + orphanRefs + + + + + + + The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None + NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None' + + NoteType attribute of the FENote structure element has value %1 instead of Footnote, Endnote or None + + NoteType + + + + + + + A link annotation and its associated content shall be enclosed in either a Link or Reference structure element + structParentStandardType == 'Link' || structParentStandardType == 'Reference' + + A Link annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference + + structParentType + structParentStandardType + + + + + + + Link annotations that target different locations shall be in separate Link or Reference structure elements + differentTargetAnnotObjectKey == null + + Struct element %1 contains Link annotations %1 and %2 that target different locations + + structParentObjectKey + objectKey + differentTargetAnnotObjectKey + + + + + + + Multiple link annotations shall be included in a single Link or Reference structure element if they target the same location and are semantically perceived to be a single link + sameTargetAnnotObjectKey == null + + Annotations %1 and %2 target the same location, but are included into different structure elements + + objectKey + sameTargetAnnotObjectKey + + + + + + + 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 + kidsStandardTypes == 'RB&RT' || kidsStandardTypes == 'RB&RP&RT&RP' + + The Ruby structure element has invalid sequence of children: %1 + + kidsStandardTypes.split('&').toString() + + + + + + + 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 + kidsStandardTypes == 'WP&WT&WP' + + The Warichu structure element has invalid sequence of children: %1 + + kidsStandardTypes.split('&').toString() + + + + + + + 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 + containsLabels == false || ListNumbering != 'None' + + List items contain Lbl structure elements, but the ListNumbering attribute is not present on the respective L structure element or it has value None + + + + + + + + + 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 + hasContentItems == false + + The LI structure element contains real content as its direct child instead of enclosing it into Lbl or LBody structure elements + + + + + + + Tables shall be regular. Table cell shall not have intersection with other cells + hasIntersection != true + + Table cell has intersection with other cells + + + + + + + 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 + numberOfColumnWithWrongRowSpan == null + + Columns 1 and %1 span different number of rows in table or one of row groupings formed by THead, TBody and TFoot structure elements + + numberOfColumnWithWrongRowSpan + 1 + + + + + + + Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null + + Table rows 1 and %1 span different number of columns + + numberOfRowWithWrongColumnSpan + 1 + + + + + + + Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null + + Table rows 1 and %1 span different number of columns (%2 and %3 respectively) + + numberOfRowWithWrongColumnSpan + 1 + columnSpan + wrongColumnSpan + + + + + + + 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 + hasConnectedHeader != false || unknownHeaders != '' + + TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically + + + + + + + + + + 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 + hasConnectedHeader != false || unknownHeaders == '' + + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically + + unknownHeaders + + + + + + + + + + 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 + Alt != null || ActualText != null + + Figure structure element neither has an alternate description nor a replacement text + + + + + + + + + The math structure type shall occur only as a child of a Formula structure element + parentStandardType == 'Formula' || parentStandardType == 'MathML' + + The math structure type is nested within %1 tag instead of Formula + + parentStandardType + + + + + + + Non-mathematical scientific formula enclosed within Formula structure elements shall have either an Alt entry or an ActualText entry in its structure element dictionary + Alt != null || ActualText != null || isMathFormula == true + + A non-mathematical scientific formula enclosed within Formula structure elements contains neither Alt nor ActualText entry in its structure element dictionary + + + + + + + In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present + unicodePUA == false || actualTextPresent == true || altPresent == true + + Real content maps to Unicode PUA values, but ActualText and Alt entry are not present + + + + + + + The ActualText entry shall not contain any PUA values + containsPUA == false + + The ActualText entry contains a Private Unicoide Area value + + + + + + + The Alt entry shall not contain any PUA values + containsPUA == false + + The Alt entry contains a Private Unicoide Area value + + + + + + + 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 + Lang_size > 0 + + Catalog dictionary does not contain Lang entry + + + + + + + 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 + /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) + + Value %1 of the Lang entry is not a Language-Tag + + unicodeValue + + + + + + + + + + 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 + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + + + + + + + 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 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a file that conforms to PDF/UA-2, 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 + 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" || embeddedFile_size == 1 + + A non-standard CMap %1 is not embedded + + CMapName + + + + + + + + + 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 + WMode == dictWMode + + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + + + + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116 + 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" + + A CMap references another non-standard CMap %1 + + CMapName + + + + + + + + + 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 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + 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 + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + + + + 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 + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + + + + + + + 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 + isSymbolic == true || cmap31Present == true || cmap10Present == true + + The embedded font program for a non-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 + + + + + + + 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + + Encoding + containsDifferences + differencesAreUnicodeCompliant + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + 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 + isSymbolic == false || cmap30Present == true || cmap10Present == true + + 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 + + + + + + + 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 ISO 14289-2, 8.4.5.8 + toUnicode != null + + The glyph can not be mapped to Unicode + + + + + + + + + + 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 + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + + + + + + + A file in conformance with PDF/UA-2 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 + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + Real content that does not possess the semantics of text objects and does not have an alternate textual representation shall be enclosed within Figure or Formula structure elements as appropriate + itemType == 'text' || parentStructureTag == null || ActualText != null || isArtifact == true || isFigure == true || isFormula == true + + Real content that does not possess the semantics of text objects and does not have an alternate textual representation is not enclosed within Figure or Formula structure elements + + + + + + + + + + Text strings intended to be human readable shall not use the Unicode PUA + containsPUA == false + + Text string intended to be human readable uses Unicode PUA + + + + + + + + + The AS key shall not appear in any optional content configuration dictionary + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + + All destinations whose target lies within the current document shall be structure destinations + isStructDestination == true + + Destination in Outline item or Link annotation is not a structure destination + + + + + + + + + + All destinations whose target lies within the current document shall be structure destinations + containsStructDestination == true + + Destination in GoTo action is not a structure destination + + + + + + + + + + Annotations shall be included in the structure tree unless explicitly excluded by the following subclauses + (structParentType != null && isArtifact == false) || (Subtype == "Popup") || (Subtype == "PrinterMark") || (Subtype == "Widget" && width == 0 && height == 0) || ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) + + Annotation is not included in the structure tree + + + + + + + + + + + + + Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, Table 167 + structParentType == null || isArtifact == true || (F & 1) == 0 + + An invisible annotation is included in logical structure with tag %1 (standard type = %2, Invisible = %3) + + structParentType + structParentStandardType + F != null ? (F & 1) : null + + + + + + + + + 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 + structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 1) + + An invisible annotation is included in logical structure with tag %1 (standard type = %2, NoView = %3, ToggleNoView = %4) + + structParentType + structParentStandardType + F != null ? (F & 32) >> 5 : null + F != null ? (F & 256) >> 8 : null + + + + + + + + + Markup annotations shall be enclosed within Annot structure elements + structParentStandardType == 'Annot' + + A Markup annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Annot + + structParentType + structParentStandardType + + + + + + + When both RC and Contents entries are present for markup annotation, they shall be textually equivalent + containsRC == false || Contents == null || RC == Contents + + A Markup annotation contains Contents and RC entries with non-equivalent textual values (RC = %1, Contents = %2) + + RC + Contents + + + + + + + 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 + Name != null || Contents != null + + Rubber stamp annotation contains neither Name nor Contents entry + + + + + + + A Contents entry describing the author’s intent shall be provided for Ink annotation + Contents != null + + Ink annotation does not contain Contents entry + + + + + + + Popup annotations shall not be present in the structure tree + structParentType == null || isArtifact == true + + A Popup annotation is included in logical structure with tag %1 (standard type = %2) + + structParentType + structParentStandardType + + + + + + + + + When a file attachment annotation references a file specification dictionary in accordance with ISO 32000-2:2020, 7.11.3 using the FS entry in accordance with ISO 32000-2:2020, 12.5.6.15, that file specification dictionary shall include an AFRelationship entry + containsFS == false || AFRelationship != null + + The file specification dictionary referenced by a file attachment annotation does not include AFRelationship entry + + + + + + + + + + Sound annotation cannot be used when conforming to PDF/UA-2 + false + + An annotation of subtype Sound exists + + + + + + + Movie annotation cannot be used when conforming to PDF/UA-2 + false + + An annotation of subtype Movie exists + + + + + + + Screen annotations shall include a Contents entry + Contents != null + + Screen annotation does not contain Contents entry + + + + + + + A widget annotation of zero height and width, accordance with ISO 32000-2:2020, 12.7.5.5 shall be an artifact + width != 0 || height != 0 || structParentType == null || isArtifact == true + + A Widget annotation of zero height and width is not marked as an Artifact (structure tag = %1, standard type = %2) + + structParentType + structParentStandardType + + + + + + + + + A printer's mark annotation as specified in ISO 32000-2:2020, 14.11.3 shall be an artifact + structParentType == null || isArtifact == true + + A PrinterMark annotation is included in logical structure with tag %1 (standard type = %2) + + structParentType + structParentStandardType + + + + + + + + + Trap network annotations shall not be used in files conforming to PDF/UA-2 + false + + An annotation of subtype TrapNet exists + + + + + + + 3D annotation shall include alternate description in respective Contents entry + Contents != null + + 3D annotation does not contain Contents entry + + + + + + + + + RichMedia annotation shall include alternate description in respective Contents entry + Contents != null + + RichMedia annotation does not contain Contents entry + + + + + + + + + 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 + annots_size == 0 || Tabs == 'A' || Tabs == 'W' || Tabs == 'S' + + A page with annotation(s) contains Tabs key with value %1 instead of A, W or S + + Tabs + + + + + + + Except Widget annotations, Contents entries in annotation dictionaries shall provide an alternative description of the annotation. If Contents cannot be used for this purpose, an alternate description shall be provided for the annotation via one of the other mechanisms defined in ISO 32000-2:2020, 14.9.3 + Subtype == 'Widget' || Contents != null || Alt != null + + %1 annotation neither has a Contents entry nor alternate description + + Subtype + + + + + + + + + Where both Contents and Alt entries are present for the annotation, they shall be identical + Contents == null || Alt == null || Contents == Alt + + Both Contents and Alt entries are present for the annotation, but they are not identical (Contents = %1, Alt = %2) + + Contents + Alt + + + + + + + Each widget annotation shall be enclosed by a Form structure element unless the widget annotation is an artifact + structParentType == null || structParentStandardType == 'Form' || isArtifact == true + + A Widget annotation is nested within %1 tag (standard type = %2) instead of Form or Artifact + + structParentType + structParentStandardType + + + + + + + A Form structure element shall contain at most one widget annotation + widgetAnnotsCount <= 1 + + A Form structure element contains %1 annotations + + widgetAnnotsCount + + + + + + + If a label for a widget annotation is not present, a Contents entry shall be provided to supply description and context for the widget + containsLbl == true || Contents != null + + Widget annotation contains neither label nor Contents entry + + + + + + + For text fields, when an RV entry is present a V entry shall also be present, and they shall be textually equivalent + containsRV == false || (V != null && RV == V) + + Text field contains RV entry, but no V entry or they are not textually equivalent (RV = %1, V = %2) + + RV + V + + + + + + + If a portion of the appearance of a signature is represented by a graphic, alternative text shall be provided for that graphic + isSignature == false || Alt != null + + A portion of the appearance of a signature is represented by a graphic, but alternative text is not provided for that graphic + + + + + + + The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary shall contain a dc:title entry + dc_title != null + + Metadata stream does not contain dc:title + + + + + + + + + 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 + DisplayDocTitle == true + + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2) + + ViewerPreferences + DisplayDocTitle + + + + + + + + + The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document + containsDesc == true + + The file specification dictionary for an embedded file does not contain Desc key + + + + + + + Every structure type should be mapped to a standard structure type + false + + Structure type %1 is not mapped to the standard structure type + + valueS + + + + + + + + + StructTreeRoot shall contain exactly one <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 1 + + StructTreeRoot either either doesn't contain or contains more than one <Document> + + + + + + + + + StructTreeRoot shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + StructTreeRoot contains <DocumentFragment> + + + + + + + + + StructTreeRoot shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + StructTreeRoot contains <Part> + + + + + + + + + StructTreeRoot shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + StructTreeRoot contains <Art> + + + + + + + + + StructTreeRoot shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + StructTreeRoot contains <Div> + + + + + + + + + StructTreeRoot shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + StructTreeRoot contains <Sect> + + + + + + + + + StructTreeRoot shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + StructTreeRoot contains <TOC> + + + + + + + + + StructTreeRoot shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + StructTreeRoot contains <TOCI> + + + + + + + + + StructTreeRoot shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + StructTreeRoot contains <Aside> + + + + + + + + + StructTreeRoot shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + StructTreeRoot contains <BlockQuote> + + + + + + + + + StructTreeRoot shall not contain <NonStruct> + kidsStandardTypes.split('&').filter(elem => elem == 'NonStruct').length == 0 + + StructTreeRoot contains <NonStruct> + + + + + + + + + StructTreeRoot shall not contain <Private> + kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0 + + StructTreeRoot contains <Private> + + + + + + + + + StructTreeRoot shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + StructTreeRoot contains <P> + + + + + + + + + StructTreeRoot shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + StructTreeRoot contains <Note> + + + + + + + + + StructTreeRoot shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + StructTreeRoot contains <Code> + + + + + + + + + StructTreeRoot shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + StructTreeRoot contains <Hn> + + + + + + + + + StructTreeRoot shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + StructTreeRoot contains <H> + + + + + + + + + StructTreeRoot shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + StructTreeRoot contains <Title> + + + + + + + + + StructTreeRoot shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + StructTreeRoot contains <Sub> + + + + + + + + + StructTreeRoot shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + StructTreeRoot contains <Lbl> + + + + + + + + + StructTreeRoot shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + StructTreeRoot contains <Em> + + + + + + + + + StructTreeRoot shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + StructTreeRoot contains <Strong> + + + + + + + + + StructTreeRoot shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + StructTreeRoot contains <Span> + + + + + + + + + StructTreeRoot shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + StructTreeRoot contains <Quote> + + + + + + + + + StructTreeRoot shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + StructTreeRoot contains <Link> + + + + + + + + + StructTreeRoot shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + StructTreeRoot contains <Reference> + + + + + + + + + StructTreeRoot shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + StructTreeRoot contains <Annot> + + + + + + + + + StructTreeRoot shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + StructTreeRoot contains <Form> + + + + + + + + + StructTreeRoot shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + StructTreeRoot contains <Ruby> + + + + + + + + + StructTreeRoot shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + StructTreeRoot contains <RB> + + + + + + + + + StructTreeRoot shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + StructTreeRoot contains <RT> + + + + + + + + + StructTreeRoot shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + StructTreeRoot contains <RP> + + + + + + + + + StructTreeRoot shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + StructTreeRoot contains <Warichu> + + + + + + + + + StructTreeRoot shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + StructTreeRoot contains <WT> + + + + + + + + + StructTreeRoot shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + StructTreeRoot contains <WP> + + + + + + + + + StructTreeRoot shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + StructTreeRoot contains <FENote> + + + + + + + + + StructTreeRoot shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + StructTreeRoot contains <Index> + + + + + + + + + StructTreeRoot shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + StructTreeRoot contains <L> + + + + + + + + + StructTreeRoot shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + StructTreeRoot contains <LI> + + + + + + + + + StructTreeRoot shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + StructTreeRoot contains <LBody> + + + + + + + + + StructTreeRoot shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + StructTreeRoot contains <BibEntry> + + + + + + + + + StructTreeRoot shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + StructTreeRoot contains <Table> + + + + + + + + + StructTreeRoot shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + StructTreeRoot contains <TR> + + + + + + + + + StructTreeRoot shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + StructTreeRoot contains <TH> + + + + + + + + + StructTreeRoot shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + StructTreeRoot contains <TD> + + + + + + + + + StructTreeRoot shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + StructTreeRoot contains <THead> + + + + + + + + + StructTreeRoot shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + StructTreeRoot contains <TBody> + + + + + + + + + StructTreeRoot shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + StructTreeRoot contains <TFoot> + + + + + + + + + StructTreeRoot shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + StructTreeRoot contains <Caption> + + + + + + + + + StructTreeRoot shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + StructTreeRoot contains <Figure> + + + + + + + + + StructTreeRoot shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + StructTreeRoot contains <Formula> + + + + + + + + + StructTreeRoot shall not contain <Artifact> + kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + + StructTreeRoot contains <Artifact> + + + + + + + + + StructTreeRoot shall not contain content item + hasContentItems == false + + StructTreeRoot contains content item(s) + + + + + + + + + <Document> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Document> contains <TOCI> + + + + + + + + + <Document> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Document> contains more than one <H> + + + + + + + + + <Document> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Document> contains <Sub> + + + + + + + + + <Document> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Document> contains <Lbl> + + + + + + + + + <Document> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Document> contains <Em> + + + + + + + + + <Document> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Document> contains <Strong> + + + + + + + + + <Document> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Document> contains <Span> + + + + + + + + + <Document> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Document> contains <Quote> + + + + + + + + + <Document> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Document> contains <Reference> + + + + + + + + + <Document> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Document> contains <Ruby> + + + + + + + + + <Document> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Document> contains <RB> + + + + + + + + + <Document> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Document> contains <RT> + + + + + + + + + <Document> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Document> contains <RP> + + + + + + + + + <Document> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Document> contains <Warichu> + + + + + + + + + <Document> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Document> contains <WT> + + + + + + + + + <Document> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Document> contains <WP> + + + + + + + + + <Document> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Document> contains <LI> + + + + + + + + + <Document> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Document> contains <LBody> + + + + + + + + + <Document> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Document> contains <BibEntry> + + + + + + + + + <Document> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Document> contains <TR> + + + + + + + + + <Document> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Document> contains <TH> + + + + + + + + + <Document> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Document> contains <TD> + + + + + + + + + <Document> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Document> contains <THead> + + + + + + + + + <Document> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Document> contains <TBody> + + + + + + + + + <Document> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Document> contains <TFoot> + + + + + + + + + <Document> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Document> contains <Caption> + + + + + + + + + <Document> shall not contain content item + hasContentItems == false + + <Document> contains content item(s) + + + + + + + + + <DocumentFragment> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <DocumentFragment> contains <TOCI> + + + + + + + + + <DocumentFragment> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <DocumentFragment> contains more than one <H> + + + + + + + + + <DocumentFragment> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <DocumentFragment> contains <Sub> + + + + + + + + + <DocumentFragment> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <DocumentFragment> contains <Lbl> + + + + + + + + + <DocumentFragment> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <DocumentFragment> contains <Em> + + + + + + + + + <DocumentFragment> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <DocumentFragment> contains <Strong> + + + + + + + + + <DocumentFragment> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <DocumentFragment> contains <Span> + + + + + + + + + <DocumentFragment> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <DocumentFragment> contains <Quote> + + + + + + + + + <DocumentFragment> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <DocumentFragment> contains <Reference> + + + + + + + + + <DocumentFragment> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <DocumentFragment> contains <Ruby> + + + + + + + + + <DocumentFragment> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <DocumentFragment> contains <RB> + + + + + + + + + <DocumentFragment> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <DocumentFragment> contains <RT> + + + + + + + + + <DocumentFragment> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <DocumentFragment> contains <RP> + + + + + + + + + <DocumentFragment> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <DocumentFragment> contains <Warichu> + + + + + + + + + <DocumentFragment> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <DocumentFragment> contains <WT> + + + + + + + + + <DocumentFragment> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <DocumentFragment> contains <WP> + + + + + + + + + <DocumentFragment> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <DocumentFragment> contains <LI> + + + + + + + + + <DocumentFragment> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <DocumentFragment> contains <LBody> + + + + + + + + + <DocumentFragment> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <DocumentFragment> contains <BibEntry> + + + + + + + + + <DocumentFragment> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <DocumentFragment> contains <TR> + + + + + + + + + <DocumentFragment> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <DocumentFragment> contains <TH> + + + + + + + + + <DocumentFragment> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <DocumentFragment> contains <TD> + + + + + + + + + <DocumentFragment> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <DocumentFragment> contains <THead> + + + + + + + + + <DocumentFragment> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <DocumentFragment> contains <TBody> + + + + + + + + + <DocumentFragment> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <DocumentFragment> contains <TFoot> + + + + + + + + + <DocumentFragment> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <DocumentFragment> contains <Caption> + + + + + + + + + <DocumentFragment> shall not contain content item + hasContentItems == false + + <DocumentFragment> contains content item(s) + + + + + + + + + <Part> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Part> contains <Em> + + + + + + + + + <Part> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Part> contains <Strong> + + + + + + + + + <Part> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Part> contains <Span> + + + + + + + + + <Part> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Part> contains <Quote> + + + + + + + + + <Part> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Part> contains <Ruby> + + + + + + + + + <Part> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Part> contains <RB> + + + + + + + + + <Part> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Part> contains <RT> + + + + + + + + + <Part> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Part> contains <RP> + + + + + + + + + <Part> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Part> contains <Warichu> + + + + + + + + + <Part> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Part> contains <WT> + + + + + + + + + <Part> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Part> contains <WP> + + + + + + + + + <Part> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Part> contains <LI> + + + + + + + + + <Part> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Part> contains <LBody> + + + + + + + + + <Part> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Part> contains <TR> + + + + + + + + + <Part> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Part> contains <TH> + + + + + + + + + <Part> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Part> contains <TD> + + + + + + + + + <Part> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Part> contains <THead> + + + + + + + + + <Part> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Part> contains <TBody> + + + + + + + + + <Part> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Part> contains <TFoot> + + + + + + + + + <Part> shall not contain content item + hasContentItems == false + + <Part> contains content item(s) + + + + + + + + + <Div> shall not contain content item + hasContentItems == false + + <Div> contains content item(s) + + + + + + + + + <Art> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Art> contains <Document> + + + + + + + + + <Art> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Art> contains <Art> + + + + + + + + + <Art> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Art> contains <TOCI> + + + + + + + + + <Art> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Art> contains more than one <H> + + + + + + + + + <Art> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Art> contains <Sub> + + + + + + + + + <Art> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Art> contains <Em> + + + + + + + + + <Art> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Art> contains <Strong> + + + + + + + + + <Art> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Art> contains <Span> + + + + + + + + + <Art> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Art> contains <Quote> + + + + + + + + + <Art> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Art> contains <Reference> + + + + + + + + + <Art> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Art> contains <Ruby> + + + + + + + + + <Art> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Art> contains <RB> + + + + + + + + + <Art> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Art> contains <RT> + + + + + + + + + <Art> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Art> contains <RP> + + + + + + + + + <Art> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Art> contains <Warichu> + + + + + + + + + <Art> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Art> contains <WT> + + + + + + + + + <Art> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Art> contains <WP> + + + + + + + + + <Art> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Art> contains <LI> + + + + + + + + + <Art> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Art> contains <LBody> + + + + + + + + + <Art> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Art> contains <BibEntry> + + + + + + + + + <Art> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Art> contains <TR> + + + + + + + + + <Art> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Art> contains <TH> + + + + + + + + + <Art> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Art> contains <TD> + + + + + + + + + <Art> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Art> contains <THead> + + + + + + + + + <Art> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Art> contains <TBody> + + + + + + + + + <Art> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Art> contains <TFoot> + + + + + + + + + <Art> shall not contain content item + hasContentItems == false + + <Art> contains content item(s) + + + + + + + + + <Sect> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Sect> contains <Document> + + + + + + + + + <Sect> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Sect> contains <TOCI> + + + + + + + + + <Sect> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Sect> contains more than one <H> + + + + + + + + + <Sect> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Sect> contains <Sub> + + + + + + + + + <Sect> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Sect> contains <Em> + + + + + + + + + <Sect> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Sect> contains <Strong> + + + + + + + + + <Sect> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Sect> contains <Span> + + + + + + + + + <Sect> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Sect> contains <Quote> + + + + + + + + + <Sect> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Sect> contains <Reference> + + + + + + + + + <Sect> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Sect> contains <Ruby> + + + + + + + + + <Sect> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Sect> contains <RB> + + + + + + + + + <Sect> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Sect> contains <RT> + + + + + + + + + <Sect> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Sect> contains <RP> + + + + + + + + + <Sect> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Sect> contains <Warichu> + + + + + + + + + <Sect> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Sect> contains <WT> + + + + + + + + + <Sect> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Sect> contains <WP> + + + + + + + + + <Sect> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Sect> contains <LI> + + + + + + + + + <Sect> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Sect> contains <LBody> + + + + + + + + + <Sect> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Sect> contains <BibEntry> + + + + + + + + + <Sect> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Sect> contains <TR> + + + + + + + + + <Sect> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Sect> contains <TH> + + + + + + + + + <Sect> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Sect> contains <TD> + + + + + + + + + <Sect> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Sect> contains <THead> + + + + + + + + + <Sect> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Sect> contains <TBody> + + + + + + + + + <Sect> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Sect> contains <TFoot> + + + + + + + + + <Sect> shall not contain content item + hasContentItems == false + + <Sect> contains content item(s) + + + + + + + + + <TOC> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TOC> contains <Document> + + + + + + + + + <TOC> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TOC> contains <DocumentFragment> + + + + + + + + + <TOC> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TOC> contains <Part> + + + + + + + + + <TOC> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <TOC> contains <Art> + + + + + + + + + <TOC> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <TOC> contains <Div> + + + + + + + + + <TOC> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <TOC> contains <Sect> + + + + + + + + + <TOC> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TOC> contains <Aside> + + + + + + + + + <TOC> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TOC> contains <BlockQuote> + + + + + + + + + <TOC> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <TOC> contains <P> + + + + + + + + + <TOC> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <TOC> contains <Note> + + + + + + + + + <TOC> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <TOC> contains <Code> + + + + + + + + + <TOC> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <TOC> contains <Hn> + + + + + + + + + <TOC> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <TOC> contains <H> + + + + + + + + + <TOC> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TOC> contains <Title> + + + + + + + + + <TOC> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TOC> contains <Sub> + + + + + + + + + <TOC> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <TOC> contains <Lbl> + + + + + + + + + <TOC> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <TOC> contains <Em> + + + + + + + + + <TOC> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <TOC> contains <Strong> + + + + + + + + + <TOC> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <TOC> contains <Span> + + + + + + + + + <TOC> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <TOC> contains <Quote> + + + + + + + + + <TOC> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <TOC> contains <Link> + + + + + + + + + <TOC> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <TOC> contains <Reference> + + + + + + + + + <TOC> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <TOC> contains <Annot> + + + + + + + + + <TOC> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <TOC> contains <Form> + + + + + + + + + <TOC> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <TOC> contains <Ruby> + + + + + + + + + <TOC> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TOC> contains <RB> + + + + + + + + + <TOC> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TOC> contains <RT> + + + + + + + + + <TOC> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TOC> contains <RP> + + + + + + + + + <TOC> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <TOC> contains <Warichu> + + + + + + + + + <TOC> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TOC> contains <WT> + + + + + + + + + <TOC> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TOC> contains <WP> + + + + + + + + + <TOC> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <TOC> contains <FENote> + + + + + + + + + <TOC> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <TOC> contains <Index> + + + + + + + + + <TOC> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <TOC> contains <L> + + + + + + + + + <TOC> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TOC> contains <LI> + + + + + + + + + <TOC> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TOC> contains <LBody> + + + + + + + + + <TOC> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <TOC> contains <BibEntry> + + + + + + + + + <TOC> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <TOC> contains <Table> + + + + + + + + + <TOC> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <TOC> contains <TR> + + + + + + + + + <TOC> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TOC> contains <TH> + + + + + + + + + <TOC> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TOC> contains <TD> + + + + + + + + + <TOC> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TOC> contains <THead> + + + + + + + + + <TOC> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TOC> contains <TBody> + + + + + + + + + <TOC> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TOC> contains <TFoot> + + + + + + + + + <TOC> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <TOC> contains more than one <Caption> + + + + + + + + + <TOC> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <TOC> contains <Figure> + + + + + + + + + <TOC> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <TOC> contains <Formula> + + + + + + + + + <TOC> shall not contain content item + hasContentItems == false + + <TOC> contains content item(s) + + + + + + + + + <TOCI> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TOCI> contains <Document> + + + + + + + + + <TOCI> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TOCI> contains <DocumentFragment> + + + + + + + + + <TOCI> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TOCI> contains <Part> + + + + + + + + + <TOCI> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <TOCI> contains <Art> + + + + + + + + + <TOCI> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <TOCI> contains <Sect> + + + + + + + + + <TOCI> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TOCI> contains <TOCI> + + + + + + + + + <TOCI> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TOCI> contains <Aside> + + + + + + + + + <TOCI> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TOCI> contains <BlockQuote> + + + + + + + + + <TOCI> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <TOCI> contains <Note> + + + + + + + + + <TOCI> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <TOCI> contains <Code> + + + + + + + + + <TOCI> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <TOCI> contains <Hn> + + + + + + + + + <TOCI> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <TOCI> contains <H> + + + + + + + + + <TOCI> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TOCI> contains <Title> + + + + + + + + + <TOCI> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TOCI> contains <Sub> + + + + + + + + + <TOCI> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <TOCI> contains <Em> + + + + + + + + + <TOCI> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <TOCI> contains <Strong> + + + + + + + + + <TOCI> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <TOCI> contains <Span> + + + + + + + + + <TOCI> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <TOCI> contains <Quote> + + + + + + + + + <TOCI> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <TOCI> contains <Link> + + + + + + + + + <TOCI> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <TOCI> contains <Annot> + + + + + + + + + <TOCI> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <TOCI> contains <Form> + + + + + + + + + <TOCI> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <TOCI> contains <Ruby> + + + + + + + + + <TOCI> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TOCI> contains <RB> + + + + + + + + + <TOCI> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TOCI> contains <RT> + + + + + + + + + <TOCI> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TOCI> contains <RP> + + + + + + + + + <TOCI> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <TOCI> contains <Warichu> + + + + + + + + + <TOCI> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TOCI> contains <WT> + + + + + + + + + <TOCI> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TOCI> contains <WP> + + + + + + + + + <TOCI> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <TOCI> contains <FENote> + + + + + + + + + <TOCI> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <TOCI> contains <Index> + + + + + + + + + <TOCI> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <TOCI> contains <L> + + + + + + + + + <TOCI> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TOCI> contains <LI> + + + + + + + + + <TOCI> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TOCI> contains <LBody> + + + + + + + + + <TOCI> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <TOCI> contains <BibEntry> + + + + + + + + + <TOCI> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <TOCI> contains <Table> + + + + + + + + + <TOCI> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <TOCI> contains <TR> + + + + + + + + + <TOCI> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TOCI> contains <TH> + + + + + + + + + <TOCI> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TOCI> contains <TD> + + + + + + + + + <TOCI> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TOCI> contains <THead> + + + + + + + + + <TOCI> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TOCI> contains <TBody> + + + + + + + + + <TOCI> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TOCI> contains <TFoot> + + + + + + + + + <TOCI> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TOCI> contains <Caption> + + + + + + + + + <TOCI> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <TOCI> contains <Figure> + + + + + + + + + <TOCI> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <TOCI> contains <Formula> + + + + + + + + + <TOCI> shall not contain content item + hasContentItems == false + + <TOCI> contains content item(s) + + + + + + + + + <Aside> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Aside> contains <TOCI> + + + + + + + + + <Aside> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Aside> contains <Aside> + + + + + + + + + <Aside> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Aside> contains more than one <H> + + + + + + + + + <Aside> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Aside> contains <Title> + + + + + + + + + <Aside> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Aside> contains <Sub> + + + + + + + + + <Aside> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Aside> contains <Em> + + + + + + + + + <Aside> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Aside> contains <Strong> + + + + + + + + + <Aside> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Aside> contains <Span> + + + + + + + + + <Aside> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Aside> contains <Quote> + + + + + + + + + <Aside> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Aside> contains <Ruby> + + + + + + + + + <Aside> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Aside> contains <RB> + + + + + + + + + <Aside> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Aside> contains <RT> + + + + + + + + + <Aside> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Aside> contains <RP> + + + + + + + + + <Aside> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Aside> contains <Warichu> + + + + + + + + + <Aside> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Aside> contains <WT> + + + + + + + + + <Aside> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Aside> contains <WP> + + + + + + + + + <Aside> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Aside> contains <LI> + + + + + + + + + <Aside> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Aside> contains <LBody> + + + + + + + + + <Aside> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Aside> contains <BibEntry> + + + + + + + + + <Aside> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Aside> contains <TR> + + + + + + + + + <Aside> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Aside> contains <TH> + + + + + + + + + <Aside> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Aside> contains <TD> + + + + + + + + + <Aside> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Aside> contains <THead> + + + + + + + + + <Aside> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Aside> contains <TBody> + + + + + + + + + <Aside> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Aside> contains <TFoot> + + + + + + + + + <Aside> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Aside> contains more than one <Caption> + + + + + + + + + <BlockQuote> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <BlockQuote> contains <TOCI> + + + + + + + + + <BlockQuote> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <BlockQuote> contains <Aside> + + + + + + + + + <BlockQuote> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <BlockQuote> contains more than one <H> + + + + + + + + + <BlockQuote> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <BlockQuote> contains <Title> + + + + + + + + + <BlockQuote> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <BlockQuote> contains <Sub> + + + + + + + + + <BlockQuote> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <BlockQuote> contains <Em> + + + + + + + + + <BlockQuote> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <BlockQuote> contains <Strong> + + + + + + + + + <BlockQuote> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <BlockQuote> contains <Span> + + + + + + + + + <BlockQuote> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <BlockQuote> contains <Quote> + + + + + + + + + <BlockQuote> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <BlockQuote> contains <Ruby> + + + + + + + + + <BlockQuote> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <BlockQuote> contains <RB> + + + + + + + + + <BlockQuote> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <BlockQuote> contains <RT> + + + + + + + + + <BlockQuote> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <BlockQuote> contains <RP> + + + + + + + + + <BlockQuote> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <BlockQuote> contains <Warichu> + + + + + + + + + <BlockQuote> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <BlockQuote> contains <WT> + + + + + + + + + <BlockQuote> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <BlockQuote> contains <WP> + + + + + + + + + <BlockQuote> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <BlockQuote> contains <LI> + + + + + + + + + <BlockQuote> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <BlockQuote> contains <LBody> + + + + + + + + + <BlockQuote> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <BlockQuote> contains <BibEntry> + + + + + + + + + <BlockQuote> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <BlockQuote> contains <TR> + + + + + + + + + <BlockQuote> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <BlockQuote> contains <TH> + + + + + + + + + <BlockQuote> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <BlockQuote> contains <TD> + + + + + + + + + <BlockQuote> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <BlockQuote> contains <THead> + + + + + + + + + <BlockQuote> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <BlockQuote> contains <TBody> + + + + + + + + + <BlockQuote> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <BlockQuote> contains <TFoot> + + + + + + + + + <BlockQuote> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <BlockQuote> contains more than one <Caption> + + + + + + + + + <Title> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Title> contains <Document> + + + + + + + + + <Title> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Title> contains <DocumentFragment> + + + + + + + + + <Title> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Title> contains <Art> + + + + + + + + + <Title> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Title> contains <Sect> + + + + + + + + + <Title> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Title> contains <TOC> + + + + + + + + + <Title> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Title> contains <TOCI> + + + + + + + + + <Title> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Title> contains <BlockQuote> + + + + + + + + + <Title> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Title> contains <Hn> + + + + + + + + + <Title> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Title> contains <H> + + + + + + + + + <Title> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Title> contains <Title> + + + + + + + + + <Title> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Title> contains <Sub> + + + + + + + + + <Title> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Title> contains <RB> + + + + + + + + + <Title> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Title> contains <RT> + + + + + + + + + <Title> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Title> contains <RP> + + + + + + + + + <Title> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Title> contains <WT> + + + + + + + + + <Title> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Title> contains <WP> + + + + + + + + + <Title> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Title> contains <Index> + + + + + + + + + <Title> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Title> contains <LI> + + + + + + + + + <Title> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Title> contains <LBody> + + + + + + + + + <Title> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Title> contains <TR> + + + + + + + + + <Title> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Title> contains <TH> + + + + + + + + + <Title> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Title> contains <TD> + + + + + + + + + <Title> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Title> contains <THead> + + + + + + + + + <Title> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Title> contains <TBody> + + + + + + + + + <Title> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Title> contains <TFoot> + + + + + + + + + <Title> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Title> contains more than one <Caption> + + + + + + + + + <Sub> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Sub> contains <Document> + + + + + + + + + <Sub> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Sub> contains <DocumentFragment> + + + + + + + + + <Sub> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Sub> contains <Part> + + + + + + + + + <Sub> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Sub> contains <Art> + + + + + + + + + <Sub> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Sub> contains <Div> + + + + + + + + + <Sub> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Sub> contains <Sect> + + + + + + + + + <Sub> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Sub> contains <TOC> + + + + + + + + + <Sub> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Sub> contains <TOCI> + + + + + + + + + <Sub> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Sub> contains <Aside> + + + + + + + + + <Sub> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Sub> contains <BlockQuote> + + + + + + + + + <Sub> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Sub> contains <P> + + + + + + + + + <Sub> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Sub> contains <Hn> + + + + + + + + + <Sub> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Sub> contains <H> + + + + + + + + + <Sub> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Sub> contains <Title> + + + + + + + + + <Sub> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Sub> contains <Sub> + + + + + + + + + <Sub> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Sub> contains <RB> + + + + + + + + + <Sub> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Sub> contains <RT> + + + + + + + + + <Sub> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Sub> contains <RP> + + + + + + + + + <Sub> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Sub> contains <WT> + + + + + + + + + <Sub> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Sub> contains <WP> + + + + + + + + + <Sub> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Sub> contains <Index> + + + + + + + + + <Sub> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Sub> contains <LI> + + + + + + + + + <Sub> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Sub> contains <LBody> + + + + + + + + + <Sub> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Sub> contains <Table> + + + + + + + + + <Sub> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Sub> contains <TR> + + + + + + + + + <Sub> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Sub> contains <TH> + + + + + + + + + <Sub> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Sub> contains <TD> + + + + + + + + + <Sub> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Sub> contains <THead> + + + + + + + + + <Sub> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Sub> contains <TBody> + + + + + + + + + <Sub> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Sub> contains <TFoot> + + + + + + + + + <Sub> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Sub> contains <Caption> + + + + + + + + + <P> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <P> contains <Document> + + + + + + + + + <P> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <P> contains <DocumentFragment> + + + + + + + + + <P> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <P> contains <Part> + + + + + + + + + <P> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <P> contains <Art> + + + + + + + + + <P> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <P> contains <Div> + + + + + + + + + <P> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <P> contains <Sect> + + + + + + + + + <P> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <P> contains <TOC> + + + + + + + + + <P> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <P> contains <TOCI> + + + + + + + + + <P> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <P> contains <Aside> + + + + + + + + + <P> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <P> contains <BlockQuote> + + + + + + + + + <P> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <P> contains <P> + + + + + + + + + <P> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <P> contains <Hn> + + + + + + + + + <P> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <P> contains <H> + + + + + + + + + <P> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <P> contains <Title> + + + + + + + + + <P> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <P> contains <RB> + + + + + + + + + <P> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <P> contains <RT> + + + + + + + + + <P> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <P> contains <RP> + + + + + + + + + <P> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <P> contains <WT> + + + + + + + + + <P> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <P> contains <WP> + + + + + + + + + <P> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <P> contains <Index> + + + + + + + + + <P> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <P> contains <LI> + + + + + + + + + <P> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <P> contains <LBody> + + + + + + + + + <P> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <P> contains <TR> + + + + + + + + + <P> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <P> contains <TH> + + + + + + + + + <P> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <P> contains <TD> + + + + + + + + + <P> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <P> contains <THead> + + + + + + + + + <P> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <P> contains <TBody> + + + + + + + + + <P> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <P> contains <TFoot> + + + + + + + + + <P> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <P> contains <Caption> + + + + + + + + + <Note> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Note> contains <Document> + + + + + + + + + <Note> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Note> contains <TOC> + + + + + + + + + <Note> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Note> contains <TOCI> + + + + + + + + + <Note> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Note> contains <Hn> + + + + + + + + + <Note> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Note> contains <H> + + + + + + + + + <Note> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Note> contains <Title> + + + + + + + + + <Note> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Note> contains <RB> + + + + + + + + + <Note> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Note> contains <RT> + + + + + + + + + <Note> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Note> contains <RP> + + + + + + + + + <Note> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Note> contains <WT> + + + + + + + + + <Note> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Note> contains <WP> + + + + + + + + + <Note> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Note> contains <LI> + + + + + + + + + <Note> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Note> contains <LBody> + + + + + + + + + <Note> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Note> contains <TR> + + + + + + + + + <Note> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Note> contains <TH> + + + + + + + + + <Note> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Note> contains <TD> + + + + + + + + + <Note> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Note> contains <THead> + + + + + + + + + <Note> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Note> contains <TBody> + + + + + + + + + <Note> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Note> contains <TFoot> + + + + + + + + + <Code> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Code> contains <Document> + + + + + + + + + <Code> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Code> contains <Art> + + + + + + + + + <Code> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Code> contains <Sect> + + + + + + + + + <Code> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Code> contains <TOC> + + + + + + + + + <Code> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Code> contains <TOCI> + + + + + + + + + <Code> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Code> contains <Aside> + + + + + + + + + <Code> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Code> contains <BlockQuote> + + + + + + + + + <Code> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Code> contains <P> + + + + + + + + + <Code> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Code> contains <Code> + + + + + + + + + <Code> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Code> contains <Hn> + + + + + + + + + <Code> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Code> contains <H> + + + + + + + + + <Code> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Code> contains <Title> + + + + + + + + + <Code> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Code> contains <Sub> + + + + + + + + + <Code> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Code> contains <Lbl> + + + + + + + + + <Code> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Code> contains <Quote> + + + + + + + + + <Code> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Code> contains <Form> + + + + + + + + + <Code> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Code> contains <Ruby> + + + + + + + + + <Code> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Code> contains <RB> + + + + + + + + + <Code> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Code> contains <RT> + + + + + + + + + <Code> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Code> contains <RP> + + + + + + + + + <Code> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Code> contains <Warichu> + + + + + + + + + <Code> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Code> contains <WT> + + + + + + + + + <Code> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Code> contains <WP> + + + + + + + + + <Code> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Code> contains <Index> + + + + + + + + + <Code> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Code> contains <L> + + + + + + + + + <Code> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Code> contains <LI> + + + + + + + + + <Code> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Code> contains <LBody> + + + + + + + + + <Code> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Code> contains <Table> + + + + + + + + + <Code> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Code> contains <TR> + + + + + + + + + <Code> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Code> contains <TH> + + + + + + + + + <Code> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Code> contains <TD> + + + + + + + + + <Code> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Code> contains <THead> + + + + + + + + + <Code> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Code> contains <TBody> + + + + + + + + + <Code> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Code> contains <TFoot> + + + + + + + + + <Code> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Code> contains <Caption> + + + + + + + + + <Code> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <Code> contains <Figure> + + + + + + + + + <Code> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <Code> contains <Formula> + + + + + + + + + <Hn> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Hn> contains <Document> + + + + + + + + + <Hn> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Hn> contains <DocumentFragment> + + + + + + + + + <Hn> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Hn> contains <Part> + + + + + + + + + <Hn> shall contain at most one <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1 + + <Hn> contains more than one <Art> + + + + + + + + + <Hn> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Hn> contains <Div> + + + + + + + + + <Hn> shall contain at most one <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1 + + <Hn> contains more than one <Sect> + + + + + + + + + <Hn> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Hn> contains <TOC> + + + + + + + + + <Hn> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Hn> contains <TOCI> + + + + + + + + + <Hn> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Hn> contains <Aside> + + + + + + + + + <Hn> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Hn> contains <BlockQuote> + + + + + + + + + <Hn> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Hn> contains <P> + + + + + + + + + <Hn> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Hn> contains <Hn> + + + + + + + + + <Hn> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Hn> contains <H> + + + + + + + + + <Hn> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Hn> contains <Title> + + + + + + + + + <Hn> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Hn> contains <RB> + + + + + + + + + <Hn> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Hn> contains <RT> + + + + + + + + + <Hn> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Hn> contains <RP> + + + + + + + + + <Hn> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Hn> contains <WT> + + + + + + + + + <Hn> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Hn> contains <WP> + + + + + + + + + <Hn> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Hn> contains <Index> + + + + + + + + + <Hn> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Hn> contains <L> + + + + + + + + + <Hn> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Hn> contains <LI> + + + + + + + + + <Hn> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Hn> contains <LBody> + + + + + + + + + <Hn> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Hn> contains <Table> + + + + + + + + + <Hn> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Hn> contains <TR> + + + + + + + + + <Hn> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Hn> contains <TH> + + + + + + + + + <Hn> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Hn> contains <TD> + + + + + + + + + <Hn> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Hn> contains <THead> + + + + + + + + + <Hn> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Hn> contains <TBody> + + + + + + + + + <Hn> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Hn> contains <TFoot> + + + + + + + + + <Hn> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Hn> contains <Caption> + + + + + + + + + <H> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <H> contains <Document> + + + + + + + + + <H> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <H> contains <DocumentFragment> + + + + + + + + + <H> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <H> contains <Part> + + + + + + + + + <H> shall contain at most one <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1 + + <H> contains more than one <Art> + + + + + + + + + <H> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <H> contains <Div> + + + + + + + + + <H> shall contain at most one <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1 + + <H> contains more than one <Sect> + + + + + + + + + <H> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <H> contains <TOC> + + + + + + + + + <H> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <H> contains <TOCI> + + + + + + + + + <H> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <H> contains <Aside> + + + + + + + + + <H> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <H> contains <BlockQuote> + + + + + + + + + <H> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <H> contains <P> + + + + + + + + + <H> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <H> contains <Hn> + + + + + + + + + <H> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <H> contains <H> + + + + + + + + + <H> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <H> contains <Title> + + + + + + + + + <H> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <H> contains <RB> + + + + + + + + + <H> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <H> contains <RT> + + + + + + + + + <H> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <H> contains <RP> + + + + + + + + + <H> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <H> contains <WT> + + + + + + + + + <H> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <H> contains <WP> + + + + + + + + + <H> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <H> contains <Index> + + + + + + + + + <H> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <H> contains <L> + + + + + + + + + <H> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <H> contains <LI> + + + + + + + + + <H> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <H> contains <LBody> + + + + + + + + + <H> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <H> contains <Table> + + + + + + + + + <H> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <H> contains <TR> + + + + + + + + + <H> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <H> contains <TH> + + + + + + + + + <H> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <H> contains <TD> + + + + + + + + + <H> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <H> contains <THead> + + + + + + + + + <H> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <H> contains <TBody> + + + + + + + + + <H> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <H> contains <TFoot> + + + + + + + + + <H> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <H> contains <Caption> + + + + + + + + + <Lbl> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Lbl> contains <Document> + + + + + + + + + <Lbl> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Lbl> contains <DocumentFragment> + + + + + + + + + <Lbl> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Lbl> contains <Part> + + + + + + + + + <Lbl> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Lbl> contains <Art> + + + + + + + + + <Lbl> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Lbl> contains <Div> + + + + + + + + + <Lbl> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Lbl> contains <Sect> + + + + + + + + + <Lbl> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Lbl> contains <TOC> + + + + + + + + + <Lbl> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Lbl> contains <TOCI> + + + + + + + + + <Lbl> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Lbl> contains <Aside> + + + + + + + + + <Lbl> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Lbl> contains <BlockQuote> + + + + + + + + + <Lbl> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Lbl> contains <P> + + + + + + + + + <Lbl> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Lbl> contains <Hn> + + + + + + + + + <Lbl> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Lbl> contains <H> + + + + + + + + + <Lbl> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Lbl> contains <Title> + + + + + + + + + <Lbl> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Lbl> contains <Lbl> + + + + + + + + + <Lbl> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Lbl> contains <RB> + + + + + + + + + <Lbl> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Lbl> contains <RT> + + + + + + + + + <Lbl> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Lbl> contains <RP> + + + + + + + + + <Lbl> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Lbl> contains <WT> + + + + + + + + + <Lbl> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Lbl> contains <WP> + + + + + + + + + <Lbl> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Lbl> contains <Index> + + + + + + + + + <Lbl> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Lbl> contains <L> + + + + + + + + + <Lbl> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Lbl> contains <LI> + + + + + + + + + <Lbl> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Lbl> contains <LBody> + + + + + + + + + <Lbl> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Lbl> contains <Table> + + + + + + + + + <Lbl> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Lbl> contains <TR> + + + + + + + + + <Lbl> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Lbl> contains <TH> + + + + + + + + + <Lbl> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Lbl> contains <TD> + + + + + + + + + <Lbl> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Lbl> contains <THead> + + + + + + + + + <Lbl> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Lbl> contains <TBody> + + + + + + + + + <Lbl> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Lbl> contains <TFoot> + + + + + + + + + <Lbl> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Lbl> contains <Caption> + + + + + + + + + <Em> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Em> contains <Document> + + + + + + + + + <Em> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Em> contains <DocumentFragment> + + + + + + + + + <Em> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Em> contains <Part> + + + + + + + + + <Em> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Em> contains <Art> + + + + + + + + + <Em> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Em> contains <Div> + + + + + + + + + <Em> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Em> contains <Sect> + + + + + + + + + <Em> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Em> contains <TOC> + + + + + + + + + <Em> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Em> contains <TOCI> + + + + + + + + + <Em> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Em> contains <Aside> + + + + + + + + + <Em> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Em> contains <BlockQuote> + + + + + + + + + <Em> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Em> contains <P> + + + + + + + + + <Em> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Em> contains <Hn> + + + + + + + + + <Em> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Em> contains <H> + + + + + + + + + <Em> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Em> contains <Title> + + + + + + + + + <Em> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Em> contains <RB> + + + + + + + + + <Em> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Em> contains <RT> + + + + + + + + + <Em> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Em> contains <RP> + + + + + + + + + <Em> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Em> contains <WT> + + + + + + + + + <Em> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Em> contains <WP> + + + + + + + + + <Em> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Em> contains <Index> + + + + + + + + + <Em> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Em> contains <L> + + + + + + + + + <Em> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Em> contains <LI> + + + + + + + + + <Em> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Em> contains <LBody> + + + + + + + + + <Em> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Em> contains <Table> + + + + + + + + + <Em> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Em> contains <TR> + + + + + + + + + <Em> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Em> contains <TH> + + + + + + + + + <Em> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Em> contains <TD> + + + + + + + + + <Em> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Em> contains <THead> + + + + + + + + + <Em> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Em> contains <TBody> + + + + + + + + + <Em> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Em> contains <TFoot> + + + + + + + + + <Em> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Em> contains <Caption> + + + + + + + + + <Strong> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Strong> contains <Document> + + + + + + + + + <Strong> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Strong> contains <DocumentFragment> + + + + + + + + + <Strong> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Strong> contains <Part> + + + + + + + + + <Strong> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Strong> contains <Art> + + + + + + + + + <Strong> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Strong> contains <Div> + + + + + + + + + <Strong> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Strong> contains <Sect> + + + + + + + + + <Strong> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Strong> contains <TOC> + + + + + + + + + <Strong> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Strong> contains <TOCI> + + + + + + + + + <Strong> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Strong> contains <Aside> + + + + + + + + + <Strong> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Strong> contains <BlockQuote> + + + + + + + + + <Strong> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Strong> contains <P> + + + + + + + + + <Strong> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Strong> contains <Hn> + + + + + + + + + <Strong> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Strong> contains <H> + + + + + + + + + <Strong> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Strong> contains <Title> + + + + + + + + + <Strong> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Strong> contains <RB> + + + + + + + + + <Strong> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Strong> contains <RT> + + + + + + + + + <Strong> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Strong> contains <RP> + + + + + + + + + <Strong> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Strong> contains <WT> + + + + + + + + + <Strong> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Strong> contains <WP> + + + + + + + + + <Strong> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Strong> contains <Index> + + + + + + + + + <Strong> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Strong> contains <L> + + + + + + + + + <Strong> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Strong> contains <LI> + + + + + + + + + <Strong> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Strong> contains <LBody> + + + + + + + + + <Strong> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Strong> contains <Table> + + + + + + + + + <Strong> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Strong> contains <TR> + + + + + + + + + <Strong> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Strong> contains <TH> + + + + + + + + + <Strong> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Strong> contains <TD> + + + + + + + + + <Strong> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Strong> contains <THead> + + + + + + + + + <Strong> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Strong> contains <TBody> + + + + + + + + + <Strong> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Strong> contains <TFoot> + + + + + + + + + <Strong> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Strong> contains <Caption> + + + + + + + + + <Span> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Span> contains <Document> + + + + + + + + + <Span> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Span> contains <DocumentFragment> + + + + + + + + + <Span> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Span> contains <Part> + + + + + + + + + <Span> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Span> contains <Art> + + + + + + + + + <Span> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Span> contains <Div> + + + + + + + + + <Span> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Span> contains <Sect> + + + + + + + + + <Span> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Span> contains <TOC> + + + + + + + + + <Span> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Span> contains <TOCI> + + + + + + + + + <Span> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Span> contains <Aside> + + + + + + + + + <Span> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Span> contains <BlockQuote> + + + + + + + + + <Span> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Span> contains <P> + + + + + + + + + <Span> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Span> contains <Hn> + + + + + + + + + <Span> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Span> contains <H> + + + + + + + + + <Span> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Span> contains <Title> + + + + + + + + + <Span> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Span> contains <RB> + + + + + + + + + <Span> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Span> contains <RT> + + + + + + + + + <Span> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Span> contains <RP> + + + + + + + + + <Span> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Span> contains <WT> + + + + + + + + + <Span> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Span> contains <WP> + + + + + + + + + <Span> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Span> contains <Index> + + + + + + + + + <Span> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Span> contains <L> + + + + + + + + + <Span> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Span> contains <LI> + + + + + + + + + <Span> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Span> contains <LBody> + + + + + + + + + <Span> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Span> contains <Table> + + + + + + + + + <Span> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Span> contains <TR> + + + + + + + + + <Span> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Span> contains <TH> + + + + + + + + + <Span> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Span> contains <TD> + + + + + + + + + <Span> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Span> contains <THead> + + + + + + + + + <Span> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Span> contains <TBody> + + + + + + + + + <Span> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Span> contains <TFoot> + + + + + + + + + <Span> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Span> contains <Caption> + + + + + + + + + <Quote> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Quote> contains <Document> + + + + + + + + + <Quote> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Quote> contains <DocumentFragment> + + + + + + + + + <Quote> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Quote> contains <Part> + + + + + + + + + <Quote> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Quote> contains <Art> + + + + + + + + + <Quote> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Quote> contains <Div> + + + + + + + + + <Quote> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Quote> contains <Sect> + + + + + + + + + <Quote> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Quote> contains <TOC> + + + + + + + + + <Quote> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Quote> contains <TOCI> + + + + + + + + + <Quote> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Quote> contains <Aside> + + + + + + + + + <Quote> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Quote> contains <BlockQuote> + + + + + + + + + <Quote> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Quote> contains <P> + + + + + + + + + <Quote> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Quote> contains <Hn> + + + + + + + + + <Quote> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Quote> contains <H> + + + + + + + + + <Quote> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Quote> contains <Title> + + + + + + + + + <Quote> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Quote> contains <RB> + + + + + + + + + <Quote> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Quote> contains <RT> + + + + + + + + + <Quote> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Quote> contains <RP> + + + + + + + + + <Quote> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Quote> contains <WT> + + + + + + + + + <Quote> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Quote> contains <WP> + + + + + + + + + <Quote> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Quote> contains <Index> + + + + + + + + + <Quote> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Quote> contains <L> + + + + + + + + + <Quote> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Quote> contains <LI> + + + + + + + + + <Quote> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Quote> contains <LBody> + + + + + + + + + <Quote> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Quote> contains <Table> + + + + + + + + + <Quote> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Quote> contains <TR> + + + + + + + + + <Quote> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Quote> contains <TH> + + + + + + + + + <Quote> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Quote> contains <TD> + + + + + + + + + <Quote> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Quote> contains <THead> + + + + + + + + + <Quote> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Quote> contains <TBody> + + + + + + + + + <Quote> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Quote> contains <TFoot> + + + + + + + + + <Quote> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Quote> contains <Caption> + + + + + + + + + <Link> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Link> contains <Document> + + + + + + + + + <Link> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Link> contains <TOC> + + + + + + + + + <Link> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Link> contains <TOCI> + + + + + + + + + <Link> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Link> contains <Link> + + + + + + + + + <Link> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Link> contains <RB> + + + + + + + + + <Link> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Link> contains <RT> + + + + + + + + + <Link> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Link> contains <RP> + + + + + + + + + <Link> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Link> contains <WT> + + + + + + + + + <Link> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Link> contains <WP> + + + + + + + + + <Link> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Link> contains <Index> + + + + + + + + + <Link> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Link> contains <LI> + + + + + + + + + <Link> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Link> contains <LBody> + + + + + + + + + <Link> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Link> contains <TR> + + + + + + + + + <Link> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Link> contains <TH> + + + + + + + + + <Link> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Link> contains <TD> + + + + + + + + + <Link> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Link> contains <THead> + + + + + + + + + <Link> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Link> contains <TBody> + + + + + + + + + <Link> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Link> contains <TFoot> + + + + + + + + + <Reference> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Reference> contains <Document> + + + + + + + + + <Reference> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Reference> contains <DocumentFragment> + + + + + + + + + <Reference> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Reference> contains <Part> + + + + + + + + + <Reference> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Reference> contains <Art> + + + + + + + + + <Reference> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Reference> contains <Div> + + + + + + + + + <Reference> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Reference> contains <Sect> + + + + + + + + + <Reference> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Reference> contains <TOC> + + + + + + + + + <Reference> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Reference> contains <TOCI> + + + + + + + + + <Reference> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Reference> contains <Aside> + + + + + + + + + <Reference> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Reference> contains <BlockQuote> + + + + + + + + + <Reference> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Reference> contains <P> + + + + + + + + + <Reference> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Reference> contains <Code> + + + + + + + + + <Reference> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Reference> contains <Hn> + + + + + + + + + <Reference> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Reference> contains <H> + + + + + + + + + <Reference> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Reference> contains <Title> + + + + + + + + + <Reference> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Reference> contains <Sub> + + + + + + + + + <Reference> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Reference> contains <Quote> + + + + + + + + + <Reference> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Reference> contains <Reference> + + + + + + + + + <Reference> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Reference> contains <Form> + + + + + + + + + <Reference> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Reference> contains <Ruby> + + + + + + + + + <Reference> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Reference> contains <RB> + + + + + + + + + <Reference> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Reference> contains <RT> + + + + + + + + + <Reference> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Reference> contains <RP> + + + + + + + + + <Reference> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Reference> contains <Warichu> + + + + + + + + + <Reference> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Reference> contains <WT> + + + + + + + + + <Reference> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Reference> contains <WP> + + + + + + + + + <Reference> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Reference> contains <Index> + + + + + + + + + <Reference> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Reference> contains <L> + + + + + + + + + <Reference> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Reference> contains <LI> + + + + + + + + + <Reference> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Reference> contains <LBody> + + + + + + + + + <Reference> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Reference> contains <Table> + + + + + + + + + <Reference> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Reference> contains <TR> + + + + + + + + + <Reference> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Reference> contains <TH> + + + + + + + + + <Reference> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Reference> contains <TD> + + + + + + + + + <Reference> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Reference> contains <THead> + + + + + + + + + <Reference> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Reference> contains <TBody> + + + + + + + + + <Reference> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Reference> contains <TFoot> + + + + + + + + + <Reference> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Reference> contains <Caption> + + + + + + + + + <Reference> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <Reference> contains <Formula> + + + + + + + + + <Annot> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Annot> contains <Document> + + + + + + + + + <Annot> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Annot> contains <TOC> + + + + + + + + + <Annot> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Annot> contains <TOCI> + + + + + + + + + <Annot> shall not contain <Private> + kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0 + + <Annot> contains <Private> + + + + + + + + + <Annot> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Annot> contains <RB> + + + + + + + + + <Annot> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Annot> contains <RT> + + + + + + + + + <Annot> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Annot> contains <RP> + + + + + + + + + <Annot> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Annot> contains <WT> + + + + + + + + + <Annot> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Annot> contains <WP> + + + + + + + + + <Annot> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Annot> contains <Index> + + + + + + + + + <Annot> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Annot> contains <LI> + + + + + + + + + <Annot> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Annot> contains <LBody> + + + + + + + + + <Annot> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Annot> contains <TR> + + + + + + + + + <Annot> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Annot> contains <TH> + + + + + + + + + <Annot> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Annot> contains <TD> + + + + + + + + + <Annot> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Annot> contains <THead> + + + + + + + + + <Annot> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Annot> contains <TBody> + + + + + + + + + <Annot> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Annot> contains <TFoot> + + + + + + + + + <Form> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Form> contains <Document> + + + + + + + + + <Form> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Form> contains <DocumentFragment> + + + + + + + + + <Form> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Form> contains <Art> + + + + + + + + + <Form> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Form> contains <Sect> + + + + + + + + + <Form> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Form> contains <TOC> + + + + + + + + + <Form> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Form> contains <TOCI> + + + + + + + + + <Form> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Form> contains <Aside> + + + + + + + + + <Form> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Form> contains <BlockQuote> + + + + + + + + + <Form> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Form> contains <P> + + + + + + + + + <Form> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Form> contains <Hn> + + + + + + + + + <Form> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Form> contains <H> + + + + + + + + + <Form> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Form> contains <Title> + + + + + + + + + <Form> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Form> contains <Sub> + + + + + + + + + <Form> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Form> contains <Em> + + + + + + + + + <Form> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Form> contains <Strong> + + + + + + + + + <Form> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Form> contains <Span> + + + + + + + + + <Form> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Form> contains <Quote> + + + + + + + + + <Form> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Form> contains <Link> + + + + + + + + + <Form> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <Form> contains <Annot> + + + + + + + + + <Form> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Form> contains <Form> + + + + + + + + + <Form> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Form> contains <Ruby> + + + + + + + + + <Form> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Form> contains <RB> + + + + + + + + + <Form> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Form> contains <RT> + + + + + + + + + <Form> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Form> contains <RP> + + + + + + + + + <Form> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Form> contains <Warichu> + + + + + + + + + <Form> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Form> contains <WT> + + + + + + + + + <Form> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Form> contains <WP> + + + + + + + + + <Form> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Form> contains <Index> + + + + + + + + + <Form> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Form> contains <LI> + + + + + + + + + <Form> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Form> contains <LBody> + + + + + + + + + <Form> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Form> contains <TR> + + + + + + + + + <Form> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Form> contains <TH> + + + + + + + + + <Form> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Form> contains <TD> + + + + + + + + + <Form> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Form> contains <THead> + + + + + + + + + <Form> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Form> contains <TBody> + + + + + + + + + <Form> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Form> contains <TFoot> + + + + + + + + + <Form> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Form> contains more than one <Caption> + + + + + + + + + <Ruby> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Ruby> contains <Document> + + + + + + + + + <Ruby> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Ruby> contains <DocumentFragment> + + + + + + + + + <Ruby> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Ruby> contains <Part> + + + + + + + + + <Ruby> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Ruby> contains <Art> + + + + + + + + + <Ruby> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Ruby> contains <Div> + + + + + + + + + <Ruby> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Ruby> contains <Sect> + + + + + + + + + <Ruby> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Ruby> contains <TOC> + + + + + + + + + <Ruby> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Ruby> contains <TOCI> + + + + + + + + + <Ruby> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Ruby> contains <Aside> + + + + + + + + + <Ruby> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Ruby> contains <BlockQuote> + + + + + + + + + <Ruby> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Ruby> contains <P> + + + + + + + + + <Ruby> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <Ruby> contains <Note> + + + + + + + + + <Ruby> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Ruby> contains <Code> + + + + + + + + + <Ruby> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Ruby> contains <Hn> + + + + + + + + + <Ruby> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Ruby> contains <H> + + + + + + + + + <Ruby> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Ruby> contains <Title> + + + + + + + + + <Ruby> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Ruby> contains <Sub> + + + + + + + + + <Ruby> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Ruby> contains <Lbl> + + + + + + + + + <Ruby> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Ruby> contains <Em> + + + + + + + + + <Ruby> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Ruby> contains <Strong> + + + + + + + + + <Ruby> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Ruby> contains <Span> + + + + + + + + + <Ruby> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Ruby> contains <Quote> + + + + + + + + + <Ruby> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Ruby> contains <Link> + + + + + + + + + <Ruby> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Ruby> contains <Reference> + + + + + + + + + <Ruby> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <Ruby> contains <Annot> + + + + + + + + + <Ruby> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Ruby> contains <Form> + + + + + + + + + <Ruby> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Ruby> contains <Ruby> + + + + + + + + + <Ruby> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Ruby> contains <Warichu> + + + + + + + + + <Ruby> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Ruby> contains <WT> + + + + + + + + + <Ruby> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Ruby> contains <WP> + + + + + + + + + <Ruby> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <Ruby> contains <FENote> + + + + + + + + + <Ruby> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Ruby> contains <Index> + + + + + + + + + <Ruby> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Ruby> contains <L> + + + + + + + + + <Ruby> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Ruby> contains <LI> + + + + + + + + + <Ruby> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Ruby> contains <LBody> + + + + + + + + + <Ruby> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Ruby> contains <BibEntry> + + + + + + + + + <Ruby> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Ruby> contains <Table> + + + + + + + + + <Ruby> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Ruby> contains <TR> + + + + + + + + + <Ruby> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Ruby> contains <TH> + + + + + + + + + <Ruby> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Ruby> contains <TD> + + + + + + + + + <Ruby> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Ruby> contains <THead> + + + + + + + + + <Ruby> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Ruby> contains <TBody> + + + + + + + + + <Ruby> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Ruby> contains <TFoot> + + + + + + + + + <Ruby> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Ruby> contains <Caption> + + + + + + + + + <Ruby> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <Ruby> contains <Figure> + + + + + + + + + <Ruby> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <Ruby> contains <Formula> + + + + + + + + + <Ruby> shall not contain <Artifact> + kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + + <Ruby> contains <Artifact> + + + + + + + + + <RB> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <RB> contains <Document> + + + + + + + + + <RB> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <RB> contains <DocumentFragment> + + + + + + + + + <RB> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <RB> contains <Part> + + + + + + + + + <RB> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <RB> contains <Art> + + + + + + + + + <RB> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <RB> contains <Div> + + + + + + + + + <RB> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <RB> contains <Sect> + + + + + + + + + <RB> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <RB> contains <TOC> + + + + + + + + + <RB> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <RB> contains <TOCI> + + + + + + + + + <RB> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <RB> contains <Aside> + + + + + + + + + <RB> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <RB> contains <BlockQuote> + + + + + + + + + <RB> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <RB> contains <P> + + + + + + + + + <RB> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <RB> contains <Note> + + + + + + + + + <RB> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <RB> contains <Code> + + + + + + + + + <RB> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <RB> contains <Hn> + + + + + + + + + <RB> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <RB> contains <H> + + + + + + + + + <RB> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <RB> contains <Title> + + + + + + + + + <RB> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <RB> contains <Lbl> + + + + + + + + + <RB> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <RB> contains <Ruby> + + + + + + + + + <RB> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <RB> contains <RB> + + + + + + + + + <RB> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <RB> contains <RT> + + + + + + + + + <RB> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <RB> contains <RP> + + + + + + + + + <RB> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <RB> contains <Warichu> + + + + + + + + + <RB> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <RB> contains <WT> + + + + + + + + + <RB> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <RB> contains <WP> + + + + + + + + + <RB> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <RB> contains <FENote> + + + + + + + + + <RB> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <RB> contains <Index> + + + + + + + + + <RB> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <RB> contains <L> + + + + + + + + + <RB> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <RB> contains <LI> + + + + + + + + + <RB> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <RB> contains <LBody> + + + + + + + + + <RB> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <RB> contains <BibEntry> + + + + + + + + + <RB> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <RB> contains <Table> + + + + + + + + + <RB> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <RB> contains <TR> + + + + + + + + + <RB> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <RB> contains <TH> + + + + + + + + + <RB> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <RB> contains <TD> + + + + + + + + + <RB> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <RB> contains <THead> + + + + + + + + + <RB> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <RB> contains <TBody> + + + + + + + + + <RB> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <RB> contains <TFoot> + + + + + + + + + <RB> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <RB> contains <Caption> + + + + + + + + + <RB> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <RB> contains <Figure> + + + + + + + + + <RB> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <RB> contains <Formula> + + + + + + + + + <RT> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <RT> contains <Document> + + + + + + + + + <RT> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <RT> contains <DocumentFragment> + + + + + + + + + <RT> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <RT> contains <Part> + + + + + + + + + <RT> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <RT> contains <Art> + + + + + + + + + <RT> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <RT> contains <Div> + + + + + + + + + <RT> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <RT> contains <Sect> + + + + + + + + + <RT> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <RT> contains <TOC> + + + + + + + + + <RT> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <RT> contains <TOCI> + + + + + + + + + <RT> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <RT> contains <Aside> + + + + + + + + + <RT> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <RT> contains <BlockQuote> + + + + + + + + + <RT> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <RT> contains <P> + + + + + + + + + <RT> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <RT> contains <Note> + + + + + + + + + <RT> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <RT> contains <Code> + + + + + + + + + <RT> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <RT> contains <Hn> + + + + + + + + + <RT> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <RT> contains <H> + + + + + + + + + <RT> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <RT> contains <Title> + + + + + + + + + <RT> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <RT> contains <Lbl> + + + + + + + + + <RT> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <RT> contains <Ruby> + + + + + + + + + <RT> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <RT> contains <RB> + + + + + + + + + <RT> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <RT> contains <RT> + + + + + + + + + <RT> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <RT> contains <RP> + + + + + + + + + <RT> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <RT> contains <Warichu> + + + + + + + + + <RT> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <RT> contains <WT> + + + + + + + + + <RT> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <RT> contains <WP> + + + + + + + + + <RT> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <RT> contains <FENote> + + + + + + + + + <RT> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <RT> contains <Index> + + + + + + + + + <RT> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <RT> contains <L> + + + + + + + + + <RT> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <RT> contains <LI> + + + + + + + + + <RT> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <RT> contains <LBody> + + + + + + + + + <RT> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <RT> contains <BibEntry> + + + + + + + + + <RT> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <RT> contains <Table> + + + + + + + + + <RT> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <RT> contains <TR> + + + + + + + + + <RT> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <RT> contains <TH> + + + + + + + + + <RT> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <RT> contains <TD> + + + + + + + + + <RT> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <RT> contains <THead> + + + + + + + + + <RT> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <RT> contains <TBody> + + + + + + + + + <RT> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <RT> contains <TFoot> + + + + + + + + + <RT> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <RT> contains <Caption> + + + + + + + + + <RT> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <RT> contains <Figure> + + + + + + + + + <RT> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <RT> contains <Formula> + + + + + + + + + <RP> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <RP> contains <Document> + + + + + + + + + <RP> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <RP> contains <DocumentFragment> + + + + + + + + + <RP> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <RP> contains <Part> + + + + + + + + + <RP> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <RP> contains <Art> + + + + + + + + + <RP> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <RP> contains <Div> + + + + + + + + + <RP> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <RP> contains <Sect> + + + + + + + + + <RP> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <RP> contains <TOC> + + + + + + + + + <RP> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <RP> contains <TOCI> + + + + + + + + + <RP> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <RP> contains <Aside> + + + + + + + + + <RP> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <RP> contains <BlockQuote> + + + + + + + + + <RP> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <RP> contains <P> + + + + + + + + + <RP> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <RP> contains <Note> + + + + + + + + + <RP> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <RP> contains <Code> + + + + + + + + + <RP> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <RP> contains <Hn> + + + + + + + + + <RP> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <RP> contains <H> + + + + + + + + + <RP> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <RP> contains <Title> + + + + + + + + + <RP> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <RP> contains <Lbl> + + + + + + + + + <RP> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <RP> contains <Ruby> + + + + + + + + + <RP> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <RP> contains <RB> + + + + + + + + + <RP> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <RP> contains <RT> + + + + + + + + + <RP> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <RP> contains <RP> + + + + + + + + + <RP> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <RP> contains <Warichu> + + + + + + + + + <RP> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <RP> contains <WT> + + + + + + + + + <RP> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <RP> contains <WP> + + + + + + + + + <RP> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <RP> contains <FENote> + + + + + + + + + <RP> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <RP> contains <Index> + + + + + + + + + <RP> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <RP> contains <L> + + + + + + + + + <RP> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <RP> contains <LI> + + + + + + + + + <RP> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <RP> contains <LBody> + + + + + + + + + <RP> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <RP> contains <BibEntry> + + + + + + + + + <RP> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <RP> contains <Table> + + + + + + + + + <RP> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <RP> contains <TR> + + + + + + + + + <RP> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <RP> contains <TH> + + + + + + + + + <RP> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <RP> contains <TD> + + + + + + + + + <RP> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <RP> contains <THead> + + + + + + + + + <RP> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <RP> contains <TBody> + + + + + + + + + <RP> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <RP> contains <TFoot> + + + + + + + + + <RP> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <RP> contains <Caption> + + + + + + + + + <RP> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <RP> contains <Figure> + + + + + + + + + <RP> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <RP> contains <Formula> + + + + + + + + + <Warichu> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Warichu> contains <Document> + + + + + + + + + <Warichu> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Warichu> contains <DocumentFragment> + + + + + + + + + <Warichu> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Warichu> contains <Part> + + + + + + + + + <Warichu> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Warichu> contains <Art> + + + + + + + + + <Warichu> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Warichu> contains <Div> + + + + + + + + + <Warichu> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Warichu> contains <Sect> + + + + + + + + + <Warichu> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Warichu> contains <TOC> + + + + + + + + + <Warichu> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Warichu> contains <TOCI> + + + + + + + + + <Warichu> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Warichu> contains <Aside> + + + + + + + + + <Warichu> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Warichu> contains <BlockQuote> + + + + + + + + + <Warichu> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Warichu> contains <P> + + + + + + + + + <Warichu> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <Warichu> contains <Note> + + + + + + + + + <Warichu> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Warichu> contains <Code> + + + + + + + + + <Warichu> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Warichu> contains <Hn> + + + + + + + + + <Warichu> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Warichu> contains <H> + + + + + + + + + <Warichu> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Warichu> contains <Title> + + + + + + + + + <Warichu> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Warichu> contains <Sub> + + + + + + + + + <Warichu> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Warichu> contains <Lbl> + + + + + + + + + <Warichu> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Warichu> contains <Em> + + + + + + + + + <Warichu> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Warichu> contains <Strong> + + + + + + + + + <Warichu> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Warichu> contains <Span> + + + + + + + + + <Warichu> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Warichu> contains <Quote> + + + + + + + + + <Warichu> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Warichu> contains <Link> + + + + + + + + + <Warichu> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Warichu> contains <Reference> + + + + + + + + + <Warichu> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <Warichu> contains <Annot> + + + + + + + + + <Warichu> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Warichu> contains <Form> + + + + + + + + + <Warichu> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Warichu> contains <Ruby> + + + + + + + + + <Warichu> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Warichu> contains <RB> + + + + + + + + + <Warichu> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Warichu> contains <RT> + + + + + + + + + <Warichu> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Warichu> contains <RP> + + + + + + + + + <Warichu> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Warichu> contains <Warichu> + + + + + + + + + <Warichu> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <Warichu> contains <FENote> + + + + + + + + + <Warichu> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Warichu> contains <Index> + + + + + + + + + <Warichu> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Warichu> contains <L> + + + + + + + + + <Warichu> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Warichu> contains <LI> + + + + + + + + + <Warichu> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Warichu> contains <LBody> + + + + + + + + + <Warichu> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Warichu> contains <BibEntry> + + + + + + + + + <Warichu> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Warichu> contains <Table> + + + + + + + + + <Warichu> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Warichu> contains <TR> + + + + + + + + + <Warichu> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Warichu> contains <TH> + + + + + + + + + <Warichu> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Warichu> contains <TD> + + + + + + + + + <Warichu> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Warichu> contains <THead> + + + + + + + + + <Warichu> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Warichu> contains <TBody> + + + + + + + + + <Warichu> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Warichu> contains <TFoot> + + + + + + + + + <Warichu> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Warichu> contains <Caption> + + + + + + + + + <Warichu> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <Warichu> contains <Figure> + + + + + + + + + <Warichu> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <Warichu> contains <Formula> + + + + + + + + + <Warichu> shall not contain <Artifact> + kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + + <Warichu> contains <Artifact> + + + + + + + + + <WT> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <WT> contains <Document> + + + + + + + + + <WT> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <WT> contains <DocumentFragment> + + + + + + + + + <WT> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <WT> contains <Part> + + + + + + + + + <WT> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <WT> contains <Art> + + + + + + + + + <WT> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <WT> contains <Div> + + + + + + + + + <WT> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <WT> contains <Sect> + + + + + + + + + <WT> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <WT> contains <TOC> + + + + + + + + + <WT> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <WT> contains <TOCI> + + + + + + + + + <WT> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <WT> contains <Aside> + + + + + + + + + <WT> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <WT> contains <BlockQuote> + + + + + + + + + <WT> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <WT> contains <P> + + + + + + + + + <WT> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <WT> contains <Note> + + + + + + + + + <WT> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <WT> contains <Code> + + + + + + + + + <WT> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <WT> contains <Hn> + + + + + + + + + <WT> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <WT> contains <H> + + + + + + + + + <WT> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <WT> contains <Title> + + + + + + + + + <WT> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <WT> contains <Lbl> + + + + + + + + + <WT> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <WT> contains <Ruby> + + + + + + + + + <WT> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <WT> contains <RB> + + + + + + + + + <WT> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <WT> contains <RT> + + + + + + + + + <WT> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <WT> contains <RP> + + + + + + + + + <WT> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <WT> contains <Warichu> + + + + + + + + + <WT> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <WT> contains <WT> + + + + + + + + + <WT> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <WT> contains <WP> + + + + + + + + + <WT> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <WT> contains <FENote> + + + + + + + + + <WT> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <WT> contains <Index> + + + + + + + + + <WT> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <WT> contains <L> + + + + + + + + + <WT> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <WT> contains <LI> + + + + + + + + + <WT> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <WT> contains <LBody> + + + + + + + + + <WT> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <WT> contains <BibEntry> + + + + + + + + + <WT> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <WT> contains <Table> + + + + + + + + + <WT> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <WT> contains <TR> + + + + + + + + + <WT> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <WT> contains <TH> + + + + + + + + + <WT> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <WT> contains <TD> + + + + + + + + + <WT> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <WT> contains <THead> + + + + + + + + + <WT> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <WT> contains <TBody> + + + + + + + + + <WT> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <WT> contains <TFoot> + + + + + + + + + <WT> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <WT> contains <Caption> + + + + + + + + + <WT> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <WT> contains <Figure> + + + + + + + + + <WT> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <WT> contains <Formula> + + + + + + + + + <WP> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <WP> contains <Document> + + + + + + + + + <WP> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <WP> contains <DocumentFragment> + + + + + + + + + <WP> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <WP> contains <Part> + + + + + + + + + <WP> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <WP> contains <Art> + + + + + + + + + <WP> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <WP> contains <Div> + + + + + + + + + <WP> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <WP> contains <Sect> + + + + + + + + + <WP> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <WP> contains <TOC> + + + + + + + + + <WP> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <WP> contains <TOCI> + + + + + + + + + <WP> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <WP> contains <Aside> + + + + + + + + + <WP> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <WP> contains <BlockQuote> + + + + + + + + + <WP> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <WP> contains <P> + + + + + + + + + <WP> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <WP> contains <Note> + + + + + + + + + <WP> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <WP> contains <Code> + + + + + + + + + <WP> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <WP> contains <Hn> + + + + + + + + + <WP> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <WP> contains <H> + + + + + + + + + <WP> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <WP> contains <Title> + + + + + + + + + <WP> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <WP> contains <Lbl> + + + + + + + + + <WP> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <WP> contains <Ruby> + + + + + + + + + <WP> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <WP> contains <RB> + + + + + + + + + <WP> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <WP> contains <RT> + + + + + + + + + <WP> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <WP> contains <RP> + + + + + + + + + <WP> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <WP> contains <Warichu> + + + + + + + + + <WP> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <WP> contains <WT> + + + + + + + + + <WP> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <WP> contains <WP> + + + + + + + + + <WP> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <WP> contains <FENote> + + + + + + + + + <WP> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <WP> contains <Index> + + + + + + + + + <WP> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <WP> contains <L> + + + + + + + + + <WP> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <WP> contains <LI> + + + + + + + + + <WP> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <WP> contains <LBody> + + + + + + + + + <WP> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <WP> contains <BibEntry> + + + + + + + + + <WP> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <WP> contains <Table> + + + + + + + + + <WP> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <WP> contains <TR> + + + + + + + + + <WP> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <WP> contains <TH> + + + + + + + + + <WP> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <WP> contains <TD> + + + + + + + + + <WP> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <WP> contains <THead> + + + + + + + + + <WP> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <WP> contains <TBody> + + + + + + + + + <WP> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <WP> contains <TFoot> + + + + + + + + + <WP> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <WP> contains <Caption> + + + + + + + + + <WP> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <WP> contains <Figure> + + + + + + + + + <WP> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <WP> contains <Formula> + + + + + + + + + <FENote> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <FENote> contains <Document> + + + + + + + + + <FENote> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <FENote> contains <TOC> + + + + + + + + + <FENote> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <FENote> contains <TOCI> + + + + + + + + + <FENote> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <FENote> contains <Hn> + + + + + + + + + <FENote> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <FENote> contains <H> + + + + + + + + + <FENote> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <FENote> contains <Title> + + + + + + + + + <FENote> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <FENote> contains <RB> + + + + + + + + + <FENote> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <FENote> contains <RT> + + + + + + + + + <FENote> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <FENote> contains <RP> + + + + + + + + + <FENote> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <FENote> contains <WT> + + + + + + + + + <FENote> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <FENote> contains <WP> + + + + + + + + + <FENote> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <FENote> contains <Index> + + + + + + + + + <FENote> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <FENote> contains <LI> + + + + + + + + + <FENote> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <FENote> contains <LBody> + + + + + + + + + <FENote> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <FENote> contains <BibEntry> + + + + + + + + + <FENote> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <FENote> contains <TR> + + + + + + + + + <FENote> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <FENote> contains <TH> + + + + + + + + + <FENote> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <FENote> contains <TD> + + + + + + + + + <FENote> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <FENote> contains <THead> + + + + + + + + + <FENote> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <FENote> contains <TBody> + + + + + + + + + <FENote> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <FENote> contains <TFoot> + + + + + + + + + <Index> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Index> contains <Document> + + + + + + + + + <Index> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Index> contains <DocumentFragment> + + + + + + + + + <Index> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Index> contains <Art> + + + + + + + + + <Index> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Index> contains <TOC> + + + + + + + + + <Index> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Index> contains <TOCI> + + + + + + + + + <Index> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Index> contains <Aside> + + + + + + + + + <Index> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Index> contains <BlockQuote> + + + + + + + + + <Index> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Index> contains <Code> + + + + + + + + + <Index> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Index> contains <Title> + + + + + + + + + <Index> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Index> contains <Sub> + + + + + + + + + <Index> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Index> contains <Lbl> + + + + + + + + + <Index> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Index> contains <Em> + + + + + + + + + <Index> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Index> contains <Strong> + + + + + + + + + <Index> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Index> contains <Span> + + + + + + + + + <Index> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Index> contains <Quote> + + + + + + + + + <Index> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Index> contains <Link> + + + + + + + + + <Index> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Index> contains <Form> + + + + + + + + + <Index> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Index> contains <Ruby> + + + + + + + + + <Index> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Index> contains <RB> + + + + + + + + + <Index> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Index> contains <RT> + + + + + + + + + <Index> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Index> contains <RP> + + + + + + + + + <Index> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Index> contains <Warichu> + + + + + + + + + <Index> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Index> contains <WT> + + + + + + + + + <Index> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Index> contains <WP> + + + + + + + + + <Index> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Index> contains <Index> + + + + + + + + + <Index> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Index> contains <LI> + + + + + + + + + <Index> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Index> contains <LBody> + + + + + + + + + <Index> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Index> contains <BibEntry> + + + + + + + + + <Index> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Index> contains <TR> + + + + + + + + + <Index> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Index> contains <TH> + + + + + + + + + <Index> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Index> contains <TD> + + + + + + + + + <Index> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Index> contains <THead> + + + + + + + + + <Index> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Index> contains <TBody> + + + + + + + + + <Index> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Index> contains <TFoot> + + + + + + + + + <Index> shall not contain content item + hasContentItems == false + + <Index> contains content item(s) + + + + + + + + + <L> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <L> contains <Document> + + + + + + + + + <L> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <L> contains <DocumentFragment> + + + + + + + + + <L> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <L> contains <Part> + + + + + + + + + <L> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <L> contains <Art> + + + + + + + + + <L> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <L> contains <Div> + + + + + + + + + <L> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <L> contains <Sect> + + + + + + + + + <L> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <L> contains <TOC> + + + + + + + + + <L> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <L> contains <TOCI> + + + + + + + + + <L> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <L> contains <Aside> + + + + + + + + + <L> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <L> contains <BlockQuote> + + + + + + + + + <L> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <L> contains <P> + + + + + + + + + <L> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <L> contains <Note> + + + + + + + + + <L> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <L> contains <Code> + + + + + + + + + <L> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <L> contains <Hn> + + + + + + + + + <L> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <L> contains <H> + + + + + + + + + <L> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <L> contains <Title> + + + + + + + + + <L> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <L> contains <Sub> + + + + + + + + + <L> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <L> contains <Lbl> + + + + + + + + + <L> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <L> contains <Em> + + + + + + + + + <L> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <L> contains <Strong> + + + + + + + + + <L> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <L> contains <Span> + + + + + + + + + <L> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <L> contains <Quote> + + + + + + + + + <L> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <L> contains <Link> + + + + + + + + + <L> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <L> contains <Reference> + + + + + + + + + <L> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <L> contains <Annot> + + + + + + + + + <L> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <L> contains <Form> + + + + + + + + + <L> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <L> contains <Ruby> + + + + + + + + + <L> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <L> contains <RB> + + + + + + + + + <L> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <L> contains <RT> + + + + + + + + + <L> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <L> contains <RP> + + + + + + + + + <L> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <L> contains <Warichu> + + + + + + + + + <L> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <L> contains <WT> + + + + + + + + + <L> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <L> contains <WP> + + + + + + + + + <L> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <L> contains <FENote> + + + + + + + + + <L> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <L> contains <Index> + + + + + + + + + <L> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <L> contains <LBody> + + + + + + + + + <L> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <L> contains <BibEntry> + + + + + + + + + <L> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <L> contains <Table> + + + + + + + + + <L> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <L> contains <TR> + + + + + + + + + <L> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <L> contains <TH> + + + + + + + + + <L> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <L> contains <TD> + + + + + + + + + <L> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <L> contains <THead> + + + + + + + + + <L> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <L> contains <TBody> + + + + + + + + + <L> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <L> contains <TFoot> + + + + + + + + + <L> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <L> contains more than one <Caption> + + + + + + + + + <L> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <L> contains <Figure> + + + + + + + + + <L> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <L> contains <Formula> + + + + + + + + + <L> shall not contain content item + hasContentItems == false + + <L> contains content item(s) + + + + + + + + + <LI> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <LI> contains <Document> + + + + + + + + + <LI> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <LI> contains <DocumentFragment> + + + + + + + + + <LI> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <LI> contains <Part> + + + + + + + + + <LI> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <LI> contains <Art> + + + + + + + + + <LI> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <LI> contains <Sect> + + + + + + + + + <LI> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <LI> contains <TOC> + + + + + + + + + <LI> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <LI> contains <TOCI> + + + + + + + + + <LI> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <LI> contains <Aside> + + + + + + + + + <LI> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <LI> contains <BlockQuote> + + + + + + + + + <LI> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <LI> contains <P> + + + + + + + + + <LI> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <LI> contains <Note> + + + + + + + + + <LI> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <LI> contains <Code> + + + + + + + + + <LI> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <LI> contains <Hn> + + + + + + + + + <LI> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <LI> contains <H> + + + + + + + + + <LI> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <LI> contains <Title> + + + + + + + + + <LI> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <LI> contains <Sub> + + + + + + + + + <LI> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <LI> contains <Em> + + + + + + + + + <LI> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <LI> contains <Strong> + + + + + + + + + <LI> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <LI> contains <Span> + + + + + + + + + <LI> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <LI> contains <Quote> + + + + + + + + + <LI> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <LI> contains <Link> + + + + + + + + + <LI> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <LI> contains <Reference> + + + + + + + + + <LI> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <LI> contains <Annot> + + + + + + + + + <LI> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <LI> contains <Form> + + + + + + + + + <LI> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <LI> contains <Ruby> + + + + + + + + + <LI> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <LI> contains <RB> + + + + + + + + + <LI> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <LI> contains <RT> + + + + + + + + + <LI> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <LI> contains <RP> + + + + + + + + + <LI> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <LI> contains <Warichu> + + + + + + + + + <LI> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <LI> contains <WT> + + + + + + + + + <LI> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <LI> contains <WP> + + + + + + + + + <LI> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <LI> contains <FENote> + + + + + + + + + <LI> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <LI> contains <Index> + + + + + + + + + <LI> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <LI> contains <L> + + + + + + + + + <LI> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <LI> contains <LI> + + + + + + + + + <LI> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <LI> contains <BibEntry> + + + + + + + + + <LI> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <LI> contains <Table> + + + + + + + + + <LI> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <LI> contains <TR> + + + + + + + + + <LI> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <LI> contains <TH> + + + + + + + + + <LI> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <LI> contains <TD> + + + + + + + + + <LI> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <LI> contains <THead> + + + + + + + + + <LI> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <LI> contains <TBody> + + + + + + + + + <LI> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <LI> contains <TFoot> + + + + + + + + + <LI> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <LI> contains <Caption> + + + + + + + + + <LI> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <LI> contains <Figure> + + + + + + + + + <LI> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <LI> contains <Formula> + + + + + + + + + <LBody> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <LBody> contains <Document> + + + + + + + + + <LBody> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <LBody> contains <DocumentFragment> + + + + + + + + + <LBody> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <LBody> contains <TOC> + + + + + + + + + <LBody> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <LBody> contains <TOCI> + + + + + + + + + <LBody> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <LBody> contains more than one <H> + + + + + + + + + <LBody> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <LBody> contains <Title> + + + + + + + + + <LBody> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <LBody> contains <Lbl> + + + + + + + + + <LBody> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <LBody> contains <RB> + + + + + + + + + <LBody> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <LBody> contains <RT> + + + + + + + + + <LBody> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <LBody> contains <RP> + + + + + + + + + <LBody> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <LBody> contains <WT> + + + + + + + + + <LBody> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <LBody> contains <WP> + + + + + + + + + <LBody> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <LBody> contains <LI> + + + + + + + + + <LBody> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <LBody> contains <LBody> + + + + + + + + + <LBody> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <LBody> contains <TR> + + + + + + + + + <LBody> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <LBody> contains <TH> + + + + + + + + + <LBody> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <LBody> contains <TD> + + + + + + + + + <LBody> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <LBody> contains <THead> + + + + + + + + + <LBody> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <LBody> contains <TBody> + + + + + + + + + <LBody> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <LBody> contains <TFoot> + + + + + + + + + <LBody> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <LBody> contains more than one <Caption> + + + + + + + + + <BibEntry> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <BibEntry> contains <Document> + + + + + + + + + <BibEntry> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <BibEntry> contains <DocumentFragment> + + + + + + + + + <BibEntry> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <BibEntry> contains <Art> + + + + + + + + + <BibEntry> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <BibEntry> contains <Sect> + + + + + + + + + <BibEntry> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <BibEntry> contains <TOC> + + + + + + + + + <BibEntry> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <BibEntry> contains <TOCI> + + + + + + + + + <BibEntry> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <BibEntry> contains <Aside> + + + + + + + + + <BibEntry> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <BibEntry> contains <BlockQuote> + + + + + + + + + <BibEntry> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <BibEntry> contains <Code> + + + + + + + + + <BibEntry> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <BibEntry> contains <Hn> + + + + + + + + + <BibEntry> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <BibEntry> contains <H> + + + + + + + + + <BibEntry> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <BibEntry> contains <Title> + + + + + + + + + <BibEntry> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <BibEntry> contains <Sub> + + + + + + + + + <BibEntry> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <BibEntry> contains <Quote> + + + + + + + + + <BibEntry> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <BibEntry> contains <Form> + + + + + + + + + <BibEntry> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <BibEntry> contains <Ruby> + + + + + + + + + <BibEntry> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <BibEntry> contains <RB> + + + + + + + + + <BibEntry> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <BibEntry> contains <RT> + + + + + + + + + <BibEntry> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <BibEntry> contains <RP> + + + + + + + + + <BibEntry> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <BibEntry> contains <Warichu> + + + + + + + + + <BibEntry> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <BibEntry> contains <WT> + + + + + + + + + <BibEntry> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <BibEntry> contains <WP> + + + + + + + + + <BibEntry> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <BibEntry> contains <Index> + + + + + + + + + <BibEntry> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <BibEntry> contains <L> + + + + + + + + + <BibEntry> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <BibEntry> contains <LI> + + + + + + + + + <BibEntry> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <BibEntry> contains <LBody> + + + + + + + + + <BibEntry> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <BibEntry> contains <BibEntry> + + + + + + + + + <BibEntry> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <BibEntry> contains <Table> + + + + + + + + + <BibEntry> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <BibEntry> contains <TR> + + + + + + + + + <BibEntry> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <BibEntry> contains <TH> + + + + + + + + + <BibEntry> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <BibEntry> contains <TD> + + + + + + + + + <BibEntry> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <BibEntry> contains <THead> + + + + + + + + + <BibEntry> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <BibEntry> contains <TBody> + + + + + + + + + <BibEntry> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <BibEntry> contains <TFoot> + + + + + + + + + <BibEntry> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <BibEntry> contains <Caption> + + + + + + + + + <BibEntry> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <BibEntry> contains <Formula> + + + + + + + + + <Table> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Table> contains <Document> + + + + + + + + + <Table> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Table> contains <DocumentFragment> + + + + + + + + + <Table> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <Table> contains <Part> + + + + + + + + + <Table> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Table> contains <Art> + + + + + + + + + <Table> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <Table> contains <Div> + + + + + + + + + <Table> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Table> contains <Sect> + + + + + + + + + <Table> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Table> contains <TOC> + + + + + + + + + <Table> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Table> contains <TOCI> + + + + + + + + + <Table> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <Table> contains <Aside> + + + + + + + + + <Table> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <Table> contains <BlockQuote> + + + + + + + + + <Table> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <Table> contains <P> + + + + + + + + + <Table> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <Table> contains <Note> + + + + + + + + + <Table> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <Table> contains <Code> + + + + + + + + + <Table> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <Table> contains <Hn> + + + + + + + + + <Table> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <Table> contains <H> + + + + + + + + + <Table> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Table> contains <Title> + + + + + + + + + <Table> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <Table> contains <Sub> + + + + + + + + + <Table> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <Table> contains <Lbl> + + + + + + + + + <Table> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <Table> contains <Em> + + + + + + + + + <Table> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <Table> contains <Strong> + + + + + + + + + <Table> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <Table> contains <Span> + + + + + + + + + <Table> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <Table> contains <Quote> + + + + + + + + + <Table> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <Table> contains <Link> + + + + + + + + + <Table> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <Table> contains <Reference> + + + + + + + + + <Table> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <Table> contains <Annot> + + + + + + + + + <Table> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <Table> contains <Form> + + + + + + + + + <Table> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <Table> contains <Ruby> + + + + + + + + + <Table> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Table> contains <RB> + + + + + + + + + <Table> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Table> contains <RT> + + + + + + + + + <Table> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Table> contains <RP> + + + + + + + + + <Table> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <Table> contains <Warichu> + + + + + + + + + <Table> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Table> contains <WT> + + + + + + + + + <Table> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Table> contains <WP> + + + + + + + + + <Table> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <Table> contains <FENote> + + + + + + + + + <Table> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <Table> contains <Index> + + + + + + + + + <Table> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <Table> contains <L> + + + + + + + + + <Table> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Table> contains <LI> + + + + + + + + + <Table> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Table> contains <LBody> + + + + + + + + + <Table> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <Table> contains <BibEntry> + + + + + + + + + <Table> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <Table> contains <Table> + + + + + + + + + <Table> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Table> contains <TH> + + + + + + + + + <Table> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Table> contains <TD> + + + + + + + + + <Table> shall contain at most one <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 + + <Table> contains more than one <THead> + + + + + + + + + <Table> shall contain at most one <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 + + <Table> contains more than one <TFoot> + + + + + + + + + <Table> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Table> contains more than one <Caption> + + + + + + + + + <Table> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <Table> contains <Figure> + + + + + + + + + <Table> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <Table> contains <Formula> + + + + + + + + + <Table> shall not contain content item + hasContentItems == false + + <Table> contains content item(s) + + + + + + + + + <TR> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TR> contains <Document> + + + + + + + + + <TR> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TR> contains <DocumentFragment> + + + + + + + + + <TR> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TR> contains <Part> + + + + + + + + + <TR> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <TR> contains <Art> + + + + + + + + + <TR> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <TR> contains <Div> + + + + + + + + + <TR> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <TR> contains <Sect> + + + + + + + + + <TR> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <TR> contains <TOC> + + + + + + + + + <TR> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TR> contains <TOCI> + + + + + + + + + <TR> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TR> contains <Aside> + + + + + + + + + <TR> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TR> contains <BlockQuote> + + + + + + + + + <TR> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <TR> contains <P> + + + + + + + + + <TR> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <TR> contains <Note> + + + + + + + + + <TR> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <TR> contains <Code> + + + + + + + + + <TR> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <TR> contains <Hn> + + + + + + + + + <TR> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <TR> contains <H> + + + + + + + + + <TR> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TR> contains <Title> + + + + + + + + + <TR> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TR> contains <Sub> + + + + + + + + + <TR> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <TR> contains <Lbl> + + + + + + + + + <TR> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <TR> contains <Em> + + + + + + + + + <TR> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <TR> contains <Strong> + + + + + + + + + <TR> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <TR> contains <Span> + + + + + + + + + <TR> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <TR> contains <Quote> + + + + + + + + + <TR> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <TR> contains <Link> + + + + + + + + + <TR> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <TR> contains <Reference> + + + + + + + + + <TR> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <TR> contains <Annot> + + + + + + + + + <TR> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <TR> contains <Form> + + + + + + + + + <TR> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <TR> contains <Ruby> + + + + + + + + + <TR> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TR> contains <RB> + + + + + + + + + <TR> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TR> contains <RT> + + + + + + + + + <TR> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TR> contains <RP> + + + + + + + + + <TR> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <TR> contains <Warichu> + + + + + + + + + <TR> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TR> contains <WT> + + + + + + + + + <TR> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TR> contains <WP> + + + + + + + + + <TR> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <TR> contains <FENote> + + + + + + + + + <TR> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <TR> contains <Index> + + + + + + + + + <TR> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <TR> contains <L> + + + + + + + + + <TR> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TR> contains <LI> + + + + + + + + + <TR> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TR> contains <LBody> + + + + + + + + + <TR> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <TR> contains <BibEntry> + + + + + + + + + <TR> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <TR> contains <Table> + + + + + + + + + <TR> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <TR> contains <TR> + + + + + + + + + <TR> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TR> contains <THead> + + + + + + + + + <TR> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TR> contains <TBody> + + + + + + + + + <TR> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TR> contains <TFoot> + + + + + + + + + <TR> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TR> contains <Caption> + + + + + + + + + <TR> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <TR> contains <Figure> + + + + + + + + + <TR> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <TR> contains <Formula> + + + + + + + + + <TR> shall not contain content item + hasContentItems == false + + <TR> contains content item(s) + + + + + + + + + <TH> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TH> contains <Document> + + + + + + + + + <TH> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TH> contains <DocumentFragment> + + + + + + + + + <TH> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TH> contains <Part> + + + + + + + + + <TH> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <TH> contains <TOC> + + + + + + + + + <TH> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TH> contains <TOCI> + + + + + + + + + <TH> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TH> contains <Aside> + + + + + + + + + <TH> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TH> contains <BlockQuote> + + + + + + + + + <TH> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <TH> contains more than one <H> + + + + + + + + + <TH> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TH> contains <Title> + + + + + + + + + <TH> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TH> contains <Sub> + + + + + + + + + <TH> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TH> contains <RB> + + + + + + + + + <TH> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TH> contains <RT> + + + + + + + + + <TH> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TH> contains <RP> + + + + + + + + + <TH> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TH> contains <WT> + + + + + + + + + <TH> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TH> contains <WP> + + + + + + + + + <TH> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TH> contains <LI> + + + + + + + + + <TH> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TH> contains <LBody> + + + + + + + + + <TH> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <TH> contains <TR> + + + + + + + + + <TH> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TH> contains <TH> + + + + + + + + + <TH> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TH> contains <TD> + + + + + + + + + <TH> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TH> contains <THead> + + + + + + + + + <TH> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TH> contains <TBody> + + + + + + + + + <TH> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TH> contains <TFoot> + + + + + + + + + <TH> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TH> contains <Caption> + + + + + + + + + <TD> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TD> contains <Document> + + + + + + + + + <TD> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TD> contains <DocumentFragment> + + + + + + + + + <TD> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TD> contains <Part> + + + + + + + + + <TD> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <TD> contains <TOC> + + + + + + + + + <TD> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TD> contains <TOCI> + + + + + + + + + <TD> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TD> contains <Aside> + + + + + + + + + <TD> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TD> contains <BlockQuote> + + + + + + + + + <TD> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <TD> contains more than one <H> + + + + + + + + + <TD> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TD> contains <Title> + + + + + + + + + <TD> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TD> contains <Sub> + + + + + + + + + <TD> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TD> contains <RB> + + + + + + + + + <TD> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TD> contains <RT> + + + + + + + + + <TD> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TD> contains <RP> + + + + + + + + + <TD> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TD> contains <WT> + + + + + + + + + <TD> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TD> contains <WP> + + + + + + + + + <TD> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TD> contains <LI> + + + + + + + + + <TD> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TD> contains <LBody> + + + + + + + + + <TD> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <TD> contains <TR> + + + + + + + + + <TD> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TD> contains <TH> + + + + + + + + + <TD> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TD> contains <TD> + + + + + + + + + <TD> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TD> contains <THead> + + + + + + + + + <TD> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TD> contains <TBody> + + + + + + + + + <TD> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TD> contains <TFoot> + + + + + + + + + <TD> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TD> contains <Caption> + + + + + + + + + <THead> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <THead> contains <Document> + + + + + + + + + <THead> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <THead> contains <DocumentFragment> + + + + + + + + + <THead> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <THead> contains <Part> + + + + + + + + + <THead> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <THead> contains <Art> + + + + + + + + + <THead> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <THead> contains <Div> + + + + + + + + + <THead> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <THead> contains <Sect> + + + + + + + + + <THead> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <THead> contains <TOC> + + + + + + + + + <THead> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <THead> contains <TOCI> + + + + + + + + + <THead> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <THead> contains <Aside> + + + + + + + + + <THead> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <THead> contains <BlockQuote> + + + + + + + + + <THead> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <THead> contains <P> + + + + + + + + + <THead> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <THead> contains <Note> + + + + + + + + + <THead> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <THead> contains <Code> + + + + + + + + + <THead> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <THead> contains <Hn> + + + + + + + + + <THead> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <THead> contains <H> + + + + + + + + + <THead> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <THead> contains <Title> + + + + + + + + + <THead> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <THead> contains <Sub> + + + + + + + + + <THead> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <THead> contains <Lbl> + + + + + + + + + <THead> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <THead> contains <Em> + + + + + + + + + <THead> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <THead> contains <Strong> + + + + + + + + + <THead> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <THead> contains <Span> + + + + + + + + + <THead> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <THead> contains <Quote> + + + + + + + + + <THead> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <THead> contains <Link> + + + + + + + + + <THead> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <THead> contains <Reference> + + + + + + + + + <THead> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <THead> contains <Annot> + + + + + + + + + <THead> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <THead> contains <Form> + + + + + + + + + <THead> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <THead> contains <Ruby> + + + + + + + + + <THead> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <THead> contains <RB> + + + + + + + + + <THead> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <THead> contains <RT> + + + + + + + + + <THead> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <THead> contains <RP> + + + + + + + + + <THead> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <THead> contains <Warichu> + + + + + + + + + <THead> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <THead> contains <WT> + + + + + + + + + <THead> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <THead> contains <WP> + + + + + + + + + <THead> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <THead> contains <FENote> + + + + + + + + + <THead> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <THead> contains <Index> + + + + + + + + + <THead> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <THead> contains <L> + + + + + + + + + <THead> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <THead> contains <LI> + + + + + + + + + <THead> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <THead> contains <LBody> + + + + + + + + + <THead> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <THead> contains <BibEntry> + + + + + + + + + <THead> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <THead> contains <Table> + + + + + + + + + <THead> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <THead> contains <TH> + + + + + + + + + <THead> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <THead> contains <TD> + + + + + + + + + <THead> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <THead> contains <THead> + + + + + + + + + <THead> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <THead> contains <TBody> + + + + + + + + + <THead> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <THead> contains <TFoot> + + + + + + + + + <THead> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <THead> contains <Caption> + + + + + + + + + <THead> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <THead> contains <Figure> + + + + + + + + + <THead> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <THead> contains <Formula> + + + + + + + + + <THead> shall not contain content item + hasContentItems == false + + <THead> contains content item(s) + + + + + + + + + <TBody> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TBody> contains <Document> + + + + + + + + + <TBody> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TBody> contains <DocumentFragment> + + + + + + + + + <TBody> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TBody> contains <Part> + + + + + + + + + <TBody> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <TBody> contains <Art> + + + + + + + + + <TBody> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <TBody> contains <Div> + + + + + + + + + <TBody> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <TBody> contains <Sect> + + + + + + + + + <TBody> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <TBody> contains <TOC> + + + + + + + + + <TBody> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TBody> contains <TOCI> + + + + + + + + + <TBody> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TBody> contains <Aside> + + + + + + + + + <TBody> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TBody> contains <BlockQuote> + + + + + + + + + <TBody> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <TBody> contains <P> + + + + + + + + + <TBody> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <TBody> contains <Note> + + + + + + + + + <TBody> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <TBody> contains <Code> + + + + + + + + + <TBody> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <TBody> contains <Hn> + + + + + + + + + <TBody> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <TBody> contains <H> + + + + + + + + + <TBody> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TBody> contains <Title> + + + + + + + + + <TBody> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TBody> contains <Sub> + + + + + + + + + <TBody> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <TBody> contains <Lbl> + + + + + + + + + <TBody> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <TBody> contains <Em> + + + + + + + + + <TBody> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <TBody> contains <Strong> + + + + + + + + + <TBody> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <TBody> contains <Span> + + + + + + + + + <TBody> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <TBody> contains <Quote> + + + + + + + + + <TBody> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <TBody> contains <Link> + + + + + + + + + <TBody> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <TBody> contains <Reference> + + + + + + + + + <TBody> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <TBody> contains <Annot> + + + + + + + + + <TBody> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <TBody> contains <Form> + + + + + + + + + <TBody> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <TBody> contains <Ruby> + + + + + + + + + <TBody> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TBody> contains <RB> + + + + + + + + + <TBody> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TBody> contains <RT> + + + + + + + + + <TBody> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TBody> contains <RP> + + + + + + + + + <TBody> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <TBody> contains <Warichu> + + + + + + + + + <TBody> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TBody> contains <WT> + + + + + + + + + <TBody> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TBody> contains <WP> + + + + + + + + + <TBody> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <TBody> contains <FENote> + + + + + + + + + <TBody> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <TBody> contains <Index> + + + + + + + + + <TBody> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <TBody> contains <L> + + + + + + + + + <TBody> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TBody> contains <LI> + + + + + + + + + <TBody> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TBody> contains <LBody> + + + + + + + + + <TBody> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <TBody> contains <BibEntry> + + + + + + + + + <TBody> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <TBody> contains <Table> + + + + + + + + + <TBody> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TBody> contains <TH> + + + + + + + + + <TBody> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TBody> contains <TD> + + + + + + + + + <TBody> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TBody> contains <THead> + + + + + + + + + <TBody> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TBody> contains <TBody> + + + + + + + + + <TBody> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TBody> contains <TFoot> + + + + + + + + + <TBody> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TBody> contains <Caption> + + + + + + + + + <TBody> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <TBody> contains <Figure> + + + + + + + + + <TBody> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <TBody> contains <Formula> + + + + + + + + + <TBody> shall not contain content item + hasContentItems == false + + <TBody> contains content item(s) + + + + + + + + + <TFoot> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <TFoot> contains <Document> + + + + + + + + + <TFoot> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <TFoot> contains <DocumentFragment> + + + + + + + + + <TFoot> shall not contain <Part> + kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + + <TFoot> contains <Part> + + + + + + + + + <TFoot> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <TFoot> contains <Art> + + + + + + + + + <TFoot> shall not contain <Div> + kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + + <TFoot> contains <Div> + + + + + + + + + <TFoot> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <TFoot> contains <Sect> + + + + + + + + + <TFoot> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <TFoot> contains <TOC> + + + + + + + + + <TFoot> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <TFoot> contains <TOCI> + + + + + + + + + <TFoot> shall not contain <Aside> + kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + + <TFoot> contains <Aside> + + + + + + + + + <TFoot> shall not contain <BlockQuote> + kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + + <TFoot> contains <BlockQuote> + + + + + + + + + <TFoot> shall not contain <P> + kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + + <TFoot> contains <P> + + + + + + + + + <TFoot> shall not contain <Note> + kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + + <TFoot> contains <Note> + + + + + + + + + <TFoot> shall not contain <Code> + kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + + <TFoot> contains <Code> + + + + + + + + + <TFoot> shall not contain <Hn> + kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + + <TFoot> contains <Hn> + + + + + + + + + <TFoot> shall not contain <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + + <TFoot> contains <H> + + + + + + + + + <TFoot> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <TFoot> contains <Title> + + + + + + + + + <TFoot> shall not contain <Sub> + kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + + <TFoot> contains <Sub> + + + + + + + + + <TFoot> shall not contain <Lbl> + kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + + <TFoot> contains <Lbl> + + + + + + + + + <TFoot> shall not contain <Em> + kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + + <TFoot> contains <Em> + + + + + + + + + <TFoot> shall not contain <Strong> + kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + + <TFoot> contains <Strong> + + + + + + + + + <TFoot> shall not contain <Span> + kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + + <TFoot> contains <Span> + + + + + + + + + <TFoot> shall not contain <Quote> + kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + + <TFoot> contains <Quote> + + + + + + + + + <TFoot> shall not contain <Link> + kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + + <TFoot> contains <Link> + + + + + + + + + <TFoot> shall not contain <Reference> + kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + + <TFoot> contains <Reference> + + + + + + + + + <TFoot> shall not contain <Annot> + kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + + <TFoot> contains <Annot> + + + + + + + + + <TFoot> shall not contain <Form> + kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + + <TFoot> contains <Form> + + + + + + + + + <TFoot> shall not contain <Ruby> + kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + + <TFoot> contains <Ruby> + + + + + + + + + <TFoot> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <TFoot> contains <RB> + + + + + + + + + <TFoot> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <TFoot> contains <RT> + + + + + + + + + <TFoot> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <TFoot> contains <RP> + + + + + + + + + <TFoot> shall not contain <Warichu> + kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + + <TFoot> contains <Warichu> + + + + + + + + + <TFoot> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <TFoot> contains <WT> + + + + + + + + + <TFoot> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <TFoot> contains <WP> + + + + + + + + + <TFoot> shall not contain <FENote> + kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + + <TFoot> contains <FENote> + + + + + + + + + <TFoot> shall not contain <Index> + kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + + <TFoot> contains <Index> + + + + + + + + + <TFoot> shall not contain <L> + kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + + <TFoot> contains <L> + + + + + + + + + <TFoot> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <TFoot> contains <LI> + + + + + + + + + <TFoot> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <TFoot> contains <LBody> + + + + + + + + + <TFoot> shall not contain <BibEntry> + kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + + <TFoot> contains <BibEntry> + + + + + + + + + <TFoot> shall not contain <Table> + kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + + <TFoot> contains <Table> + + + + + + + + + <TFoot> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <TFoot> contains <TH> + + + + + + + + + <TFoot> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <TFoot> contains <TD> + + + + + + + + + <TFoot> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <TFoot> contains <THead> + + + + + + + + + <TFoot> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <TFoot> contains <TBody> + + + + + + + + + <TFoot> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <TFoot> contains <TFoot> + + + + + + + + + <TFoot> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <TFoot> contains <Caption> + + + + + + + + + <TFoot> shall not contain <Figure> + kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + + <TFoot> contains <Figure> + + + + + + + + + <TFoot> shall not contain <Formula> + kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + + <TFoot> contains <Formula> + + + + + + + + + <TFoot> shall not contain content item + hasContentItems == false + + <TFoot> contains content item(s) + + + + + + + + + <Caption> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Caption> contains <Document> + + + + + + + + + <Caption> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Caption> contains <TOC> + + + + + + + + + <Caption> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Caption> contains <TOCI> + + + + + + + + + <Caption> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Caption> contains more than one <H> + + + + + + + + + <Caption> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Caption> contains <Title> + + + + + + + + + <Caption> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Caption> contains <RB> + + + + + + + + + <Caption> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Caption> contains <RT> + + + + + + + + + <Caption> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Caption> contains <RP> + + + + + + + + + <Caption> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Caption> contains <WT> + + + + + + + + + <Caption> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Caption> contains <WP> + + + + + + + + + <Caption> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Caption> contains <LI> + + + + + + + + + <Caption> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Caption> contains <LBody> + + + + + + + + + <Caption> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Caption> contains <TR> + + + + + + + + + <Caption> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Caption> contains <TH> + + + + + + + + + <Caption> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Caption> contains <TD> + + + + + + + + + <Caption> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Caption> contains <THead> + + + + + + + + + <Caption> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Caption> contains <TBody> + + + + + + + + + <Caption> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Caption> contains <TFoot> + + + + + + + + + <Caption> shall not contain <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + + <Caption> contains <Caption> + + + + + + + + + <Figure> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Figure> contains <Document> + + + + + + + + + <Figure> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Figure> contains <DocumentFragment> + + + + + + + + + <Figure> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Figure> contains <TOC> + + + + + + + + + <Figure> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Figure> contains <TOCI> + + + + + + + + + <Figure> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Figure> contains more than one <H> + + + + + + + + + <Figure> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Figure> contains <Title> + + + + + + + + + <Figure> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Figure> contains <RB> + + + + + + + + + <Figure> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Figure> contains <RT> + + + + + + + + + <Figure> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Figure> contains <RP> + + + + + + + + + <Figure> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Figure> contains <WT> + + + + + + + + + <Figure> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Figure> contains <WP> + + + + + + + + + <Figure> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Figure> contains <LI> + + + + + + + + + <Figure> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Figure> contains <LBody> + + + + + + + + + <Figure> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Figure> contains <TR> + + + + + + + + + <Figure> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Figure> contains <TH> + + + + + + + + + <Figure> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Figure> contains <TD> + + + + + + + + + <Figure> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Figure> contains <THead> + + + + + + + + + <Figure> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Figure> contains <TBody> + + + + + + + + + <Figure> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Figure> contains <TFoot> + + + + + + + + + <Figure> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Figure> contains more than one <Caption> + + + + + + + + + <Formula> shall not contain <Document> + kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + + <Formula> contains <Document> + + + + + + + + + <Formula> shall not contain <DocumentFragment> + kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + + <Formula> contains <DocumentFragment> + + + + + + + + + <Formula> shall not contain <Art> + kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + + <Formula> contains <Art> + + + + + + + + + <Formula> shall not contain <Sect> + kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + + <Formula> contains <Sect> + + + + + + + + + <Formula> shall not contain <TOC> + kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + + <Formula> contains <TOC> + + + + + + + + + <Formula> shall not contain <TOCI> + kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + + <Formula> contains <TOCI> + + + + + + + + + <Formula> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Formula> contains more than one <H> + + + + + + + + + <Formula> shall not contain <Title> + kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + + <Formula> contains <Title> + + + + + + + + + <Formula> shall not contain <RB> + kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + + <Formula> contains <RB> + + + + + + + + + <Formula> shall not contain <RT> + kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + + <Formula> contains <RT> + + + + + + + + + <Formula> shall not contain <RP> + kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + + <Formula> contains <RP> + + + + + + + + + <Formula> shall not contain <WT> + kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + + <Formula> contains <WT> + + + + + + + + + <Formula> shall not contain <WP> + kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + + <Formula> contains <WP> + + + + + + + + + <Formula> shall not contain <LI> + kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + + <Formula> contains <LI> + + + + + + + + + <Formula> shall not contain <LBody> + kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + + <Formula> contains <LBody> + + + + + + + + + <Formula> shall not contain <TR> + kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + + <Formula> contains <TR> + + + + + + + + + <Formula> shall not contain <TH> + kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + + <Formula> contains <TH> + + + + + + + + + <Formula> shall not contain <TD> + kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + + <Formula> contains <TD> + + + + + + + + + <Formula> shall not contain <THead> + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + + <Formula> contains <THead> + + + + + + + + + <Formula> shall not contain <TBody> + kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + + <Formula> contains <TBody> + + + + + + + + + <Formula> shall not contain <TFoot> + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + + <Formula> contains <TFoot> + + + + + + + + + <Formula> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Formula> contains more than one <Caption> + + + + + + + + + <Artifact> shall contain at most one <H> + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + <Artifact> contains more than one <H> + + + + + + + + + <Artifact> shall contain at most one <Caption> + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 + + <Artifact> contains more than one <Caption> + + + + + + + + + + false + containsConfigs + + +
From 2a06e8b44a6f9e5d5743fe65574f43d9f863da4e Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 6 Dec 2023 15:15:18 +0300 Subject: [PATCH 499/557] Add individual WCAG profiles --- PDF_UA/WCAG-21-Complete.xml | 2624 ++++++++--------- PDF_UA/WCAG-21.xml | 77 +- .../verapdf-profile-1-3-1-t01.xml | 23 + .../verapdf-profile-1-3-1-t02.xml | 23 + .../verapdf-profile-1-3-1-t03.xml | 21 + .../verapdf-profile-1-3-1-t04.xml | 21 + .../verapdf-profile-1-3-4-t01.xml | 8 +- .../verapdf-profile-1-4-10-t01.xml | 23 + .../verapdf-profile-1-4-3-t01.xml | 9 +- .../verapdf-profile-1-4-4-t01.xml | 25 + .../verapdf-profile-1-4-8-t01.xml | 42 + .../verapdf-profile-2-4-9-t01.xml | 25 + .../verapdf-profile-4-1-1-t01.xml | 21 + .../verapdf-profile-4-1-1-t02.xml | 21 + .../verapdf-profile-4-1-1-t03.xml | 25 + .../verapdf-profile-4-1-2-t01.xml | 12 +- .../verapdf-profile-4-1-2-t02.xml | 12 +- ...-t06.xml => verapdf-profile-4-1-2-t04.xml} | 14 +- ...-t03.xml => verapdf-profile-4-1-2-t05.xml} | 14 +- .../verapdf-profile-4-1-2-t08.xml | 19 +- .../verapdf-profile-4-1-2-t09.xml | 19 +- .../verapdf-profile-4-1-2-t10.xml | 12 +- .../verapdf-profile-4-1-2-t11.xml | 17 +- ...-t07.xml => verapdf-profile-4-1-2-t12.xml} | 14 +- .../verapdf-profile-4-1-2-t13.xml | 24 + .../verapdf-profile-4-1-2-t14.xml | 24 + .../verapdf-profile-4-1-2-t15.xml | 24 + .../verapdf-profile-4-1-2-t16.xml | 24 + .../verapdf-profile-4-1-2-t17.xml | 24 + .../verapdf-profile-4-1-2-t18.xml | 24 + .../verapdf-profile-4-1-2-t19.xml | 24 + .../verapdf-profile-4-1-2-t20.xml | 24 + .../verapdf-profile-4-1-2-t21.xml | 26 + .../verapdf-profile-4-1-2-t22.xml | 27 + .../verapdf-profile-4-1-2-t23.xml | 27 + .../verapdf-profile-4-1-2-t25.xml | 27 + .../verapdf-profile-4-1-2-t26.xml | 27 + .../verapdf-profile-4-1-2-t27.xml | 24 + .../verapdf-profile-4-1-2-t28.xml | 25 + .../verapdf-profile-4-1-2-t29.xml | 25 + .../verapdf-profile-4-1-2-t31.xml | 25 + .../verapdf-profile-4-1-2-t32.xml | 25 + .../verapdf-profile-4-1-2-t34.xml | 25 + .../verapdf-profile-4-1-2-t35.xml | 25 + .../verapdf-profile-4-1-2-t36.xml | 25 + .../verapdf-profile-4-1-2-t37.xml | 25 + .../verapdf-profile-4-1-2-t38.xml | 25 + .../verapdf-profile-4-1-2-t39.xml | 25 + .../verapdf-profile-4-1-2-t40.xml | 25 + .../verapdf-profile-4-1-2-t41.xml | 25 + .../verapdf-profile-4-1-2-t42.xml | 25 + .../verapdf-profile-4-1-2-t43.xml | 25 + .../verapdf-profile-4-1-2-t44.xml | 25 + .../verapdf-profile-4-1-2-t45.xml | 25 + .../verapdf-profile-4-1-2-t46.xml | 25 + .../verapdf-profile-4-1-2-t47.xml | 28 + .../verapdf-profile-4-1-2-t48.xml | 25 + .../verapdf-profile-4-1-2-t49.xml | 25 + .../verapdf-profile-4-1-2-t50.xml | 27 + .../verapdf-profile-4-1-2-t51.xml | 21 + .../verapdf-profile-4-1-2-t52.xml | 21 + .../verapdf-profile-4-1-2-t53.xml | 21 + .../verapdf-profile-4-1-2-t54.xml | 21 + .../verapdf-profile-4-1-2-t55.xml | 22 + 64 files changed, 2661 insertions(+), 1446 deletions(-) create mode 100644 PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml create mode 100644 PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml create mode 100644 PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml create mode 100644 PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml create mode 100644 PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml create mode 100644 PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml create mode 100644 PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml create mode 100644 PDF_UA/WCAG/2.1/2. Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml rename PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/{verapdf-profile-4-1-2-t06.xml => verapdf-profile-4-1-2-t04.xml} (59%) rename PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/{verapdf-profile-4-1-2-t03.xml => verapdf-profile-4-1-2-t05.xml} (59%) rename PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/{verapdf-profile-4-1-2-t07.xml => verapdf-profile-4-1-2-t12.xml} (58%) create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml create mode 100644 PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-21-Complete.xml index 6faa5fc4..c3ecd45a 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-21-Complete.xml @@ -6,2057 +6,2057 @@
- - - Text should not contain repeated non space characters - isNonSpace == false || numberOfRepeatedCharacters < 5 + + + Content marked as Artifact should not present inside tagged content + tag != 'Artifact' || (parentStructureTag == null || isArtifact == true) - Text contains %1 repeated non space characters + Content marked as Artifact is present inside tagged content (tag %1) - numberOfRepeatedCharacters + parentStructureTag - - - Text should not contain repeated space characters - isNonSpace == true || numberOfRepeatedCharacters < 3 + + + Tagged content should not present inside content marked as Artifact + (parentStructureTag == null || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 - Text contains %1 repeated space characters + Tagged content (tag %1) is present inside content marked as Artifact - numberOfRepeatedCharacters + parentStructureTag - - - Underlined text - isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 + + + Content shall be marked as Artifact or tagged as real content + parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 - Underlined text is detected + Content is neither marked as Artifact nor tagged as real content - - - If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element - hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) + Suspects != true - Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element + Suspects entry has a value of true - + + + - - - Pages shall have the same orientation - orientation == 'Square' || gMostCommonPageOrientation == orientation + + + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type + circularMappingExist == true - Page %1 has different orientation + Non-standard structure type %1 is not mapped to a standard type - pageNumber + 1 + valueS - + + + - - - The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 - textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + + A circular mapping shall not exist + circularMappingExist != true - contrastRatio = %1 + A circular mapping exists for %1 structure type - contrastRatio + valueS - - - Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality - textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped + isRemappedStandardType == false - textSize = %1 + Standard type %1 is remapped - textSize + valueS - + + + - - - Document should not contain illegible font - fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 + metadata_size == 1 - Document contains illegible font + The document catalog dictionary doesn't contain metadata key - + + + - - - Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page - page != lastPage || hasBBox == true + + + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document + dc_title != null && dc_title != '' - "Figure" structure element on a single page with no bounding box + Metadata stream does not contain dc:title - - - + - - - Links shall contain an alternate description via their Contents or Alt keys or in the text value - (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false) + + + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true + DisplayDocTitle == true - A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value - + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2) + + ViewerPreferences + DisplayDocTitle + - - - + - - - Table shouldn't have merged cells - ColSpan == 1 && RowSpan == 1 + + + 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-1:2008, 14.7 + StructTreeRoot_size == 1 - Table has merged cells + StructTreeRoot entry is not present in the document catalog - + + + - - - Table shouldn't have merged cells - ColSpan == 1 && RowSpan == 1 + + + Natural language in the Outline entries shall be determined + gSizeCatalogLang != 0 - Table has merged cells + Natural language in the Outline entries cannot be determined - - - Table shouldn't have merged cells - colSpan == 1 && rowSpan == 1 + + + Table element may contain only TR, THead, TBody, TFoot and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - Table has merged cells + Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption - + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() structureID - + + + - - - Incorrect use of a paragraph - correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' + + + TR element should be contained in Table, THead, TBody or TFoot element + /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) - score = %1, correct type = %2 + TR element contained in %1 instead of Table, THead, TBody or TFoot element - correctSemanticScore - correctType + parentStandardType + + structureID - + + + - - - Incorrect use of a span - correctSemanticScore >= 0.75 || correctType == null + + + THead element should be contained in Table element + parentStandardType == 'Table' - score = %1, correct type = %2 + THead element contained in %1 instead of Table element - correctSemanticScore - correctType + parentStandardType + + structureID - + + + - - - Incorrect use of a heading - correctSemanticScore >= 0.75 || correctType == null + + + TBody element should be contained in Table element + parentStandardType == 'Table' - score = %1, correct type = %2 + TBody element contained in %1 instead of Table element - correctSemanticScore - correctType + parentStandardType + + structureID - + + + - - - Incorrect use of a numbered heading - correctSemanticScore >= 0.75 || correctType == null + + + TFoot element should be contained in Table element + parentStandardType == 'Table' - score = %1, correct type = %2 + TFoot element contained in %1 instead of Table element - correctSemanticScore - correctType + parentStandardType + + structureID - + + + - - - Incorrect table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + + + TH element should be contained in TR element + parentStandardType == 'TR' - score = %1, correct type = %2, structure id = %3 + TH element contained in %1 instead of TR element - correctSemanticScore - correctType + parentStandardType + structureID - + + + - - - Missing table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + + + TD element should be contained in TR element + parentStandardType == 'TR' - score = %1, correct type = %2, structure id = %3 + TD element contained in %1 instead of TR element - correctSemanticScore - correctType + parentStandardType + structureID - + + + - - - This structure element should be a heading instead of a paragraph - correctType != 'H' && correctType != 'Hn' + + + TR element may contain only TH and TD elements + /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - score = %1, correct type = %2 + TR element contains %1 element(s) instead of TH or TD - correctSemanticScore - correctType + kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() + + structureID - + + + - - - This structure element should be a span instead of a paragraph - correctType != 'Span' + + + Table element should contain zero or one THead kid + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 - score = %1, correct type = %2 + Table element contains more than one THead kid - correctSemanticScore - correctType + + + structureID - + + + - - - This structure element should be a paragraph instead of a span - correctType != 'P' + + + Table element should contain zero or one TFoot kid + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 - score = %1, correct type = %2 + Table element contains more than one TFoot kid - correctSemanticScore - correctType + + + structureID - + + + - - - This structure element should be a heading instead of a span - correctType != 'H' && correctType != 'Hn' + + + If Table element contains TFoot kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - score = %1, correct type = %2 + Table element contains TFoot kid, but not contains TBody kids - correctSemanticScore - correctType + + + structureID - + + + - - - This structure element should be a paragraph instead of a heading - correctType != 'P' + + + If Table element contains THead kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - score = %1, correct type = %2 + Table element contains THead kid, but not contains TBody kids - correctSemanticScore - correctType + + + structureID - + + + - - - This structure element should be a paragraph instead of a numbered heading - correctType != 'P' + + + Table cell shall not have intersection with other cells + hasIntersection != true - score = %1, correct type = %2 - - correctSemanticScore - correctType - + Table cell has intersection with other cells + - + + + - - - Redundant paragraph - correctType != null + + + Table element may contain a Caption element as its first or last kid + kidsStandardTypes.indexOf('&Caption&') < 0 - score = %1, correct type = %2 + Table element contains Caption as its %1 child instead of first or last one - correctSemanticScore - correctType + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + structureID - + + + - - - Redundant span - correctType != null + + + LI element should be contained in L element + parentStandardType == 'L' - score = %1, correct type = %2 + LI element contained in %1 instead of L element - correctSemanticScore - correctType + parentStandardType + + structureID - + + + - - - Redundant heading - correctType != null + + + LBody element should be contained in LI element + parentStandardType == 'LI' - score = %1, correct type = %2 + LBody element contained in %1 instead of LI element - correctSemanticScore - correctType + parentStandardType + + structureID - + + + - - - Redundant numbered heading - correctType != null + + + L element may contain only L, LI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - score = %1, correct type = %2 + L element contains %1 element(s) instead of L, LI or Caption - correctSemanticScore - correctType + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').toString() + + structureID - + + + - - - This structure element should be a caption instead of a paragraph - correctType != 'Caption' + + + LI element may contain only Lbl and LBody elements + /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' - score = %1, correct type = %2 + LI element contains %1 element(s) instead of Lbl or LBody - correctSemanticScore - correctType + kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() + + structureID - + + + - - - The structure type and attributes of list elements shall be semantically appropriate - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) + + + Natural language for text in ActualText attribute shall be determined + ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 - score = %1, correct type = %2, structure id = %3 - - correctSemanticScore - correctType - structureID - + Natural language for text in ActualText attribute cannot be determined + - - - The structure type and attributes of a list shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + + Natural language for text in Alt attribute shall be determined + Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 - score = %1, correct type = %2 - - correctSemanticScore - correctType - + Natural language for text in Alt attribute cannot be determined + - - - The structure type and attributes of a list item shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + + Natural language for text in E attribute shall be determined + E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 - score = %1, correct type = %2 - - correctSemanticScore - correctType - + Natural language for text in E attribute cannot be determined + - - - The structure type and attributes of a list body shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + + Natural language in the Contents entry for annotations shall be determined + Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 - score = %1, correct type = %2 - - correctSemanticScore - correctType - + Natural language in the Contents entry for annotations cannot be determined + - - - A table element is incorrectly tagged as a list element or a list has the wrong numbering - hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') + + + Natural language in the TU key for form fields shall be determined + TU == null || Lang_size != 0 || gSizeCatalogLang != 0 - score = %1, correct type = %2 - - correctSemanticScore - correctType - + Natural language in the TU key for form fields cannot be determined + - - - This structure element should be a part or several different paragraphs instead of a paragraph - correctType != 'Part' || correctSemanticScore < 0.75 + + + TOCI element should be contained in TOC element + parentStandardType == 'TOC' - score = %1, correct type = %2 + TOCI element contained in %1 instead of TOC element - correctSemanticScore - correctType + parentStandardType + + structureID - + + + - - - The structure type and attributes of a TOCI shall be semantically appropriate - correctType != 'TOCI' || standardType == 'TOCI' + + + TOC element may contain only TOC, TOCI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' - score = %1, correct type = %2, structure id = %3 + TOC element contains %1 element(s) instead of TOC, TOCI or Caption - correctSemanticScore - correctType + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' + && elem != 'Caption').toString() + structureID - + + + - - - TOCI shall contain one or more text lines - errorCodes.split(',').filter(elem => elem == 1000).length == 0 + + + TOC element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 - TOCI doesn't have a text + TOC element contains Caption as its %1 child instead of first one - + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 structureID - + + + - - - TOCI page label shall match the destination page - errorCodes.split(',').filter(elem => elem == 1002).length == 0 + + + 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages + /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + Value %1 of the Lang entry is not a Language-Tag - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] - - structureID + unicodeValue - + + + + - - - TOCI shall have a right alignment that matches a right alignment of other TOCIs - errorCodes.split(',').filter(elem => elem == 1003).length == 0 + + + Natural language for text in ActualText attribute in Span Marked Content shall be determined + tag != 'Span' || ActualText == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 - TOCI has a bad right alignment - - - - structureID - + Natural language for text in ActualText attribute in Span Marked Content cannot be determined + - - - This list and neighbor list(s) should be tagged as one list - errorCodes.split(',').filter(elem => elem == 1200).length == 0 + + + Natural language for text in Alt attribute in Span Marked Content shall be determined + tag != 'Span' || Alt == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 - This list and neighbor list(s) should be tagged as one list - - - - structureID - + Natural language for text in Alt attribute in Span Marked Content cannot be determined + - - - This TOC and neighbor TOC(s) should be tagged as one TOC - errorCodes.split(',').filter(elem => elem == 1006).length == 0 + + + Natural language for text in E attribute in Span Marked Content shall be determined + tag != 'Span' || E == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 - This TOC and neighbor TOC(s) should be tagged as one TOC - - - - structureID - + Natural language for text in E attribute in Span Marked Content cannot be determined + - - - The number of rows of this table does not match the number of rows of the visual representation of this table - errorCodes.split(',').filter(elem => elem == 1104).length == 0 + + + Natural language for document metadata shall be determined + xDefault == false || gSizeCatalogLang != 0 - The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1] - structureID - + Natural language for document metadata cannot be determined + - - - The number of columns of this table does not match the number of columns of the visual representation of this table - errorCodes.split(',').filter(elem => elem == 1105).length == 0 + + + Natural language for text in page content shall be determined + gSizeCatalogLang != 0 || Lang != null - The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1] - structureID - + Natural language for text in page content cannot be determined + - - - The row span of this table cell does not match the row span of the visual representation of this table cell - errorCodes.split(',').filter(elem => elem == 1106).length == 0 + + + THead element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell + THead element contains %1 element(s) instead of TR - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1] + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + structureID - + + + - - - The column span of this table cell does not match the column span of the visual representation of this table cell - errorCodes.split(',').filter(elem => elem == 1107).length == 0 + + + TBody element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell + TBody element contains %1 element(s) instead of TR - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1] + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + structureID - + + + - - - This content should be tagged as a list item - false + + + TFoot element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' - This content should be tagged as a list item + TFoot element contains %1 element(s) instead of TR - + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() structureID - + + + - - - This cell is below than some cells in the next row - errorCodes.split(',').filter(elem => elem == 1100).length == 0 + + + Table element may contain only one Caption element + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 - This cell is below than some cells in the next row + Table element contains %1 Caption elements instead of one - + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length structureID - + + + - - - This cell is above than some cells in the previous row - errorCodes.split(',').filter(elem => elem == 1101).length == 0 + + + L element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 - This cell is above than some cells in the previous row + L element contains Caption as its %1 child instead of first one - + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 structureID - + + + - - - This cell is to the right of some cells in the next column - errorCodes.split(',').filter(elem => elem == 1102).length == 0 + + + Table columns shall have the same number of rows (taking into account row spans) + numberOfColumnWithWrongRowSpan == null - This cell is to the right of some cells in the next column + Table columns 1 and %1 span different number of rows - - - structureID + numberOfColumnWithWrongRowSpan + 1 - + + + - - - This cell is to the left of some cells in the previous column - errorCodes.split(',').filter(elem => elem == 1103).length == 0 + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null - This cell is to the left of some cells in the previous column + Table rows 1 and %1 span different number of columns - - - structureID + numberOfRowWithWrongColumnSpan + 1 - + + + - - - This structure element should be a table cell instead of a table header - correctType != 'TD' + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null - score = %1, correct type = %2, id = %3 + Table rows 1 and %1 span different number of columns (%2 and %3 respectively) - correctSemanticScore - correctType - structureID + numberOfRowWithWrongColumnSpan + 1 + columnSpan + wrongColumnSpan - + + + - - - TOCI text should be presented in the document - errorCodes.split(',').filter(elem => elem == 1007).length == 0 + + + Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 + (Alt != null && Alt != '') || ActualText != null - TOCI text is not found in the document - - - - structureID - + Figure structure element neither has an alternate description nor a replacement text + - + + + - - - TOCI text should be presented on a destination page - errorCodes.split(',').filter(elem => elem == 1008).length == 0 + + + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it + hasCorrectNestingLevel == true - TOCI text is not found on a destination page %wrongDestinationPage%. Possible destination page number(s): %possiblePageNumbers% + Heading level %1 is skipped in a descending sequence of header levels - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1008)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1008)].split(';')[1] - structureID + nestingLevel - 1 - + + + - - - TOCI should have a destination - errorCodes.split(',').filter(elem => elem == 1009).length == 0 + + + Each node in the tag tree shall contain at most one child H tag + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 - TOCI doesn't have a destination. Possible destination page number(s): %1 - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] - - structureID - + A node contains more than one H tag + - - - TOCI should have a correct page label - errorCodes.split(',').filter(elem => elem == 1010).length == 0 + + + All documents shall be either strongly or weakly structured, but not both + usesHn == false - TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] - - structureID - + Document uses both H and H# tags + - - - TOCI should have a correct numbering - errorCodes.split(',').filter(elem => elem == 1011).length == 0 + + + All documents shall be either strongly or weakly structured, but not both + usesH == false - TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering% - - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1011)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1011)].split(';')[1] - structureID - + Document uses both H and H# tags + - - - List should contain list items - errorCodes.split(',').filter(elem => elem == 1201).length == 0 + + + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute + hasConnectedHeader != false || unknownHeaders != '' - List contains only one child - list + TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically - + + + - - - The structure type and attributes of a list item shall be semantically appropriate - errorCodes.split(',').filter(elem => elem == 1202).length == 0 + + + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute + hasConnectedHeader != false || unknownHeaders == '' - This list item should be tagged as several different list items - + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically + + unknownHeaders + - + + + - - - This structure element should be a note instead of a span - correctType != 'Note' + + + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes + (Alt != null && Alt != '') || ActualText != null - This structure element should be a note instead of a span + Formula structure element neither has an alternate description nor a replacement text - + + + - - - This structure element should be a note instead of a paragraph - correctType != 'Note' + + + Note tag shall have ID entry + noteID != null && noteID != '' - This structure element should be a note instead of a paragraph + ID key of the Note tag is not present - - - The structure type and attributes of a heading shall be semantically appropriate - errorCodes.split(',').filter(elem => elem == 1300).length == 0 - - This node is the single child with content. One of its ancestor nodes should be tagged as heading instead of this one - - - - - - - Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || (parentStructureTag == null || isArtifact == true) + + + Each Note tag shall have unique ID key + hasDuplicateNoteID == false - Content marked as Artifact is present inside tagged content (tag %1) + ID key %1 of the Note tag is non-unique - parentStructureTag + noteID - - - Tagged content should not present inside content marked as Artifact - (parentStructureTag == null || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key + Name != null && Name.length() > 0 - Tagged content (tag %1) is present inside content marked as Artifact - - parentStructureTag - + Missing or empty Name entry of the optional content configuration dictionary + - - - Content shall be marked as Artifact or tagged as real content - parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + + + The AS key shall not appear in any optional content configuration dictionary + AS == null - Content is neither marked as Artifact nor tagged as real content + AS key is present in the optional content configuration dictionary - - - Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) - Suspects != true + + + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys + containsEF == false || (F != null && F != '' && UF != null && UF != '') - Suspects entry has a value of true + The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2) + + F + UF + + + + + + + Dynamic XFA forms shall not be used + dynamicRender != 'required' + + Dynamic XFA forms is present - - - + - - - All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type - circularMappingExist == true + + + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true + P != null && (P & 512) == 512 - Non-standard structure type %1 is not mapped to a standard type + The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2) - valueS + P + P != null ? (P & 512) >> 9 : null - + - - - A circular mapping shall not exist - circularMappingExist != true + + + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' - A circular mapping exists for %1 structure type + %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot - valueS + Subtype + structParentType + structParentStandardType - - - Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped - isRemappedStandardType == false + + + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') - Standard type %1 is remapped + %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element - valueS + Subtype - - - + - - - The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 - metadata_size == 1 + + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) + isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') - The document catalog dictionary doesn't contain metadata key + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) - - - + - - - The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document - dc_title != null && dc_title != '' + + + Annotations of subtype TrapNet shall not be permitted + isOutsideCropBox == true || (F & 2) == 2 - Metadata stream does not contain dc:title + An annotation of subtype TrapNet exists - - - The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true - DisplayDocTitle == true + + + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S + annots_size == 0 || Tabs == 'S' - ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2) + A page with annotation(s) contains Tabs key with value %1 instead of S - ViewerPreferences - DisplayDocTitle + Tabs - - - 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-1:2008, 14.7 - StructTreeRoot_size == 1 + + + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 + structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 - StructTreeRoot entry is not present in the document catalog - + A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form + + structParentType + structParentStandardType + - + - - - Natural language in the Outline entries shall be determined - gSizeCatalogLang != 0 + + + If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340 + roleAttribute != null || hasOneInteractiveChild == true - Natural language in the Outline entries cannot be determined + The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation - + + + - - - Table element may contain only TR, THead, TBody, TFoot and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element + structParentStandardType == 'Link' || structParentStandardType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2 - Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption + A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference - kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' - && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() - - structureID + structParentType + structParentStandardType - + - - - TR element should be contained in Table, THead, TBody or TFoot element - /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) + + + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required + CT != null - TR element contained in %1 instead of Table, THead, TBody or TFoot element - - parentStandardType - - structureID - + CT key is missing from the media clip data dictionary + - + - - - THead element should be contained in Table element - parentStandardType == 'Table' + + + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required + hasCorrectAlt == true - THead element contained in %1 instead of Table element + Alt key (value %1) is missing from the media clip data dictionary or has incorrect value - parentStandardType - - structureID + Alt - + - - - TBody element should be contained in Table element - parentStandardType == 'Table' + + + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3 + (structParentType == null || isArtifact == true) || isOutsideCropBox == true || (F & 2) == 2 - TBody element contained in %1 instead of Table element - - parentStandardType - - structureID - + A PrinterMark annotation is included in logical structure + - + - - - TFoot element should be contained in Table element - parentStandardType == 'Table' - - TFoot element contained in %1 instead of Table element - - parentStandardType - - structureID - + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + - - - + - - - TH element should be contained in TR element - parentStandardType == 'TR' + + + The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2 + isUniqueSemanticParent == true - TH element contained in %1 instead of TR element - - parentStandardType - - structureID - + Form XObject contains MCIDs and is referenced more than once + - + - - - TD element should be contained in TR element - parentStandardType == 'TR' + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) - TD element contained in %1 instead of TR element + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) - parentStandardType - - structureID + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement - - - + - - - TR element may contain only TH and TD elements - /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 - TR element contains %1 element(s) instead of TH or TD - - kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() - - structureID - + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + - + - - - Table element should contain zero or one THead kid - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 + + + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 - Table element contains more than one THead kid + A non-standard CMap %1 is not embedded - - - structureID + CMapName - + - - - Table element should contain zero or one TFoot kid - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 + + + 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 + WMode == dictWMode - Table element contains more than one TFoot kid + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical - - - structureID + WMode + dictWMode - - - + - - - If Table element contains TFoot kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" - Table element contains TFoot kid, but not contains TBody kids + A CMap references another non-standard CMap %1 - - - structureID + CMapName - + - - - If Table element contains THead kid, Table element should contain one or more TBody kids - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 - Table element contains THead kid, but not contains TBody kids - - - - structureID - + The font program is not embedded + - + - - - Table cell shall not have intersection with other cells - hasIntersection != true + + + 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 according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true - Table cell has intersection with other cells + Not all glyphs referenced for rendering are present in the embedded font program - + + - - - Table element may contain a Caption element as its first or last kid - kidsStandardTypes.indexOf('&Caption&') < 0 + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true - Table element contains Caption as its %1 child instead of first or last one - - kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - - structureID - + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + - - - + - - - LI element should be contained in L element - parentStandardType == 'L' + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true - LI element contained in %1 instead of L element - - parentStandardType - - structureID - + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset + - - - + - - - LBody element should be contained in LI element - parentStandardType == 'LI' + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 - LBody element contained in %1 instead of LI element + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) - parentStandardType - - structureID + widthFromFontProgram + widthFromDictionary - - - + - - - L element may contain only L, LI and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) - L element contains %1 element(s) instead of L, LI or Caption - - kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' - && elem != 'Caption').toString() - - structureID - + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + - - - + - - - LI element may contain only Lbl and LBody elements - /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + + 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) - LI element contains %1 element(s) instead of Lbl or LBody + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) - kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() - - structureID + Encoding + containsDifferences + differencesAreUnicodeCompliant - - - + - - - Natural language for text in ActualText attribute shall be determined - ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null - Natural language for text in ActualText attribute cannot be determined + A symbolic TrueType font specifies an Encoding entry in its dictionary - - - Natural language for text in Alt attribute shall be determined - Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding + isSymbolic == false || nrCmaps == 1 || cmap30Present == true - Natural language for text in Alt attribute cannot be determined - + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + - - - Natural language for text in E attribute shall be determined - E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + + 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 ISO 14289-1, 7.21.7 + toUnicode != null - Natural language for text in E attribute cannot be determined + The glyph can not be mapped to Unicode - + + + - - - Natural language in the Contents entry for annotations shall be determined - Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - Natural language in the Contents entry for annotations cannot be determined + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE - - - Natural language in the TU key for form fields shall be determined - TU == null || Lang_size != 0 || gSizeCatalogLang != 0 + + + A PDF/UA compliant document 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 + name != ".notdef" - Natural language in the TU key for form fields cannot be determined + The document contains a reference to the .notdef glyph - - - TOCI element should be contained in TOC element - parentStandardType == 'TOC' + + + Text should not contain repeated non space characters + isNonSpace == false || numberOfRepeatedCharacters < 5 - TOCI element contained in %1 instead of TOC element + Text contains %1 repeated non space characters - parentStandardType - - structureID + numberOfRepeatedCharacters - - - + - - - TOC element may contain only TOC, TOCI and Caption elements - kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + + Text should not contain repeated space characters + isNonSpace == true || numberOfRepeatedCharacters < 3 - TOC element contains %1 element(s) instead of TOC, TOCI or Caption + Text contains %1 repeated space characters - kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' - && elem != 'Caption').toString() - - structureID + numberOfRepeatedCharacters - - - + - - - TOC element may contain a Caption element only as its first kid - kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + + Underlined text + isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 - TOC element contains Caption as its %1 child instead of first one + Underlined text is detected + + + + + + + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element + hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element + + + + + + + Pages shall have the same orientation + orientation == 'Square' || gMostCommonPageOrientation == orientation + + Page %1 has different orientation - kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - - structureID + pageNumber + 1 - - - + - - - 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages - /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) + + + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 - Value %1 of the Lang entry is not a Language-Tag + contrastRatio = %1 - unicodeValue + contrastRatio - - - - + - - - Natural language for text in ActualText attribute in Span Marked Content shall be determined - tag != 'Span' || ActualText == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 + + + Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality + textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 - Natural language for text in ActualText attribute in Span Marked Content cannot be determined - + textSize = %1 + + textSize + - - - Natural language for text in Alt attribute in Span Marked Content shall be determined - tag != 'Span' || Alt == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 + + + Document should not contain illegible font + fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) - Natural language for text in Alt attribute in Span Marked Content cannot be determined + Document contains illegible font - - - Natural language for text in E attribute in Span Marked Content shall be determined - tag != 'Span' || E == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 + + + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page + page != lastPage || hasBBox == true - Natural language for text in E attribute in Span Marked Content cannot be determined + "Figure" structure element on a single page with no bounding box - + + + - - - Natural language for document metadata shall be determined - xDefault == false || gSizeCatalogLang != 0 + + + Links shall contain an alternate description via their Contents or Alt keys or in the text value + (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false) - Natural language for document metadata cannot be determined + A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value + + + + + + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells - - - Natural language for text in page content shall be determined - gSizeCatalogLang != 0 || Lang != null + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 - Natural language for text in page content cannot be determined + Table has merged cells - - - THead element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + + Table shouldn't have merged cells + colSpan == 1 && rowSpan == 1 - THead element contains %1 element(s) instead of TR + Table has merged cells - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + structureID - - - + - - - TBody element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + + Incorrect use of a paragraph + correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' - TBody element contains %1 element(s) instead of TR + score = %1, correct type = %2 - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - - structureID + correctSemanticScore + correctType - - - + - - - TFoot element may contain only TR elements - kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + + Incorrect use of a span + correctSemanticScore >= 0.75 || correctType == null - TFoot element contains %1 element(s) instead of TR + score = %1, correct type = %2 - kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() - - structureID + correctSemanticScore + correctType - - - + - - - Table element may contain only one Caption element - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 + + + Incorrect use of a heading + correctSemanticScore >= 0.75 || correctType == null - Table element contains %1 Caption elements instead of one + score = %1, correct type = %2 - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length - - structureID + correctSemanticScore + correctType - - - + - - - L element may contain a Caption element only as its first kid - kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + + Incorrect use of a numbered heading + correctSemanticScore >= 0.75 || correctType == null - L element contains Caption as its %1 child instead of first one + score = %1, correct type = %2 - kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 - - structureID + correctSemanticScore + correctType - - - + - - - Table columns shall have the same number of rows (taking into account row spans) - numberOfColumnWithWrongRowSpan == null + + + Incorrect table element + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) - Table columns 1 and %1 span different number of rows + score = %1, correct type = %2, structure id = %3 - numberOfColumnWithWrongRowSpan + 1 + correctSemanticScore + correctType + structureID - - - + - - - Table rows shall have the same number of columns (taking into account column spans) - numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null + + + Missing table element + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) - Table rows 1 and %1 span different number of columns + score = %1, correct type = %2, structure id = %3 - numberOfRowWithWrongColumnSpan + 1 + correctSemanticScore + correctType + structureID - - - + - - - Table rows shall have the same number of columns (taking into account column spans) - numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null + + + This structure element should be a heading instead of a paragraph + correctType != 'H' && correctType != 'Hn' - Table rows 1 and %1 span different number of columns (%2 and %3 respectively) + score = %1, correct type = %2 - numberOfRowWithWrongColumnSpan + 1 - columnSpan - wrongColumnSpan + correctSemanticScore + correctType - - - - - - - Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 - (Alt != null && Alt != '') || ActualText != null - - Figure structure element neither has an alternate description nor a replacement text - - - - - + - - - For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it - hasCorrectNestingLevel == true + + + This structure element should be a span instead of a paragraph + correctType != 'Span' - Heading level %1 is skipped in a descending sequence of header levels + score = %1, correct type = %2 - nestingLevel - 1 + correctSemanticScore + correctType - - - - - - - Each node in the tag tree shall contain at most one child H tag - kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 - - A node contains more than one H tag - - - - - All documents shall be either strongly or weakly structured, but not both - usesHn == false + + + This structure element should be a paragraph instead of a span + correctType != 'P' - Document uses both H and H# tags - + score = %1, correct type = %2 + + correctSemanticScore + correctType + - - - All documents shall be either strongly or weakly structured, but not both - usesH == false + + + This structure element should be a heading instead of a span + correctType != 'H' && correctType != 'Hn' - Document uses both H and H# tags - + score = %1, correct type = %2 + + correctSemanticScore + correctType + - - - If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute - hasConnectedHeader != false || unknownHeaders != '' - - TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically - - - - - - - - - If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute - hasConnectedHeader != false || unknownHeaders == '' + + + This structure element should be a paragraph instead of a heading + correctType != 'P' - TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically + score = %1, correct type = %2 - unknownHeaders + correctSemanticScore + correctType - - - + - - - All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes - (Alt != null && Alt != '') || ActualText != null + + + This structure element should be a paragraph instead of a numbered heading + correctType != 'P' - Formula structure element neither has an alternate description nor a replacement text - + score = %1, correct type = %2 + + correctSemanticScore + correctType + - - - + - - - Note tag shall have ID entry - noteID != null && noteID != '' + + + Redundant paragraph + correctType != null - ID key of the Note tag is not present - + score = %1, correct type = %2 + + correctSemanticScore + correctType + - - - Each Note tag shall have unique ID key - hasDuplicateNoteID == false + + + Redundant span + correctType != null - ID key %1 of the Note tag is non-unique + score = %1, correct type = %2 - noteID + correctSemanticScore + correctType - - - Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key - Name != null && Name.length() > 0 + + + Redundant heading + correctType != null - Missing or empty Name entry of the optional content configuration dictionary - + score = %1, correct type = %2 + + correctSemanticScore + correctType + - - - The AS key shall not appear in any optional content configuration dictionary - AS == null + + + Redundant numbered heading + correctType != null - AS key is present in the optional content configuration dictionary - + score = %1, correct type = %2 + + correctSemanticScore + correctType + - - - The file specification dictionary for an embedded file shall contain the non-empty F and UF keys - containsEF == false || (F != null && F != '' && UF != null && UF != '') + + + This structure element should be a caption instead of a paragraph + correctType != 'Caption' - The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2) + score = %1, correct type = %2 - F - UF + correctSemanticScore + correctType - - - Dynamic XFA forms shall not be used - dynamicRender != 'required' + + + The structure type and attributes of list elements shall be semantically appropriate + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) - Dynamic XFA forms is present - + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + - - - - - An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true - P != null && (P & 512) == 512 + + + + + The structure type and attributes of a list shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2) + score = %1, correct type = %2 - P - P != null ? (P & 512) >> 9 : null + correctSemanticScore + correctType - - - + - - - An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' + + + The structure type and attributes of a list item shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot + score = %1, correct type = %2 - Subtype - structParentType - structParentStandardType + correctSemanticScore + correctType - - - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') + + + The structure type and attributes of a list body shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element + score = %1, correct type = %2 - Subtype + correctSemanticScore + correctType - - - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) - isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') + + + A table element is incorrectly tagged as a list element or a list has the wrong numbering + hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) - + score = %1, correct type = %2 + + correctSemanticScore + correctType + - - - Annotations of subtype TrapNet shall not be permitted - isOutsideCropBox == true || (F & 2) == 2 + + + This structure element should be a part or several different paragraphs instead of a paragraph + correctType != 'Part' || correctSemanticScore < 0.75 - An annotation of subtype TrapNet exists - + score = %1, correct type = %2 + + correctSemanticScore + correctType + - - - Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S - annots_size == 0 || Tabs == 'S' + + + The structure type and attributes of a TOCI shall be semantically appropriate + correctType != 'TOCI' || standardType == 'TOCI' - A page with annotation(s) contains Tabs key with value %1 instead of S + score = %1, correct type = %2, structure id = %3 - Tabs + correctSemanticScore + correctType + structureID - - - A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 - structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 + + + TOCI shall contain one or more text lines + errorCodes.split(',').filter(elem => elem == 1000).length == 0 - A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form + TOCI doesn't have a text - structParentType - structParentStandardType + + + structureID - - - + - - - If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340 - roleAttribute != null || hasOneInteractiveChild == true + + + TOCI page label shall match the destination page + errorCodes.split(',').filter(elem => elem == 1002).length == 0 - The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation - + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] + + structureID + - - - + - - - Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element - structParentStandardType == 'Link' || structParentStandardType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2 + + + TOCI shall have a right alignment that matches a right alignment of other TOCIs + errorCodes.split(',').filter(elem => elem == 1003).length == 0 - A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference + TOCI has a bad right alignment - structParentType - structParentStandardType + + + structureID - - - + - - - In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required - CT != null + + + This list and neighbor list(s) should be tagged as one list + errorCodes.split(',').filter(elem => elem == 1200).length == 0 - CT key is missing from the media clip data dictionary - + This list and neighbor list(s) should be tagged as one list + + + + structureID + - - - + - - - In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required - hasCorrectAlt == true + + + This TOC and neighbor TOC(s) should be tagged as one TOC + errorCodes.split(',').filter(elem => elem == 1006).length == 0 - Alt key (value %1) is missing from the media clip data dictionary or has incorrect value + This TOC and neighbor TOC(s) should be tagged as one TOC - Alt + + + structureID - - - + - - - PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3 - (structParentType == null || isArtifact == true) || isOutsideCropBox == true || (F & 2) == 2 + + + The number of rows of this table does not match the number of rows of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1104).length == 0 - A PrinterMark annotation is included in logical structure - + The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1] + structureID + - - - + - - - A conforming file shall not contain any reference XObjects - containsRef == false + + + The number of columns of this table does not match the number of columns of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1105).length == 0 - The document contains a reference XObject (Ref key in the form XObject dictionary) - + The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1] + structureID + - - - The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2 - isUniqueSemanticParent == true + + + The row span of this table cell does not match the row span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1106).length == 0 - Form XObject contains MCIDs and is referenced more than once - + The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1] + structureID + - - - + - - - 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap - cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + + The column span of this table cell does not match the column span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1107).length == 0 - CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell - CIDFontOrdering - CMapOrdering - CIDFontRegistry - CMapRegistry - CIDFontSupplement - CMapSupplement + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1] + structureID - - - ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 - Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + + + This content should be tagged as a list item + false - A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry - + This content should be tagged as a list item + + + + structureID + - - - + - - - All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 - 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" || embeddedFile_size == 1 + + + This cell is below than some cells in the next row + errorCodes.split(',').filter(elem => elem == 1100).length == 0 - A non-standard CMap %1 is not embedded + This cell is below than some cells in the next row - CMapName + + + structureID - - - + - - - 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 - WMode == dictWMode + + + This cell is above than some cells in the previous row + errorCodes.split(',').filter(elem => elem == 1101).length == 0 - WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + This cell is above than some cells in the previous row - WMode - dictWMode + + + structureID - - - A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 - 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" + + + This cell is to the right of some cells in the next column + errorCodes.split(',').filter(elem => elem == 1102).length == 0 - A CMap references another non-standard CMap %1 + This cell is to the right of some cells in the next column - CMapName + + + structureID - - - + - - - The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 - Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + + This cell is to the left of some cells in the previous column + errorCodes.split(',').filter(elem => elem == 1103).length == 0 - The font program is not embedded - + This cell is to the left of some cells in the previous column + + + + structureID + - - - + - - - 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 according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor - renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + + This structure element should be a table cell instead of a table header + correctType != 'TD' - Not all glyphs referenced for rendering are present in the embedded font program - + score = %1, correct type = %2, id = %3 + + correctSemanticScore + correctType + structureID + - - - - + - - - If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true + + + TOCI text should be presented in the document + errorCodes.split(',').filter(elem => elem == 1007).length == 0 - A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program - + TOCI text is not found in the document + + + + structureID + - - - If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not - fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true + + + TOCI text should be presented on a destination page + errorCodes.split(',').filter(elem => elem == 1008).length == 0 - A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset - + TOCI text is not found on a destination page %wrongDestinationPage%. Possible destination page number(s): %possiblePageNumbers% + + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[1] + structureID + - - - For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent - renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + + + TOCI should have a destination + errorCodes.split(',').filter(elem => elem == 1009).length == 0 - Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + TOCI doesn't have a destination. Possible destination page number(s): %1 - widthFromFontProgram - widthFromDictionary + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] + + structureID - - - For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out - isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) + + + TOCI should have a correct page label + errorCodes.split(',').filter(elem => elem == 1010).length == 0 - The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries - + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] + + structureID + - - - 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 - isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + + TOCI should have a correct numbering + errorCodes.split(',').filter(elem => elem == 1011).length == 0 - A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering% - Encoding - containsDifferences - differencesAreUnicodeCompliant + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[1] + structureID - - - Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary - isSymbolic == false || Encoding == null + + + List should contain list items + errorCodes.split(',').filter(elem => elem == 1201).length == 0 - A symbolic TrueType font specifies an Encoding entry in its dictionary + List contains only one child - list - - - The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding - isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + + The structure type and attributes of a list item shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1202).length == 0 - The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) - - nrCmaps - + This list item should be tagged as several different list items + - - - 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 ISO 14289-1, 7.21.7 - toUnicode != null + + + This structure element should be a note instead of a span + correctType != 'Note' - The glyph can not be mapped to Unicode + This structure element should be a note instead of a span - - - + - - - The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + + This structure element should be a note instead of a paragraph + correctType != 'Note' - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + This structure element should be a note instead of a paragraph - - - A PDF/UA compliant document 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 - name != ".notdef" + + + The structure type and attributes of a heading shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1300).length == 0 - The document contains a reference to the .notdef glyph + This node is the single child with content. One of its ancestor nodes should be tagged as heading instead of this one diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index dfb5c95a..7da0a579 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -64,10 +64,8 @@ - The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. - Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 - textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : - (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 contrastRatio = %1 @@ -78,8 +76,7 @@ - Font size is too small: text may not be resized without assistive technology - up to 200 percent without loss of content or functionality + Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 textSize = %1 @@ -92,28 +89,7 @@ Document should not contain illegible font - fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && - fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && - fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && - fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && - fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && - fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && - fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && - fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && - fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && - fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && - fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && - fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && - fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && - fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && - fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && - fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && - fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && - fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && - fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && - fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && - fontName.indexOf('VladimirScript') == -1 && - (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) + fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) Document contains illegible font @@ -135,9 +111,7 @@ Links shall contain an alternate description via their Contents or Alt keys or in the text value - (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || - (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || - (Alt != null && Alt != '' && altIsLink == false) + (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false) A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value @@ -235,11 +209,7 @@ Incorrect table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || - (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && - correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && - correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || - parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) score = %1, correct type = %2, structure id = %3 @@ -253,11 +223,7 @@ Missing table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || - (isTableElem == true) || (correctType != 'TD' && - correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && - correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || - parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) score = %1, correct type = %2, structure id = %3 @@ -414,8 +380,7 @@ The structure type and attributes of list elements shall be semantically appropriate - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && - correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) score = %1, correct type = %2, structure id = %3 @@ -429,10 +394,7 @@ The structure type and attributes of a list shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || - correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || - correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -445,10 +407,7 @@ The structure type and attributes of a list item shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || - correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || - correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -461,10 +420,7 @@ The structure type and attributes of a list body shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || - correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || - correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || - correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' score = %1, correct type = %2 @@ -477,10 +433,7 @@ A table element is incorrectly tagged as a list element or a list has the wrong numbering - hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && - correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && - correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && - standardType != 'Lbl' && standardType != 'LBody') + hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') score = %1, correct type = %2 @@ -746,8 +699,7 @@ TOCI text should be presented on a destination page errorCodes.split(',').filter(elem => elem == 1008).length == 0 - TOCI text is not found on a destination page %wrongDestinationPage%. - Possible destination page number(s): %possiblePageNumbers% + TOCI text is not found on a destination page %wrongDestinationPage%. Possible destination page number(s): %possiblePageNumbers% errorArguments.split(';;')[errorCodes.split(',') .findIndex(elem => elem == 1008)].split(';')[0] @@ -847,8 +799,7 @@ The structure type and attributes of a heading shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1300).length == 0 - This node is the single child with content. One of its ancestor nodes should be tagged as heading - instead of this one + This node is the single child with content. One of its ancestor nodes should be tagged as heading instead of this one diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml b/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml new file mode 100644 index 00000000..072aa07e --- /dev/null +++ b/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml @@ -0,0 +1,23 @@ + + +
+ WCAG 2.1 - 1.3 Adaptable - 1.3.1 Info and Relationships - Repeated non space characters + Text should not contain repeated non space characters +
+ + + + + Text should not contain repeated non space characters + isNonSpace == false || numberOfRepeatedCharacters < 5 + + Text contains %1 repeated non space characters + + numberOfRepeatedCharacters + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml b/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml new file mode 100644 index 00000000..4a267235 --- /dev/null +++ b/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml @@ -0,0 +1,23 @@ + + +
+ WCAG 2.1 - 1.3 Adaptable - 1.3.1 Info and Relationships - Repeated space characters + Text should not contain repeated space characters +
+ + + + + Text should not contain repeated space characters + isNonSpace == true || numberOfRepeatedCharacters < 3 + + Text contains %1 repeated space characters + + numberOfRepeatedCharacters + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml b/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml new file mode 100644 index 00000000..e8d4b206 --- /dev/null +++ b/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml @@ -0,0 +1,21 @@ + + +
+ WCAG 2.1 - 1.3 Adaptable - 1.3.1 Info and Relationships - Underlined text + Underlined text +
+ + + + + Underlined text + isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 + + Underlined text is detected + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml b/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml new file mode 100644 index 00000000..47d31e2f --- /dev/null +++ b/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml @@ -0,0 +1,21 @@ + + +
+ WCAG 2.1 - 1.3 Adaptable - 1.3.1 Info and Relationships - Different text style + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element +
+ + + + + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element + hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml b/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml index 39a4b3c1..64b7216c 100644 --- a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml +++ b/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml @@ -1,13 +1,13 @@ - +
- ISO 14289-1:2014 - 1.3 Adaptable - 1.3.4 Orientation - Single display orientation + WCAG 2.1 - 1.3 Adaptable - 1.3.4 Orientation - Single display orientation Pages shall have the same orientation
- - + + Pages shall have the same orientation orientation == 'Square' || gMostCommonPageOrientation == orientation diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml b/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml new file mode 100644 index 00000000..60bca263 --- /dev/null +++ b/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml @@ -0,0 +1,23 @@ + + +
+ WCAG 2.1 - 1.4 Distinguishable - 1.4.10 Reflow - Bounding box of figure + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page +
+ + + + + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page + page != lastPage || hasBBox == true + + "Figure" structure element on a single page with no bounding box + + + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml b/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml index ebd0a53d..c68296c5 100644 --- a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml +++ b/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml @@ -1,17 +1,18 @@ - +
- ISO 14289-1:2014 - 1.4 Distinguishable - 1.4.3 Contrast (Minimum) + WCAG 2.1 - 1.4 Distinguishable - 1.4.3 Contrast (Minimum) The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1
- + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 - textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : + (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 contrastRatio = %1 diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml b/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml new file mode 100644 index 00000000..9dd80133 --- /dev/null +++ b/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 1.4 Distinguishable - 1.4.4 Resize Text - Small text + Font size is too small: text may not be resized without assistive technology + up to 200 percent without loss of content or functionality +
+ + + + + Font size is too small: text may not be resized without assistive technology + up to 200 percent without loss of content or functionality + textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + textSize = %1 + + textSize + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml b/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml new file mode 100644 index 00000000..f67b925a --- /dev/null +++ b/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml @@ -0,0 +1,42 @@ + + +
+ WCAG 2.1 - 1.4 Distinguishable - 1.4.8 Visual Presentation - Illegible font + Document should not contain illegible font +
+ + + + + Document should not contain illegible font + fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && + fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && + fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && + fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && + fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && + fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && + fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && + fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && + fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && + fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && + fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && + fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && + fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && + fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && + fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && + fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && + fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && + fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && + fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && + fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && + fontName.indexOf('VladimirScript') == -1 && + (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) + + Document contains illegible font + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/2. Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml b/PDF_UA/WCAG/2.1/2. Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml new file mode 100644 index 00000000..efc98c04 --- /dev/null +++ b/PDF_UA/WCAG/2.1/2. Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 2.4 Navigable - 2.4.9 Link Purpose (Link Only) - Alternate description of Link + Links shall contain an alternate description via their Contents or Alt keys or in the text value +
+ + + + + Links shall contain an alternate description via their Contents or Alt keys or in the text value + (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || + (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || + (Alt != null && Alt != '' && altIsLink == false) + + A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value + + + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml new file mode 100644 index 00000000..1ce82efa --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml @@ -0,0 +1,21 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells + Table shouldn't have merged cells +
+ + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml new file mode 100644 index 00000000..6a19b0d1 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml @@ -0,0 +1,21 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells + Table shouldn't have merged cells +
+ + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml new file mode 100644 index 00000000..9cc292e2 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells + Table shouldn't have merged cells +
+ + + + + Table shouldn't have merged cells + colSpan == 1 && rowSpan == 1 + + Table has merged cells + + + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml index 538fee3d..5c5ab6bc 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml @@ -1,15 +1,15 @@ - +
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph - The structure type and attributes of a paragraph shall be semantically appropriate + WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph + Incorrect use of a paragraph
- + - The structure type and attributes of a paragraph shall be semantically appropriate - correctType == 'P' && correctSemanticScore >= 0.75 + Incorrect use of a paragraph + correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml index d12daceb..e788d971 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml @@ -1,15 +1,15 @@ - +
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Span - The structure type and attributes of a span shall be semantically appropriate + WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Span + Incorrect use of a span
- + - The structure type and attributes of a span shall be semantically appropriate - correctType == 'Span' && correctSemanticScore >= 0.75 + Incorrect use of a span + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml similarity index 59% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml index 09152f03..d589ecde 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t06.xml +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml @@ -1,15 +1,15 @@ - +
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading - The structure type and attributes of a heading shall be semantically appropriate + WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading + Incorrect use of a heading
- - - The structure type and attributes of a heading shall be semantically appropriate - correctType == 'H' && correctSemanticScore >= 0.75 + + + Incorrect use of a heading + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml similarity index 59% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml index d3e662a8..c14acd01 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t03.xml +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml @@ -1,15 +1,15 @@ - +
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table - The structure type and attributes of a table shall be semantically appropriate + WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Numbered heading + Incorrect use of a numbered heading
- - - The structure type and attributes of a table shall be semantically appropriate - correctType == 'Table' && correctSemanticScore >= 0.75 + + + Incorrect use of a numbered heading + correctSemanticScore >= 0.75 || correctType == null score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml index 231ec607..e38502ec 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml @@ -1,20 +1,25 @@ - +
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table row - The structure type and attributes of a table row shall be semantically appropriate + WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table element + Incorrect table element
- + - The structure type and attributes of a table row shall be semantically appropriate - correctType == 'TR' && correctSemanticScore >= 0.75 + Incorrect table element + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || + (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && + correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && + correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || + parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) - score = %1, correct type = %2 + score = %1, correct type = %2, structure id = %3 correctSemanticScore correctType + structureID diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml index 2865b26b..de1e5c3e 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml @@ -1,20 +1,25 @@ - +
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table header cell - The structure type and attributes of a table header cell shall be semantically appropriate + WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Missing table element + Missing table element
- + - The structure type and attributes of a table header cell shall be semantically appropriate - correctType == 'TH' && correctSemanticScore >= 0.75 + Missing table element + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || + (isTableElem == true) || (correctType != 'TD' && + correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && + correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || + parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) - score = %1, correct type = %2 + score = %1, correct type = %2, structure id = %3 correctSemanticScore correctType + structureID diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml index a09dea6a..171eb975 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml @@ -1,15 +1,15 @@ - +
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell - The structure type and attributes of a table cell shall be semantically appropriate + WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading instead of paragraph + This structure element should be a heading instead of a paragraph
- + - The structure type and attributes of a table cell shall be semantically appropriate - correctType == 'TD' && correctSemanticScore >= 0.75 + This structure element should be a heading instead of a paragraph + correctType != 'H' && correctType != 'Hn' score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml index 56db5db2..5aae6ccd 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml @@ -1,23 +1,20 @@ - +
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table elements - The structure type and attributes of table elements shall be semantically appropriate + WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Span instead of paragraph + This structure element should be a span instead of a paragraph
- + - The structure type and attributes of table elements shall be semantically appropriate - (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && - correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && - correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') + This structure element should be a span instead of a paragraph + correctType != 'Span' - score = %1, correct type = %2, structure id = %3 + score = %1, correct type = %2 correctSemanticScore correctType - structureID diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml similarity index 58% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml rename to PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml index 32790262..b36d7410 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t07.xml +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml @@ -1,15 +1,15 @@ - +
- ISO 14289-1:2014 - 4.1 Compatible - 4.1.2 Name, Role, Value - Number heading - The structure type and attributes of a number heading shall be semantically appropriate + WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of span + This structure element should be a paragraph instead of a span
- - - The structure type and attributes of a number heading shall be semantically appropriate - correctType == 'Hn' && correctSemanticScore >= 0.75 + + + This structure element should be a paragraph instead of a span + correctType != 'P' score = %1, correct type = %2 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml new file mode 100644 index 00000000..6593d13f --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml @@ -0,0 +1,24 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading instead of span + This structure element should be a heading instead of a span +
+ + + + + This structure element should be a heading instead of a span + correctType != 'H' && correctType != 'Hn' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml new file mode 100644 index 00000000..ab1f8951 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml @@ -0,0 +1,24 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of heading + This structure element should be a paragraph instead of a heading +
+ + + + + This structure element should be a paragraph instead of a heading + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml new file mode 100644 index 00000000..7742c7c7 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml @@ -0,0 +1,24 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of numbered heading + This structure element should be a paragraph instead of a numbered heading +
+ + + + + This structure element should be a paragraph instead of a numbered heading + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml new file mode 100644 index 00000000..98fe4c38 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml @@ -0,0 +1,24 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant paragraph + Redundant paragraph +
+ + + + + Redundant paragraph + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml new file mode 100644 index 00000000..dde2a174 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml @@ -0,0 +1,24 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant span + Redundant span +
+ + + + + Redundant span + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml new file mode 100644 index 00000000..979d84df --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml @@ -0,0 +1,24 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant heading + Redundant heading +
+ + + + + Redundant heading + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml new file mode 100644 index 00000000..93834f41 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml @@ -0,0 +1,24 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant numbered heading + Redundant numbered heading +
+ + + + + Redundant numbered heading + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml new file mode 100644 index 00000000..6fa23acf --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml @@ -0,0 +1,24 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Caption instead of paragraph + This structure element should be a caption instead of a paragraph +
+ + + + + This structure element should be a caption instead of a paragraph + correctType != 'Caption' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml new file mode 100644 index 00000000..dd2f4358 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml @@ -0,0 +1,26 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List elements + The structure type and attributes of list elements shall be semantically appropriate +
+ + + + + The structure type and attributes of list elements shall be semantically appropriate + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && + correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml new file mode 100644 index 00000000..f6e09221 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml @@ -0,0 +1,27 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List elements + The structure type and attributes of a list shall be semantically appropriate +
+ + + + + The structure type and attributes of a list shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || + correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || + correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml new file mode 100644 index 00000000..68412dff --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml @@ -0,0 +1,27 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item + The structure type and attributes of a list item shall be semantically appropriate +
+ + + + + The structure type and attributes of a list item shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || + correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || + correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml new file mode 100644 index 00000000..11b6f380 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml @@ -0,0 +1,27 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List body + The structure type and attributes of a list body shall be semantically appropriate +
+ + + + + The structure type and attributes of a list body shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || + correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || + correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || + correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml new file mode 100644 index 00000000..0617db55 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml @@ -0,0 +1,27 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List + A table element is incorrectly tagged as a list element or a list has the wrong numbering +
+ + + + + A table element is incorrectly tagged as a list element or a list has the wrong numbering + hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && + correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && + correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && + standardType != 'Lbl' && standardType != 'LBody') + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml new file mode 100644 index 00000000..efeee21d --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml @@ -0,0 +1,24 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph + This structure element should be a part or several different paragraphs instead of a paragraph +
+ + + + + This structure element should be a part or several different paragraphs instead of a paragraph + correctType != 'Part' || correctSemanticScore < 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml new file mode 100644 index 00000000..7dc2498b --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI + The structure type and attributes of a TOCI shall be semantically appropriate +
+ + + + + The structure type and attributes of a TOCI shall be semantically appropriate + correctType != 'TOCI' || standardType == 'TOCI' + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml new file mode 100644 index 00000000..66fdd4bc --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI without text + TOCI shall contain one or more text lines +
+ + + + + TOCI shall contain one or more text lines + errorCodes.split(',').filter(elem => elem == 1000).length == 0 + + TOCI doesn't have a text + + + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml new file mode 100644 index 00000000..3aea89a4 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI page + TOCI page label shall match the destination page +
+ + + + + TOCI page label shall match the destination page + errorCodes.split(',').filter(elem => elem == 1002).length == 0 + + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml new file mode 100644 index 00000000..8d5bf38f --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Right alignment of TOCIs + TOCI shall have a right alignment that matches a right alignment of other TOCIs +
+ + + + + TOCI shall have a right alignment that matches a right alignment of other TOCIs + errorCodes.split(',').filter(elem => elem == 1003).length == 0 + + TOCI has a bad right alignment + + + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml new file mode 100644 index 00000000..455d97ce --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List tagging + This list and neighbor list(s) should be tagged as one list +
+ + + + + This list and neighbor list(s) should be tagged as one list + errorCodes.split(',').filter(elem => elem == 1200).length == 0 + + This list and neighbor list(s) should be tagged as one list + + + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml new file mode 100644 index 00000000..474f00fb --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOC tagging + This TOC and neighbor TOC(s) should be tagged as one TOC +
+ + + + + This TOC and neighbor TOC(s) should be tagged as one TOC + errorCodes.split(',').filter(elem => elem == 1006).length == 0 + + This TOC and neighbor TOC(s) should be tagged as one TOC + + + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml new file mode 100644 index 00000000..3aff760b --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table rows + The number of rows of this table does not match the number of rows of the visual representation of this table +
+ + + + + The number of rows of this table does not match the number of rows of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1104).length == 0 + + The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1] + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml new file mode 100644 index 00000000..96103928 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table columns + The number of columns of this table does not match the number of columns of the visual representation of this table +
+ + + + + The number of columns of this table does not match the number of columns of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1105).length == 0 + + The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1] + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml new file mode 100644 index 00000000..e559d5ff --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell row span + The row span of this table cell does not match the row span of the visual representation of this table cell +
+ + + + + The row span of this table cell does not match the row span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1106).length == 0 + + The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1] + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml new file mode 100644 index 00000000..218632a7 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell column span + The column span of this table cell does not match the column span of the visual representation of this table cell +
+ + + + + The column span of this table cell does not match the column span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1107).length == 0 + + The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1] + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml new file mode 100644 index 00000000..626e6a38 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item + This content should be tagged as a list item +
+ + + + + This content should be tagged as a list item + false + + This content should be tagged as a list item + + + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml new file mode 100644 index 00000000..d36e8f90 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position + This cell is below than some cells in the next row +
+ + + + + This cell is below than some cells in the next row + errorCodes.split(',').filter(elem => elem == 1100).length == 0 + + This cell is below than some cells in the next row + + + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml new file mode 100644 index 00000000..f6740533 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position + This cell is above than some cells in the previous row +
+ + + + + This cell is above than some cells in the previous row + errorCodes.split(',').filter(elem => elem == 1101).length == 0 + + This cell is above than some cells in the previous row + + + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml new file mode 100644 index 00000000..c65db219 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position + This cell is to the right of some cells in the next column +
+ + + + + This cell is to the right of some cells in the next column + errorCodes.split(',').filter(elem => elem == 1102).length == 0 + + This cell is to the right of some cells in the next column + + + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml new file mode 100644 index 00000000..037f48b8 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position + This cell is to the left of some cells in the previous column +
+ + + + + This cell is to the left of some cells in the previous column + errorCodes.split(',').filter(elem => elem == 1103).length == 0 + + This cell is to the left of some cells in the previous column + + + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml new file mode 100644 index 00000000..34dcf20b --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell + This structure element should be a table cell instead of a table header +
+ + + + + This structure element should be a table cell instead of a table header + correctType != 'TD' + + score = %1, correct type = %2, id = %3 + + correctSemanticScore + correctType + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml new file mode 100644 index 00000000..2c81dd64 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI text on document + TOCI text should be presented in the document +
+ + + + + TOCI text should be presented in the document + errorCodes.split(',').filter(elem => elem == 1007).length == 0 + + TOCI text is not found in the document + + + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml new file mode 100644 index 00000000..d7354ca0 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml @@ -0,0 +1,28 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI text on page + TOCI text should be presented on a destination page +
+ + + + + TOCI text should be presented on a destination page + errorCodes.split(',').filter(elem => elem == 1008).length == 0 + + TOCI text is not found on a destination page %wrongDestinationPage%. + Possible destination page number(s): %possiblePageNumbers% + + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[1] + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml new file mode 100644 index 00000000..0b7079ba --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Destination of TOCI + TOCI should have a destination +
+ + + + + TOCI should have a destination + errorCodes.split(',').filter(elem => elem == 1009).length == 0 + + TOCI doesn't have a destination. Possible destination page number(s): %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml new file mode 100644 index 00000000..44e3d65c --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml @@ -0,0 +1,25 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Page label of TOCI + TOCI should have a correct page label +
+ + + + + TOCI should have a correct page label + errorCodes.split(',').filter(elem => elem == 1010).length == 0 + + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] + + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml new file mode 100644 index 00000000..438a8e9e --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml @@ -0,0 +1,27 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI numbering + TOCI should have a correct numbering +
+ + + + + TOCI should have a correct numbering + errorCodes.split(',').filter(elem => elem == 1011).length == 0 + + TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering% + + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[1] + structureID + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml new file mode 100644 index 00000000..972db2d5 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml @@ -0,0 +1,21 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List without list items + List should contain list items +
+ + + + + List should contain list items + errorCodes.split(',').filter(elem => elem == 1201).length == 0 + + List contains only one child - list + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml new file mode 100644 index 00000000..afc6a6e1 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml @@ -0,0 +1,21 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item + The structure type and attributes of a list item shall be semantically appropriate +
+ + + + + The structure type and attributes of a list item shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1202).length == 0 + + This list item should be tagged as several different list items + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml new file mode 100644 index 00000000..2d3d8be3 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml @@ -0,0 +1,21 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Note instead of span + This structure element should be a note instead of a span +
+ + + + + This structure element should be a note instead of a span + correctType != 'Note' + + This structure element should be a note instead of a span + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml new file mode 100644 index 00000000..5de44b49 --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml @@ -0,0 +1,21 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Note instead of paragraph + This structure element should be a note instead of a paragraph +
+ + + + + This structure element should be a note instead of a paragraph + correctType != 'Note' + + This structure element should be a note instead of a paragraph + + + + + + +
diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml new file mode 100644 index 00000000..3149eb5b --- /dev/null +++ b/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml @@ -0,0 +1,22 @@ + + +
+ WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading + The structure type and attributes of a heading shall be semantically appropriate +
+ + + + + The structure type and attributes of a heading shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1300).length == 0 + + This node is the single child with content. One of its ancestor nodes should be tagged as heading + instead of this one + + + + + + +
From 8a603fc8196d2d461213bb968df1923f046d31ff Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 7 Dec 2023 11:13:30 +0000 Subject: [PATCH 500/557] Add individual WCAG profiles --- PDF_UA/PDFUA-2-ISO32005.xml | 2 +- PDF_UA/PDFUA-2.xml | 2 +- PDF_UA/WCAG-21.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 0724971a..51148ae9 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -1,6 +1,6 @@ -
+
PDF/UA-2 + Tagged PDF validation profile Validation rules against ISO 14289-2:202x and ISO 32005
diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 8a03ae15..48ce5d64 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -1,6 +1,6 @@ -
+
PDF/UA-2 validation profile Validation rules against ISO 14289-2:202x
diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-21.xml index 7da0a579..fadb548d 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-21.xml @@ -1,6 +1,6 @@ -
+
WCAG 2.1 validation profile Extra rules for WCAG 2.1 validation in addition to PDF/UA-1
From 98214044c2ed52aff86333d9aebe51cbb2693915 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 13 Dec 2023 15:37:53 +0300 Subject: [PATCH 501/557] Add WCAG2.2 Machine profile --- .../update-PDFUA-profiles-workflow.yml | 3 +- ...update-library-PDFUA-profiles-workflow.yml | 2 +- ...G-21-Complete.xml => WCAG-22-Complete.xml} | 132 +- PDF_UA/{WCAG-21-Dev.xml => WCAG-22-Dev.xml} | 52 +- PDF_UA/WCAG-22-Machine.xml | 1455 +++++++++++++++++ PDF_UA/{WCAG-21.xml => WCAG-22.xml} | 132 +- .../verapdf-profile-1-3-1-t01.xml | 6 +- .../verapdf-profile-1-3-1-t02.xml | 6 +- .../verapdf-profile-1-3-1-t03.xml | 6 +- .../verapdf-profile-1-3-1-t04.xml | 6 +- .../verapdf-profile-1-3-4-t01.xml | 6 +- .../verapdf-profile-1-4-10-t01.xml | 6 +- .../verapdf-profile-1-4-3-t01.xml | 6 +- .../verapdf-profile-1-4-4-t01.xml | 6 +- .../verapdf-profile-1-4-8-t01.xml | 6 +- .../verapdf-profile-2-4-9-t01.xml | 6 +- .../verapdf-profile-4-1-1-t01.xml | 6 +- .../verapdf-profile-4-1-1-t02.xml | 6 +- .../verapdf-profile-4-1-1-t03.xml | 6 +- .../verapdf-profile-4-1-2-t01.xml | 6 +- .../verapdf-profile-4-1-2-t02.xml | 6 +- .../verapdf-profile-4-1-2-t04.xml | 6 +- .../verapdf-profile-4-1-2-t05.xml | 6 +- .../verapdf-profile-4-1-2-t08.xml | 6 +- .../verapdf-profile-4-1-2-t09.xml | 6 +- .../verapdf-profile-4-1-2-t10.xml | 6 +- .../verapdf-profile-4-1-2-t11.xml | 6 +- .../verapdf-profile-4-1-2-t12.xml | 6 +- .../verapdf-profile-4-1-2-t13.xml | 6 +- .../verapdf-profile-4-1-2-t14.xml | 6 +- .../verapdf-profile-4-1-2-t15.xml | 6 +- .../verapdf-profile-4-1-2-t16.xml | 6 +- .../verapdf-profile-4-1-2-t17.xml | 6 +- .../verapdf-profile-4-1-2-t18.xml | 6 +- .../verapdf-profile-4-1-2-t19.xml | 6 +- .../verapdf-profile-4-1-2-t20.xml | 6 +- .../verapdf-profile-4-1-2-t21.xml | 6 +- .../verapdf-profile-4-1-2-t22.xml | 6 +- .../verapdf-profile-4-1-2-t23.xml | 6 +- .../verapdf-profile-4-1-2-t25.xml | 6 +- .../verapdf-profile-4-1-2-t26.xml | 6 +- .../verapdf-profile-4-1-2-t27.xml | 6 +- .../verapdf-profile-4-1-2-t28.xml | 6 +- .../verapdf-profile-4-1-2-t29.xml | 6 +- .../verapdf-profile-4-1-2-t31.xml | 6 +- .../verapdf-profile-4-1-2-t32.xml | 6 +- .../verapdf-profile-4-1-2-t34.xml | 6 +- .../verapdf-profile-4-1-2-t35.xml | 6 +- .../verapdf-profile-4-1-2-t36.xml | 6 +- .../verapdf-profile-4-1-2-t37.xml | 6 +- .../verapdf-profile-4-1-2-t38.xml | 6 +- .../verapdf-profile-4-1-2-t39.xml | 6 +- .../verapdf-profile-4-1-2-t40.xml | 6 +- .../verapdf-profile-4-1-2-t41.xml | 6 +- .../verapdf-profile-4-1-2-t42.xml | 6 +- .../verapdf-profile-4-1-2-t43.xml | 6 +- .../verapdf-profile-4-1-2-t44.xml | 6 +- .../verapdf-profile-4-1-2-t45.xml | 6 +- .../verapdf-profile-4-1-2-t46.xml | 6 +- .../verapdf-profile-4-1-2-t47.xml | 6 +- .../verapdf-profile-4-1-2-t48.xml | 6 +- .../verapdf-profile-4-1-2-t49.xml | 6 +- .../verapdf-profile-4-1-2-t50.xml | 6 +- .../verapdf-profile-4-1-2-t51.xml | 6 +- .../verapdf-profile-4-1-2-t52.xml | 6 +- .../verapdf-profile-4-1-2-t53.xml | 6 +- .../verapdf-profile-4-1-2-t54.xml | 6 +- .../verapdf-profile-4-1-2-t55.xml | 6 +- README.md | 2 +- 69 files changed, 1802 insertions(+), 348 deletions(-) rename PDF_UA/{WCAG-21-Complete.xml => WCAG-22-Complete.xml} (96%) rename PDF_UA/{WCAG-21-Dev.xml => WCAG-22-Dev.xml} (90%) create mode 100644 PDF_UA/WCAG-22-Machine.xml rename PDF_UA/{WCAG-21.xml => WCAG-22.xml} (91%) rename PDF_UA/WCAG/{2.1 => 2.2}/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml (85%) rename PDF_UA/WCAG/{2.1 => 2.2}/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml (90%) rename PDF_UA/WCAG/{2.1 => 2.2}/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml (89%) rename PDF_UA/WCAG/{2.1 => 2.2}/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml (95%) rename PDF_UA/WCAG/{2.1/2. Operable => 2.2/2 Operable}/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml (90%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml (84%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml (84%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml (86%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml (86%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml (86%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml (86%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml (91%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml (91%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml (86%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml (85%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml (86%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml (86%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml (90%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml (90%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml (90%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml (90%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml (90%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml (89%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml (90%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml (91%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml (90%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml (91%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml (87%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml (91%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml (88%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml (90%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml (85%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml (86%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml (85%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml (85%) rename PDF_UA/WCAG/{2.1 => 2.2}/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml (87%) diff --git a/.github/workflows/update-PDFUA-profiles-workflow.yml b/.github/workflows/update-PDFUA-profiles-workflow.yml index a8927bed..176f0373 100644 --- a/.github/workflows/update-PDFUA-profiles-workflow.yml +++ b/.github/workflows/update-PDFUA-profiles-workflow.yml @@ -7,8 +7,7 @@ on: paths: - 'PDF_UA/1/**' - 'PDF_UA/2/**' - - 'PDF_UA/WCAG/PDF_UA/**' - - 'PDF_UA/WCAG-21.xml' + - 'PDF_UA/WCAG/**' jobs: update-profiles: diff --git a/.github/workflows/update-library-PDFUA-profiles-workflow.yml b/.github/workflows/update-library-PDFUA-profiles-workflow.yml index 5b5513e5..658e9476 100644 --- a/.github/workflows/update-library-PDFUA-profiles-workflow.yml +++ b/.github/workflows/update-library-PDFUA-profiles-workflow.yml @@ -31,7 +31,7 @@ jobs: git-user: "Git User" git-commit-message: ${{ github.event.head_commit.message }} git-commit-sign-off: "false" - excludes: 1:2:WCAG:ISO-32000-1-Tagged.xml:ISO-32000-2-Tagged.xml:PDFUA-2-ISO32005.xml:ISO-32005-Tagged.xml:WCAG-21.xml:WCAG-21-Complete.xml:WCAG-21-Dev.xml:PDFA-1A.xml:PDFA-1B.xml:PDFA-2A.xml:PDFA-2B.xml:PDFA-2U.xml:PDFA-3A.xml:PDFA-3B.xml:PDFA-3U.xml:PDFA-4.xml:PDFA-4E.xml:PDFA-4F.xml:validationProfile.xsd + excludes: 1:2:WCAG:ISO-32000-1-Tagged.xml:ISO-32000-2-Tagged.xml:PDFUA-2-ISO32005.xml:ISO-32005-Tagged.xml:WCAG-22.xml:WCAG-22-Machine.xml:WCAG-22-Complete.xml:WCAG-22-Dev.xml:PDFA-1A.xml:PDFA-1B.xml:PDFA-2A.xml:PDFA-2B.xml:PDFA-2U.xml:PDFA-3A.xml:PDFA-3B.xml:PDFA-3U.xml:PDFA-4.xml:PDFA-4E.xml:PDFA-4F.xml:validationProfile.xsd - name: Notify slack if library wasn't updated if: failure() diff --git a/PDF_UA/WCAG-21-Complete.xml b/PDF_UA/WCAG-22-Complete.xml similarity index 96% rename from PDF_UA/WCAG-21-Complete.xml rename to PDF_UA/WCAG-22-Complete.xml index c3ecd45a..77451e43 100644 --- a/PDF_UA/WCAG-21-Complete.xml +++ b/PDF_UA/WCAG-22-Complete.xml @@ -1,8 +1,8 @@ - -
- WCAG-2.1-Complete validation profile - Validation rules against WCAG 2.1 and ISO 14289-1:2014 + +
+ WCAG-2.2-Complete validation profile + Validation rules against WCAG 2.2 and ISO 14289-1:2014
@@ -1264,7 +1264,7 @@ - + Text should not contain repeated non space characters isNonSpace == false || numberOfRepeatedCharacters < 5 @@ -1276,7 +1276,7 @@ - + Text should not contain repeated space characters isNonSpace == true || numberOfRepeatedCharacters < 3 @@ -1288,7 +1288,7 @@ - + Underlined text isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 @@ -1298,7 +1298,7 @@ - + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 @@ -1308,7 +1308,7 @@ - + Pages shall have the same orientation orientation == 'Square' || gMostCommonPageOrientation == orientation @@ -1320,7 +1320,7 @@ - + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 @@ -1332,7 +1332,7 @@ - + Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 @@ -1344,7 +1344,7 @@ - + Document should not contain illegible font fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) @@ -1354,7 +1354,7 @@ - + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page page != lastPage || hasBBox == true @@ -1366,7 +1366,7 @@ - + Links shall contain an alternate description via their Contents or Alt keys or in the text value (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false) @@ -1378,7 +1378,7 @@ - + Table shouldn't have merged cells ColSpan == 1 && RowSpan == 1 @@ -1388,7 +1388,7 @@ - + Table shouldn't have merged cells ColSpan == 1 && RowSpan == 1 @@ -1398,7 +1398,7 @@ - + Table shouldn't have merged cells colSpan == 1 && rowSpan == 1 @@ -1412,7 +1412,7 @@ - + Incorrect use of a paragraph correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' @@ -1425,7 +1425,7 @@ - + Incorrect use of a span correctSemanticScore >= 0.75 || correctType == null @@ -1438,7 +1438,7 @@ - + Incorrect use of a heading correctSemanticScore >= 0.75 || correctType == null @@ -1451,7 +1451,7 @@ - + Incorrect use of a numbered heading correctSemanticScore >= 0.75 || correctType == null @@ -1464,7 +1464,7 @@ - + Incorrect table element hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) @@ -1478,7 +1478,7 @@ - + Missing table element hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) @@ -1492,7 +1492,7 @@ - + This structure element should be a heading instead of a paragraph correctType != 'H' && correctType != 'Hn' @@ -1505,7 +1505,7 @@ - + This structure element should be a span instead of a paragraph correctType != 'Span' @@ -1518,7 +1518,7 @@ - + This structure element should be a paragraph instead of a span correctType != 'P' @@ -1531,7 +1531,7 @@ - + This structure element should be a heading instead of a span correctType != 'H' && correctType != 'Hn' @@ -1544,7 +1544,7 @@ - + This structure element should be a paragraph instead of a heading correctType != 'P' @@ -1557,7 +1557,7 @@ - + This structure element should be a paragraph instead of a numbered heading correctType != 'P' @@ -1570,7 +1570,7 @@ - + Redundant paragraph correctType != null @@ -1583,7 +1583,7 @@ - + Redundant span correctType != null @@ -1596,7 +1596,7 @@ - + Redundant heading correctType != null @@ -1609,7 +1609,7 @@ - + Redundant numbered heading correctType != null @@ -1622,7 +1622,7 @@ - + This structure element should be a caption instead of a paragraph correctType != 'Caption' @@ -1635,7 +1635,7 @@ - + The structure type and attributes of list elements shall be semantically appropriate hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) @@ -1649,7 +1649,7 @@ - + The structure type and attributes of a list shall be semantically appropriate hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' @@ -1662,7 +1662,7 @@ - + The structure type and attributes of a list item shall be semantically appropriate hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' @@ -1675,7 +1675,7 @@ - + The structure type and attributes of a list body shall be semantically appropriate hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' @@ -1688,7 +1688,7 @@ - + A table element is incorrectly tagged as a list element or a list has the wrong numbering hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') @@ -1701,7 +1701,7 @@ - + This structure element should be a part or several different paragraphs instead of a paragraph correctType != 'Part' || correctSemanticScore < 0.75 @@ -1714,7 +1714,7 @@ - + The structure type and attributes of a TOCI shall be semantically appropriate correctType != 'TOCI' || standardType == 'TOCI' @@ -1728,7 +1728,7 @@ - + TOCI shall contain one or more text lines errorCodes.split(',').filter(elem => elem == 1000).length == 0 @@ -1742,7 +1742,7 @@ - + TOCI page label shall match the destination page errorCodes.split(',').filter(elem => elem == 1002).length == 0 @@ -1756,7 +1756,7 @@ - + TOCI shall have a right alignment that matches a right alignment of other TOCIs errorCodes.split(',').filter(elem => elem == 1003).length == 0 @@ -1770,7 +1770,7 @@ - + This list and neighbor list(s) should be tagged as one list errorCodes.split(',').filter(elem => elem == 1200).length == 0 @@ -1784,7 +1784,7 @@ - + This TOC and neighbor TOC(s) should be tagged as one TOC errorCodes.split(',').filter(elem => elem == 1006).length == 0 @@ -1798,7 +1798,7 @@ - + The number of rows of this table does not match the number of rows of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1104).length == 0 @@ -1812,7 +1812,7 @@ - + The number of columns of this table does not match the number of columns of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1105).length == 0 @@ -1826,7 +1826,7 @@ - + The row span of this table cell does not match the row span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1106).length == 0 @@ -1840,7 +1840,7 @@ - + The column span of this table cell does not match the column span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1107).length == 0 @@ -1854,7 +1854,7 @@ - + This content should be tagged as a list item false @@ -1868,7 +1868,7 @@ - + This cell is below than some cells in the next row errorCodes.split(',').filter(elem => elem == 1100).length == 0 @@ -1882,7 +1882,7 @@ - + This cell is above than some cells in the previous row errorCodes.split(',').filter(elem => elem == 1101).length == 0 @@ -1896,7 +1896,7 @@ - + This cell is to the right of some cells in the next column errorCodes.split(',').filter(elem => elem == 1102).length == 0 @@ -1910,7 +1910,7 @@ - + This cell is to the left of some cells in the previous column errorCodes.split(',').filter(elem => elem == 1103).length == 0 @@ -1924,7 +1924,7 @@ - + This structure element should be a table cell instead of a table header correctType != 'TD' @@ -1938,7 +1938,7 @@ - + TOCI text should be presented in the document errorCodes.split(',').filter(elem => elem == 1007).length == 0 @@ -1952,7 +1952,7 @@ - + TOCI text should be presented on a destination page errorCodes.split(',').filter(elem => elem == 1008).length == 0 @@ -1968,7 +1968,7 @@ - + TOCI should have a destination errorCodes.split(',').filter(elem => elem == 1009).length == 0 @@ -1982,7 +1982,7 @@ - + TOCI should have a correct page label errorCodes.split(',').filter(elem => elem == 1010).length == 0 @@ -1996,7 +1996,7 @@ - + TOCI should have a correct numbering errorCodes.split(',').filter(elem => elem == 1011).length == 0 @@ -2012,7 +2012,7 @@ - + List should contain list items errorCodes.split(',').filter(elem => elem == 1201).length == 0 @@ -2022,7 +2022,7 @@ - + The structure type and attributes of a list item shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1202).length == 0 @@ -2032,7 +2032,7 @@ - + This structure element should be a note instead of a span correctType != 'Note' @@ -2042,7 +2042,7 @@ - + This structure element should be a note instead of a paragraph correctType != 'Note' @@ -2052,7 +2052,7 @@ - + The structure type and attributes of a heading shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1300).length == 0 diff --git a/PDF_UA/WCAG-21-Dev.xml b/PDF_UA/WCAG-22-Dev.xml similarity index 90% rename from PDF_UA/WCAG-21-Dev.xml rename to PDF_UA/WCAG-22-Dev.xml index 2e8c2aa2..38ca3dd8 100644 --- a/PDF_UA/WCAG-21-Dev.xml +++ b/PDF_UA/WCAG-22-Dev.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 development validation profile - Extra rules for WCAG 2.1 validation in addition to PDF/UA-1 + WCAG 2.2 development validation profile + Extra rules for WCAG 2.2 validation in addition to PDF/UA-1
- + If text has a different background color, it shall be tagged as Span hasSpecialBackground == false @@ -17,7 +17,7 @@ - + The structure type and attributes of a paragraph shall be semantically appropriate correctType == 'P' && correctSemanticScore >= 0.75 @@ -30,7 +30,7 @@ - + The structure type and attributes of a span shall be semantically appropriate correctType == 'Span' && correctSemanticScore >= 0.75 @@ -43,7 +43,7 @@ - + The structure type and attributes of a table shall be semantically appropriate (correctType == 'Table' && correctSemanticScore >= 0.75) @@ -56,7 +56,7 @@ - + The structure type and attributes of a heading shall be semantically appropriate correctType == 'H' && correctSemanticScore >= 0.75 @@ -69,7 +69,7 @@ - + The structure type and attributes of a numbered heading shall be semantically appropriate correctType == 'Hn' && correctSemanticScore >= 0.75 @@ -82,7 +82,7 @@ - + The structure type and attributes of a table row shall be semantically appropriate (correctType == 'TR' && correctSemanticScore >= 0.75) @@ -95,7 +95,7 @@ - + The structure type and attributes of a table header cell shall be semantically appropriate (correctType == 'TH' && correctSemanticScore >= 0.75) @@ -108,7 +108,7 @@ - + The structure type and attributes of a table cell shall be semantically appropriate (correctType == 'TD' && correctSemanticScore >= 0.75) @@ -121,7 +121,7 @@ - + The structure type and attributes of table elements shall be semantically appropriate (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && @@ -137,7 +137,7 @@ - + The structure type and attributes of a caption shall be semantically appropriate correctType == 'Caption' && correctSemanticScore >= 0.75 @@ -150,7 +150,7 @@ - + The structure type and attributes of a caption shall be semantically appropriate standardType == 'Caption' || correctType != 'Caption' @@ -163,7 +163,7 @@ - + The structure type and attributes of list elements shall be semantically appropriate (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'L' && correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody') @@ -178,7 +178,7 @@ - + The structure type and attributes of a list shall be semantically appropriate (correctType == 'L' && correctSemanticScore >= 0.75) @@ -192,7 +192,7 @@ - + The structure type and attributes of a list item shall be semantically appropriate (correctType == 'LI' && correctSemanticScore >= 0.75) @@ -206,7 +206,7 @@ - + The structure type and attributes of a list label shall be semantically appropriate (correctType == 'Lbl' && correctSemanticScore >= 0.75) @@ -220,7 +220,7 @@ - + The structure type and attributes of a list body shall be semantically appropriate (correctType == 'LBody' && correctSemanticScore >= 0.75) @@ -234,7 +234,7 @@ - + A table element is incorrectly tagged as a list element or a list has the wrong numbering (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && @@ -251,7 +251,7 @@ - + List item does not contain a label correctType != 'LI' @@ -265,7 +265,7 @@ - + The structure type and attributes of table headers shall be semantically appropriate (correctType == 'THead' && correctSemanticScore >= 0.75) @@ -279,7 +279,7 @@ - + The structure type and attributes of a table body shall be semantically appropriate (correctType == 'TBody' && correctSemanticScore >= 0.75) @@ -293,7 +293,7 @@ - + The structure type and attributes of a table footer shall be semantically appropriate (correctType == 'TFoot' && correctSemanticScore >= 0.75) @@ -307,7 +307,7 @@ - + line art false diff --git a/PDF_UA/WCAG-22-Machine.xml b/PDF_UA/WCAG-22-Machine.xml new file mode 100644 index 00000000..814785df --- /dev/null +++ b/PDF_UA/WCAG-22-Machine.xml @@ -0,0 +1,1455 @@ + + +
+ WCAG 2.2 machine validation profile + Machine rules for WCAG 2.2 validation +
+ + + + + Content marked as Artifact should not present inside tagged content + tag != 'Artifact' || (parentStructureTag == null || isArtifact == true) + + Content marked as Artifact is present inside tagged content (tag %1) + + parentStructureTag + + + + + + + Tagged content should not present inside content marked as Artifact + (parentStructureTag == null || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + + Tagged content (tag %1) is present inside content marked as Artifact + + parentStructureTag + + + + + + + Content shall be marked as Artifact or tagged as real content + parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + + Content is neither marked as Artifact nor tagged as real content + + + + + + + Files shall have a Suspects value of false(ISO 32000-1:2008, Table 321) + Suspects != true + + Suspects entry has a value of true + + + + + + + + + All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type + circularMappingExist == true + + Non-standard structure type %1 is not mapped to a standard type + + valueS + + + + + + + + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists for %1 structure type + + valueS + + + + + + + Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped + isRemappedStandardType == false + + Standard type %1 is remapped + + valueS + + + + + + + + + The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-1:2008, 14.3.2 + metadata_size == 1 + + The document catalog dictionary doesn't contain metadata key + + + + + + + + + The Metadata stream in the document's catalog dictionary shall contain a dc:title entry, where dc is the recommended prefix for the Dublin Core metadata schema as defined in the XMP specification, which clearly identifies the document + dc_title != null && dc_title != '' + + Metadata stream does not contain dc:title + + + + + + + The document catalog dictionary shall include a ViewerPreferences dictionary containing a DisplayDocTitle key, whose value shall be true + DisplayDocTitle == true + + ViewerPreferences dictionary is not present in the document Catalog, or DisplayDocTitle key is set to false or is not present in the ViewerPreferences dictionary (ViewerPreferences = %1, DisplayDocTitle = %2) + + ViewerPreferences + DisplayDocTitle + + + + + + + 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-1:2008, 14.7 + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + + Natural language in the Outline entries shall be determined + gSizeCatalogLang != 0 + + Natural language in the Outline entries cannot be determined + + + + + + + Table element may contain only TR, THead, TBody, TFoot and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + Table element contains %1 element(s) instead of TR, THead, TBode, TFoot or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TR' && elem != 'THead' + && elem != 'TBody' && elem != 'TFoot' && elem != 'Caption').toString() + + structureID + + + + + + + + + TR element should be contained in Table, THead, TBody or TFoot element + /^(Table|THead|TBody|TFoot)$/.test(parentStandardType) + + TR element contained in %1 instead of Table, THead, TBody or TFoot element + + parentStandardType + + structureID + + + + + + + + + THead element should be contained in Table element + parentStandardType == 'Table' + + THead element contained in %1 instead of Table element + + parentStandardType + + structureID + + + + + + + + + TBody element should be contained in Table element + parentStandardType == 'Table' + + TBody element contained in %1 instead of Table element + + parentStandardType + + structureID + + + + + + + + + TFoot element should be contained in Table element + parentStandardType == 'Table' + + TFoot element contained in %1 instead of Table element + + parentStandardType + + structureID + + + + + + + + + TH element should be contained in TR element + parentStandardType == 'TR' + + TH element contained in %1 instead of TR element + + parentStandardType + + structureID + + + + + + + + + TD element should be contained in TR element + parentStandardType == 'TR' + + TD element contained in %1 instead of TR element + + parentStandardType + + structureID + + + + + + + + + TR element may contain only TH and TD elements + /^(TH|TD)(&(TH|TD))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + TR element contains %1 element(s) instead of TH or TD + + kidsStandardTypes.split('&').filter(elem => elem != 'TD' && elem != 'TH').toString() + + structureID + + + + + + + + + Table element should contain zero or one THead kid + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 + + Table element contains more than one THead kid + + + + structureID + + + + + + + + + Table element should contain zero or one TFoot kid + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 + + Table element contains more than one TFoot kid + + + + structureID + + + + + + + + + If Table element contains TFoot kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains TFoot kid, but not contains TBody kids + + + + structureID + + + + + + + + + If Table element contains THead kid, Table element should contain one or more TBody kids + kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 + + Table element contains THead kid, but not contains TBody kids + + + + structureID + + + + + + + + + Table cell shall not have intersection with other cells + hasIntersection != true + + Table cell has intersection with other cells + + + + + + + + + Table element may contain a Caption element as its first or last kid + kidsStandardTypes.indexOf('&Caption&') < 0 + + Table element contains Caption as its %1 child instead of first or last one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + structureID + + + + + + + + + LI element should be contained in L element + parentStandardType == 'L' + + LI element contained in %1 instead of L element + + parentStandardType + + structureID + + + + + + + + + LBody element should be contained in LI element + parentStandardType == 'LI' + + LBody element contained in %1 instead of LI element + + parentStandardType + + structureID + + + + + + + + + L element may contain only L, LI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + L element contains %1 element(s) instead of L, LI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'L' && elem != 'LI' + && elem != 'Caption').toString() + + structureID + + + + + + + + + LI element may contain only Lbl and LBody elements + /^(Lbl|LBody)(&(Lbl|LBody))*$/.test(kidsStandardTypes) || kidsStandardTypes == '' + + LI element contains %1 element(s) instead of Lbl or LBody + + kidsStandardTypes.split('&').filter(elem => elem != 'LBody' && elem != 'Lbl').toString() + + structureID + + + + + + + + + Natural language for text in ActualText attribute shall be determined + ActualText == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute cannot be determined + + + + + + + Natural language for text in Alt attribute shall be determined + Alt == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute cannot be determined + + + + + + + Natural language for text in E attribute shall be determined + E == null || Lang_size != 0 || parentLang != null || gSizeCatalogLang != 0 + + Natural language for text in E attribute cannot be determined + + + + + + + Natural language in the Contents entry for annotations shall be determined + Contents == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the Contents entry for annotations cannot be determined + + + + + + + Natural language in the TU key for form fields shall be determined + TU == null || Lang_size != 0 || gSizeCatalogLang != 0 + + Natural language in the TU key for form fields cannot be determined + + + + + + + TOCI element should be contained in TOC element + parentStandardType == 'TOC' + + TOCI element contained in %1 instead of TOC element + + parentStandardType + + structureID + + + + + + + + + TOC element may contain only TOC, TOCI and Caption elements + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' && elem != 'Caption').length == 0 || kidsStandardTypes == '' + + TOC element contains %1 element(s) instead of TOC, TOCI or Caption + + kidsStandardTypes.split('&').filter(elem => elem != 'TOC' && elem != 'TOCI' + && elem != 'Caption').toString() + + structureID + + + + + + + + + TOC element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + TOC element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + structureID + + + + + + + + + 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-1:2008, 14.9.2. A language identifier shall be a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages + /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) + + Value %1 of the Lang entry is not a Language-Tag + + unicodeValue + + + + + + + + + + Natural language for text in ActualText attribute in Span Marked Content shall be determined + tag != 'Span' || ActualText == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 + + Natural language for text in ActualText attribute in Span Marked Content cannot be determined + + + + + + + Natural language for text in Alt attribute in Span Marked Content shall be determined + tag != 'Span' || Alt == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 + + Natural language for text in Alt attribute in Span Marked Content cannot be determined + + + + + + + Natural language for text in E attribute in Span Marked Content shall be determined + tag != 'Span' || E == null || Lang != null || inheritedLang != null || gSizeCatalogLang != 0 + + Natural language for text in E attribute in Span Marked Content cannot be determined + + + + + + + Natural language for document metadata shall be determined + xDefault == false || gSizeCatalogLang != 0 + + Natural language for document metadata cannot be determined + + + + + + + Natural language for text in page content shall be determined + gSizeCatalogLang != 0 || Lang != null + + Natural language for text in page content cannot be determined + + + + + + + THead element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + THead element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + structureID + + + + + + + + + TBody element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + TBody element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + structureID + + + + + + + + + TFoot element may contain only TR elements + kidsStandardTypes.split('&').filter(elem => elem != 'TR').length == 0 || kidsStandardTypes == '' + + TFoot element contains %1 element(s) instead of TR + + kidsStandardTypes.split('&').filter(elem => elem != 'TR').toString() + + structureID + + + + + + + + + Table element may contain only one Caption element + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length < 2 + + Table element contains %1 Caption elements instead of one + + kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length + + structureID + + + + + + + + + L element may contain a Caption element only as its first kid + kidsStandardTypes == '' || kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') < 0 + + L element contains Caption as its %1 child instead of first one + + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + structureID + + + + + + + + + Table columns shall have the same number of rows (taking into account row spans) + numberOfColumnWithWrongRowSpan == null + + Table columns 1 and %1 span different number of rows + + numberOfColumnWithWrongRowSpan + 1 + + + + + + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null + + Table rows 1 and %1 span different number of columns + + numberOfRowWithWrongColumnSpan + 1 + + + + + + + + + Table rows shall have the same number of columns (taking into account column spans) + numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null + + Table rows 1 and %1 span different number of columns (%2 and %3 respectively) + + numberOfRowWithWrongColumnSpan + 1 + columnSpan + wrongColumnSpan + + + + + + + + + Figure tags shall include an alternative representation or replacement text that represents the contents marked with the Figure tag as noted in ISO 32000-1:2008, 14.7.2, Table 323 + (Alt != null && Alt != '') || ActualText != null + + Figure structure element neither has an alternate description nor a replacement text + + + + + + + + + For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it + hasCorrectNestingLevel == true + + Heading level %1 is skipped in a descending sequence of header levels + + nestingLevel - 1 + + + + + + + + + Each node in the tag tree shall contain at most one child H tag + kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 + + A node contains more than one H tag + + + + + + + All documents shall be either strongly or weakly structured, but not both + usesHn == false + + Document uses both H and H# tags + + + + + + + All documents shall be either strongly or weakly structured, but not both + usesH == false + + Document uses both H and H# tags + + + + + + + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute + hasConnectedHeader != false || unknownHeaders != '' + + TD does not contain Headers attribute, and Headers for this table cell cannot be determined algorithmically + + + + + + + + + If the table's structure is not determinable via Headers and IDs, then structure elements of type TH shall have a Scope attribute + hasConnectedHeader != false || unknownHeaders == '' + + TD references undefined Header(s) %1, and Headers for this table cell cannot be determined algorithmically + + unknownHeaders + + + + + + + + + All mathematical expressions shall be enclosed within a Formula tag as detailed in ISO 32000-1:2008, 14.8.4.5 and shall have Alt or ActualText attributes + (Alt != null && Alt != '') || ActualText != null + + Formula structure element neither has an alternate description nor a replacement text + + + + + + + + + Note tag shall have ID entry + noteID != null && noteID != '' + + ID key of the Note tag is not present + + + + + + + Each Note tag shall have unique ID key + hasDuplicateNoteID == false + + ID key %1 of the Note tag is non-unique + + noteID + + + + + + + Each optional content configuration dictionary that forms the value of the D key, or that is an element in the array that forms the value of the Configs key in the OCProperties dictionary, shall contain the Name key + Name != null && Name.length() > 0 + + Missing or empty Name entry of the optional content configuration dictionary + + + + + + + The AS key shall not appear in any optional content configuration dictionary + AS == null + + AS key is present in the optional content configuration dictionary + + + + + + + The file specification dictionary for an embedded file shall contain the non-empty F and UF keys + containsEF == false || (F != null && F != '' && UF != null && UF != '') + + The file specification dictionary for an embedded file does not contain either F or UF key or at least one of the keys is empty (F = %1, UF = %2) + + F + UF + + + + + + + Dynamic XFA forms shall not be used + dynamicRender != 'required' + + Dynamic XFA forms is present + + + + + + + An encrypted conforming file shall contain a P key in its encryption dictionary (ISO 32000-1:2008, 7.6.3.2, Table 21). The 10th bit position of the P key shall be true + P != null && (P & 512) == 512 + + The file is encrypted but does not contain a P entry in its encryption dictionary or the file is encrypted and does contain a P entry, but the 10th bit position of the P entry is false (P = %1, 10th bit = %2) + + P + P != null ? (P & 512) >> 9 : null + + + + + + + + + An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' + + %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot + + Subtype + structParentType + structParentStandardType + + + + + + + An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element + Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') + + %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element + + Subtype + + + + + + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) + isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') + + A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) + + + + + + + Annotations of subtype TrapNet shall not be permitted + isOutsideCropBox == true || (F & 2) == 2 + + An annotation of subtype TrapNet exists + + + + + + + Every page on which there is an annotation shall contain in its page dictionary the key Tabs, and its value shall be S + annots_size == 0 || Tabs == 'S' + + A page with annotation(s) contains Tabs key with value %1 instead of S + + Tabs + + + + + + + A Widget annotation shall be nested within a Form tag per ISO 32000-1:2008, 14.8.4.5, Table 340 + structParentStandardType == 'Form' || isOutsideCropBox == true || (F & 2) == 2 + + A Widget annotation is an Artifact or is nested within %1 tag (standard type = %2) instead of Form + + structParentType + structParentStandardType + + + + + + + + + If the Form element omits a Role attribute (Table 348), it shall have only one child: an object reference (14.7.4.3) identifying the widget annotation per ISO 32000-1:2008, 14.8.4.5, Table 340 + roleAttribute != null || hasOneInteractiveChild == true + + The Form element omits a Role attribute and doesn't have only one child identifying the widget annotation + + + + + + + + + Links shall be tagged according to ISO 32000-1:2008, 14.8.4.4.2, Link Element + structParentStandardType == 'Link' || structParentStandardType == 'Reference' || isOutsideCropBox == true || (F & 2) == 2 + + A Link annotation is artifact or is nested within %1 tag (standard type = %2) instead of Link or Reference + + structParentType + structParentStandardType + + + + + + + + + In the media clip data dictionary, the optional CT key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required + CT != null + + CT key is missing from the media clip data dictionary + + + + + + + + + In the media clip data dictionary, the optional Alt key (ISO 32000-1:2008, 13.2.4.2, Table 274) is required + hasCorrectAlt == true + + Alt key (value %1) is missing from the media clip data dictionary or has incorrect value + + Alt + + + + + + + + + PrinterMark annotations, if present, shall be considered Incidental Artifacts, as if they are hidden page elements as defined in ISO 32000-1:2008, 14.8.2.2.3 + (structParentType == null || isArtifact == true) || isOutsideCropBox == true || (F & 2) == 2 + + A PrinterMark annotation is included in logical structure + + + + + + + + + A conforming file shall not contain any reference XObjects + containsRef == false + + The document contains a reference XObject (Ref key in the form XObject dictionary) + + + + + + + The content of Form XObjects shall be incorporated into structure elements according to ISO 32000-1:2008, 14.7.2 + isUniqueSemanticParent == true + + Form XObject contains MCIDs and is referenced more than once + + + + + + + + + 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 is Identity-H or Identity-V, any values of Registry, Ordering, and Supplement may be used in the CIDSystemInfo entry of the CIDFont. - Otherwise, the corresponding Registry and Ordering strings 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 Supplement key in the CIDSystemInfo dictionary of the CMap + cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) + + CIDSystemInfo entries the CIDFont and CMap dictionaries of a Type 0 font are not compatible (CIDSystemInfo Ordering = %1, CMap Ordering = %2, CIDSystemInfo Registry = %3, CMap Registry = %4, CIDSystemInfo Supplement = %5, CMap Supplement = %6) + + CIDFontOrdering + CMapOrdering + CIDFontRegistry + CMapRegistry + CIDFontSupplement + CMapSupplement + + + + + + + ISO 32000-1:2008, 9.7.4, Table 117 requires that 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-1:2008, 9.7.4, Table 117 + Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 + + A Type 2 CIDFont dictionary has missing or invalid CIDToGIDMap entry + + + + + + + + + All CMaps used within a PDF/UA file, except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118, shall be embedded in that file as described in ISO 32000-1:2008, 9.7.5 + 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" || embeddedFile_size == 1 + + A non-standard CMap %1 is not embedded + + CMapName + + + + + + + + + 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 + WMode == dictWMode + + WMode entry (value %1) in the embedded CMap and in the CMap dictionary (value %2) are not identical + + WMode + dictWMode + + + + + + + A CMap shall not reference any other CMap except those listed in ISO 32000-1:2008, 9.7.5.2, Table 118 + 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" + + A CMap references another non-standard CMap %1 + + CMapName + + + + + + + + + The font programs for all fonts used for rendering within a conforming file shall be embedded within that file, as defined in ISO 32000-1:2008, 9.9 + Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 + + The font program is not embedded + + + + + + + + + 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 according to ISO 32000-1:2008, 9.6.6.4 without the use of a non-standard mapping chosen by the conforming processor + renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true + + Not all glyphs referenced for rendering are present in the embedded font program + + + + + + + + + + If the FontDescriptor dictionary of an embedded Type 1 font contains a CharSet string, then it shall list the character names of all glyphs present in the font program, regardless of whether a glyph in the font is referenced or used by the PDF or not + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || CharSet == null || charSetListsAllGlyphs == true + + A CharSet entry in the Descriptor dictionary of a Type1 font incorrectly lists glyphs present in the font program + + + + + + + If the FontDescriptor dictionary of an embedded CID font contains a CIDSet stream, then it shall identify all CIDs which are present in the font program, regardless of whether a CID in the font is referenced or used by the PDF or not + fontFile_size == 0 || fontName.search(/[A-Z]{6}\+/) != 0 || containsCIDSet == false || cidSetListsAllGlyphs == true + + A CIDSet entry in the Font descriptor does not correctly identify all glyphs present in the embedded font subset + + + + + + + For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent + renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 + + Glyph width %1 in the embedded font program is not consistent with the Widths entry of the font dictionary (value %2) + + widthFromFontProgram + widthFromDictionary + + + + + + + For all non-symbolic TrueType fonts used for rendering, the embedded TrueType font program shall contain one or several non-symbolic cmap entries such that all necessary glyph lookups can be carried out + isSymbolic == true || (cmap30Present == true ? nrCmaps > 1 : nrCmaps > 0) + + The embedded font program for a non-symbolic TrueType font does not contain non-symbolic cmap entries + + + + + + + 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 + isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) + + A non-symbolic TrueType font encoding does not define a correct mapping to the Adobe Glyph List (Encoding = %1, Encoding entry contains a Differences = %2, Differences are Unicode compliant = %3) + + Encoding + containsDifferences + differencesAreUnicodeCompliant + + + + + + + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary + isSymbolic == false || Encoding == null + + A symbolic TrueType font specifies an Encoding entry in its dictionary + + + + + + + The 'cmap' table in the embedded font program for a symbolic TrueType font shall contain either exactly one encoding or it shall contain, at least, the Microsoft Symbol (3,0 - Platform ID=3, Encoding ID=0) encoding + isSymbolic == false || nrCmaps == 1 || cmap30Present == true + + The embedded font program for a symbolic TrueType font contains %1 cmap subtables and does not contain Microsoft Symbol (3,0 – Platform ID=3, Encoding ID=0) + + nrCmaps + + + + + + + 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 ISO 14289-1, 7.21.7 + toUnicode != null + + The glyph can not be mapped to Unicode + + + + + + + + + The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + + The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + + + + + + + A PDF/UA compliant document 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 + name != ".notdef" + + The document contains a reference to the .notdef glyph + + + + + + + Text should not contain repeated non space characters + isNonSpace == false || numberOfRepeatedCharacters < 5 + + Text contains %1 repeated non space characters + + numberOfRepeatedCharacters + + + + + + + Text should not contain repeated space characters + isNonSpace == true || numberOfRepeatedCharacters < 3 + + Text contains %1 repeated space characters + + numberOfRepeatedCharacters + + + + + + + Pages shall have the same orientation + orientation == 'Square' || gMostCommonPageOrientation == orientation + + Page %1 has different orientation + + pageNumber + 1 + + + + + + + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 + textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + contrastRatio = %1 + + contrastRatio + + + + + + + Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality + textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + textSize = %1 + + textSize + + + + + + + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page + page != lastPage || hasBBox == true + + "Figure" structure element on a single page with no bounding box + + + + + + + + + Links shall contain an alternate description via their Contents or Alt keys or in the text value + (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false) + + A link annotation does not include an alternate description in the Contents or Alt Keys or in the text value + + + + + + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + + + + Table shouldn't have merged cells + ColSpan == 1 && RowSpan == 1 + + Table has merged cells + + + + + + + Redundant paragraph + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant span + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant heading + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Redundant numbered heading + correctType != null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + TOCI shall contain one or more text lines + errorCodes.split(',').filter(elem => elem == 1000).length == 0 + + TOCI doesn't have a text + + + + structureID + + + + + + + + null + mostCommonOrientation + + + 0 + Lang_size + + + false + true + + + false + true + + +
diff --git a/PDF_UA/WCAG-21.xml b/PDF_UA/WCAG-22.xml similarity index 91% rename from PDF_UA/WCAG-21.xml rename to PDF_UA/WCAG-22.xml index fadb548d..9328954a 100644 --- a/PDF_UA/WCAG-21.xml +++ b/PDF_UA/WCAG-22.xml @@ -1,13 +1,13 @@ - -
- WCAG 2.1 validation profile - Extra rules for WCAG 2.1 validation in addition to PDF/UA-1 + +
+ WCAG 2.2 validation profile + Extra rules for WCAG 2.2 validation in addition to PDF/UA-1
- + Text should not contain repeated non space characters isNonSpace == false || numberOfRepeatedCharacters < 5 @@ -19,7 +19,7 @@ - + Text should not contain repeated space characters isNonSpace == true || numberOfRepeatedCharacters < 3 @@ -31,7 +31,7 @@ - + Underlined text isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 @@ -41,7 +41,7 @@ - + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 @@ -51,7 +51,7 @@ - + Pages shall have the same orientation orientation == 'Square' || gMostCommonPageOrientation == orientation @@ -63,7 +63,7 @@ - + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : (contrastRatio >= 4.5)) || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 @@ -75,7 +75,7 @@ - + Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 @@ -87,7 +87,7 @@ - + Document should not contain illegible font fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) @@ -97,7 +97,7 @@ - + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page page != lastPage || hasBBox == true @@ -109,7 +109,7 @@ - + Links shall contain an alternate description via their Contents or Alt keys or in the text value (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || (Alt != null && Alt != '' && altIsLink == false) @@ -121,7 +121,7 @@ - + Table shouldn't have merged cells ColSpan == 1 && RowSpan == 1 @@ -131,7 +131,7 @@ - + Table shouldn't have merged cells ColSpan == 1 && RowSpan == 1 @@ -141,7 +141,7 @@ - + Table shouldn't have merged cells colSpan == 1 && rowSpan == 1 @@ -155,7 +155,7 @@ - + Incorrect use of a paragraph correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' @@ -168,7 +168,7 @@ - + Incorrect use of a span correctSemanticScore >= 0.75 || correctType == null @@ -181,7 +181,7 @@ - + Incorrect use of a heading correctSemanticScore >= 0.75 || correctType == null @@ -194,7 +194,7 @@ - + Incorrect use of a numbered heading correctSemanticScore >= 0.75 || correctType == null @@ -207,7 +207,7 @@ - + Incorrect table element hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) @@ -221,7 +221,7 @@ - + Missing table element hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) @@ -235,7 +235,7 @@ - + This structure element should be a heading instead of a paragraph correctType != 'H' && correctType != 'Hn' @@ -248,7 +248,7 @@ - + This structure element should be a span instead of a paragraph correctType != 'Span' @@ -261,7 +261,7 @@ - + This structure element should be a paragraph instead of a span correctType != 'P' @@ -274,7 +274,7 @@ - + This structure element should be a heading instead of a span correctType != 'H' && correctType != 'Hn' @@ -287,7 +287,7 @@ - + This structure element should be a paragraph instead of a heading correctType != 'P' @@ -300,7 +300,7 @@ - + This structure element should be a paragraph instead of a numbered heading correctType != 'P' @@ -313,7 +313,7 @@ - + Redundant paragraph correctType != null @@ -326,7 +326,7 @@ - + Redundant span correctType != null @@ -339,7 +339,7 @@ - + Redundant heading correctType != null @@ -352,7 +352,7 @@ - + Redundant numbered heading correctType != null @@ -365,7 +365,7 @@ - + This structure element should be a caption instead of a paragraph correctType != 'Caption' @@ -378,7 +378,7 @@ - + The structure type and attributes of list elements shall be semantically appropriate hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) @@ -392,7 +392,7 @@ - + The structure type and attributes of a list shall be semantically appropriate hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' @@ -405,7 +405,7 @@ - + The structure type and attributes of a list item shall be semantically appropriate hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' @@ -418,7 +418,7 @@ - + The structure type and attributes of a list body shall be semantically appropriate hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' @@ -431,7 +431,7 @@ - + A table element is incorrectly tagged as a list element or a list has the wrong numbering hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') @@ -444,7 +444,7 @@ - + This structure element should be a part or several different paragraphs instead of a paragraph correctType != 'Part' || correctSemanticScore < 0.75 @@ -457,7 +457,7 @@ - + The structure type and attributes of a TOCI shall be semantically appropriate correctType != 'TOCI' || standardType == 'TOCI' @@ -471,7 +471,7 @@ - + TOCI shall contain one or more text lines errorCodes.split(',').filter(elem => elem == 1000).length == 0 @@ -485,7 +485,7 @@ - + TOCI page label shall match the destination page errorCodes.split(',').filter(elem => elem == 1002).length == 0 @@ -499,7 +499,7 @@ - + TOCI shall have a right alignment that matches a right alignment of other TOCIs errorCodes.split(',').filter(elem => elem == 1003).length == 0 @@ -513,7 +513,7 @@ - + This list and neighbor list(s) should be tagged as one list errorCodes.split(',').filter(elem => elem == 1200).length == 0 @@ -527,7 +527,7 @@ - + This TOC and neighbor TOC(s) should be tagged as one TOC errorCodes.split(',').filter(elem => elem == 1006).length == 0 @@ -541,7 +541,7 @@ - + The number of rows of this table does not match the number of rows of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1104).length == 0 @@ -555,7 +555,7 @@ - + The number of columns of this table does not match the number of columns of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1105).length == 0 @@ -569,7 +569,7 @@ - + The row span of this table cell does not match the row span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1106).length == 0 @@ -583,7 +583,7 @@ - + The column span of this table cell does not match the column span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1107).length == 0 @@ -597,7 +597,7 @@ - + This content should be tagged as a list item false @@ -611,7 +611,7 @@ - + This cell is below than some cells in the next row errorCodes.split(',').filter(elem => elem == 1100).length == 0 @@ -625,7 +625,7 @@ - + This cell is above than some cells in the previous row errorCodes.split(',').filter(elem => elem == 1101).length == 0 @@ -639,7 +639,7 @@ - + This cell is to the right of some cells in the next column errorCodes.split(',').filter(elem => elem == 1102).length == 0 @@ -653,7 +653,7 @@ - + This cell is to the left of some cells in the previous column errorCodes.split(',').filter(elem => elem == 1103).length == 0 @@ -667,7 +667,7 @@ - + This structure element should be a table cell instead of a table header correctType != 'TD' @@ -681,7 +681,7 @@ - + TOCI text should be presented in the document errorCodes.split(',').filter(elem => elem == 1007).length == 0 @@ -695,7 +695,7 @@ - + TOCI text should be presented on a destination page errorCodes.split(',').filter(elem => elem == 1008).length == 0 @@ -711,7 +711,7 @@ - + TOCI should have a destination errorCodes.split(',').filter(elem => elem == 1009).length == 0 @@ -725,7 +725,7 @@ - + TOCI should have a correct page label errorCodes.split(',').filter(elem => elem == 1010).length == 0 @@ -739,7 +739,7 @@ - + TOCI should have a correct numbering errorCodes.split(',').filter(elem => elem == 1011).length == 0 @@ -755,7 +755,7 @@ - + List should contain list items errorCodes.split(',').filter(elem => elem == 1201).length == 0 @@ -765,7 +765,7 @@ - + The structure type and attributes of a list item shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1202).length == 0 @@ -775,7 +775,7 @@ - + This structure element should be a note instead of a span correctType != 'Note' @@ -785,7 +785,7 @@ - + This structure element should be a note instead of a paragraph correctType != 'Note' @@ -795,7 +795,7 @@ - + The structure type and attributes of a heading shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1300).length == 0 diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml similarity index 87% rename from PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml rename to PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml index 072aa07e..938d7a9a 100644 --- a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml +++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t01.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 1.3 Adaptable - 1.3.1 Info and Relationships - Repeated non space characters + WCAG 2.2 - 1.3 Adaptable - 1.3.1 Info and Relationships - Repeated non space characters Text should not contain repeated non space characters
- + Text should not contain repeated non space characters isNonSpace == false || numberOfRepeatedCharacters < 5 diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml similarity index 87% rename from PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml rename to PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml index 4a267235..a7941b37 100644 --- a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml +++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t02.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 1.3 Adaptable - 1.3.1 Info and Relationships - Repeated space characters + WCAG 2.2 - 1.3 Adaptable - 1.3.1 Info and Relationships - Repeated space characters Text should not contain repeated space characters
- + Text should not contain repeated space characters isNonSpace == true || numberOfRepeatedCharacters < 3 diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml similarity index 85% rename from PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml rename to PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml index e8d4b206..a46e6e12 100644 --- a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml +++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t03.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 1.3 Adaptable - 1.3.1 Info and Relationships - Underlined text + WCAG 2.2 - 1.3 Adaptable - 1.3.1 Info and Relationships - Underlined text Underlined text
- + Underlined text isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml similarity index 88% rename from PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml rename to PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml index 47d31e2f..33c3c6eb 100644 --- a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml +++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.1 Info and Relationships/verapdf-profile-1-3-1-t04.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 1.3 Adaptable - 1.3.1 Info and Relationships - Different text style + WCAG 2.2 - 1.3 Adaptable - 1.3.1 Info and Relationships - Different text style If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element
- + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml similarity index 88% rename from PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml rename to PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml index 64b7216c..28a3bc14 100644 --- a/PDF_UA/WCAG/2.1/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml +++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.3 Adaptable/1.3.4 Orientation/verapdf-profile-1-3-4-t01.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 1.3 Adaptable - 1.3.4 Orientation - Single display orientation + WCAG 2.2 - 1.3 Adaptable - 1.3.4 Orientation - Single display orientation Pages shall have the same orientation
- + Pages shall have the same orientation orientation == 'Square' || gMostCommonPageOrientation == orientation diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml similarity index 88% rename from PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml rename to PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml index 60bca263..db226f18 100644 --- a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml +++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.10 Reflow/verapdf-profile-1-4-10-t01.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 1.4 Distinguishable - 1.4.10 Reflow - Bounding box of figure + WCAG 2.2 - 1.4 Distinguishable - 1.4.10 Reflow - Bounding box of figure Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page
- + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page page != lastPage || hasBBox == true diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml similarity index 90% rename from PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml rename to PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml index c68296c5..ebea8a44 100644 --- a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml +++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.3 Contrast (Minimum)/verapdf-profile-1-4-3-t01.xml @@ -1,14 +1,14 @@ - +
- WCAG 2.1 - 1.4 Distinguishable - 1.4.3 Contrast (Minimum) + WCAG 2.2 - 1.4 Distinguishable - 1.4.3 Contrast (Minimum) The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1
- + The visual presentation of text and images of text has a contrast ratio of at least 4.5:1. Large-scale text and images of large-scale text have a contrast ratio of at least 3:1 textSize < 4.5 || ((textSize >= 18.0 || (textSize >= 14.0 && textWeight >= 700.0)) ? (contrastRatio >= 3) : diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml similarity index 89% rename from PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml rename to PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml index 9dd80133..9633453e 100644 --- a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml +++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.4 Resize Text/verapdf-profile-1-4-4-t01.xml @@ -1,14 +1,14 @@ - +
- WCAG 2.1 - 1.4 Distinguishable - 1.4.4 Resize Text - Small text + WCAG 2.2 - 1.4 Distinguishable - 1.4.4 Resize Text - Small text Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality
- + Font size is too small: text may not be resized without assistive technology up to 200 percent without loss of content or functionality textSize >= 4.5 || isWhiteSpaceChunk == true || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 diff --git a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml similarity index 95% rename from PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml rename to PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml index f67b925a..b91cf040 100644 --- a/PDF_UA/WCAG/2.1/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml +++ b/PDF_UA/WCAG/2.2/1 Perceivable/1.4 Distinguishable/1.4.8 Visual Presentation/verapdf-profile-1-4-8-t01.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 1.4 Distinguishable - 1.4.8 Visual Presentation - Illegible font + WCAG 2.2 - 1.4 Distinguishable - 1.4.8 Visual Presentation - Illegible font Document should not contain illegible font
- + Document should not contain illegible font fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && diff --git a/PDF_UA/WCAG/2.1/2. Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml b/PDF_UA/WCAG/2.2/2 Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml similarity index 90% rename from PDF_UA/WCAG/2.1/2. Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml rename to PDF_UA/WCAG/2.2/2 Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml index efc98c04..f5a15115 100644 --- a/PDF_UA/WCAG/2.1/2. Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml +++ b/PDF_UA/WCAG/2.2/2 Operable/2.4 Navigable/2.4.9 Link Purpose (Link Only)/verapdf-profile-2-4-9-t01.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 2.4 Navigable - 2.4.9 Link Purpose (Link Only) - Alternate description of Link + WCAG 2.2 - 2.4 Navigable - 2.4.9 Link Purpose (Link Only) - Alternate description of Link Links shall contain an alternate description via their Contents or Alt keys or in the text value
- + Links shall contain an alternate description via their Contents or Alt keys or in the text value (Contents != null && Contents != '' && contentsIsLink == false) || isOutsideCropBox == true || (F & 2) == 2 || (textValue != null && textValue != '' && textValueIsLink == false) || diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml similarity index 84% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml index 1ce82efa..e533355c 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t01.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells + WCAG 2.2 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells Table shouldn't have merged cells
- + Table shouldn't have merged cells ColSpan == 1 && RowSpan == 1 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml similarity index 84% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml index 6a19b0d1..2987c4c0 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t02.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells + WCAG 2.2 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells Table shouldn't have merged cells
- + Table shouldn't have merged cells ColSpan == 1 && RowSpan == 1 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml index 9cc292e2..00c3017d 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.1 Parsing/verapdf-profile-4-1-1-t03.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells + WCAG 2.2 - 4.1 Compatible - 4.1.1 Parsing - Merged table cells Table shouldn't have merged cells
- + Table shouldn't have merged cells colSpan == 1 && rowSpan == 1 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml similarity index 86% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml index 5c5ab6bc..b861ac14 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t01.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph Incorrect use of a paragraph
- + Incorrect use of a paragraph correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml similarity index 86% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml index e788d971..bdaaec98 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t02.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Span + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Span Incorrect use of a span
- + Incorrect use of a span correctSemanticScore >= 0.75 || correctType == null diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml similarity index 86% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml index d589ecde..55514da7 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t04.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading Incorrect use of a heading
- + Incorrect use of a heading correctSemanticScore >= 0.75 || correctType == null diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml similarity index 86% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml index c14acd01..a059f840 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t05.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Numbered heading + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Numbered heading Incorrect use of a numbered heading
- + Incorrect use of a numbered heading correctSemanticScore >= 0.75 || correctType == null diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml similarity index 91% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml index e38502ec..48c16a7c 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t08.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table element + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table element Incorrect table element
- + Incorrect table element hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml similarity index 91% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml index de1e5c3e..5f388e60 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t09.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Missing table element + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Missing table element Missing table element
- + Missing table element hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml index 171eb975..36d1c20d 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t10.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading instead of paragraph + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading instead of paragraph This structure element should be a heading instead of a paragraph
- + This structure element should be a heading instead of a paragraph correctType != 'H' && correctType != 'Hn' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml index 5aae6ccd..21ecb8a6 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t11.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Span instead of paragraph + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Span instead of paragraph This structure element should be a span instead of a paragraph
- + This structure element should be a span instead of a paragraph correctType != 'Span' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml index b36d7410..a55d749a 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t12.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of span + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of span This structure element should be a paragraph instead of a span
- + This structure element should be a paragraph instead of a span correctType != 'P' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml index 6593d13f..c15cde32 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t13.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading instead of span + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading instead of span This structure element should be a heading instead of a span
- + This structure element should be a heading instead of a span correctType != 'H' && correctType != 'Hn' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml index ab1f8951..d87c0be3 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t14.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of heading + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of heading This structure element should be a paragraph instead of a heading
- + This structure element should be a paragraph instead of a heading correctType != 'P' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml index 7742c7c7..7af45418 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t15.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of numbered heading + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph instead of numbered heading This structure element should be a paragraph instead of a numbered heading
- + This structure element should be a paragraph instead of a numbered heading correctType != 'P' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml similarity index 86% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml index 98fe4c38..1caed045 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t16.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant paragraph + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant paragraph Redundant paragraph
- + Redundant paragraph correctType != null diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml similarity index 85% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml index dde2a174..78aab42e 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t17.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant span + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant span Redundant span
- + Redundant span correctType != null diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml similarity index 86% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml index 979d84df..1f091526 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t18.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant heading + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant heading Redundant heading
- + Redundant heading correctType != null diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml similarity index 86% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml index 93834f41..6098bbec 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t19.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant numbered heading + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Redundant numbered heading Redundant numbered heading
- + Redundant numbered heading correctType != null diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml index 6fa23acf..19bf368f 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t20.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Caption instead of paragraph + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Caption instead of paragraph This structure element should be a caption instead of a paragraph
- + This structure element should be a caption instead of a paragraph correctType != 'Caption' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml similarity index 90% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml index dd2f4358..b9836fdf 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t21.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List elements + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List elements The structure type and attributes of list elements shall be semantically appropriate
- + The structure type and attributes of list elements shall be semantically appropriate hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml similarity index 90% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml index f6e09221..e313fd9c 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t22.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List elements + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List elements The structure type and attributes of a list shall be semantically appropriate
- + The structure type and attributes of a list shall be semantically appropriate hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml similarity index 90% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml index 68412dff..97bc74a9 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t23.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item The structure type and attributes of a list item shall be semantically appropriate
- + The structure type and attributes of a list item shall be semantically appropriate hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml similarity index 90% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml index 11b6f380..62354c5e 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t25.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List body + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List body The structure type and attributes of a list body shall be semantically appropriate
- + The structure type and attributes of a list body shall be semantically appropriate hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml similarity index 90% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml index 0617db55..825f657f 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t26.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List A table element is incorrectly tagged as a list element or a list has the wrong numbering
- + A table element is incorrectly tagged as a list element or a list has the wrong numbering hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml index efeee21d..bc8356c9 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t27.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Paragraph This structure element should be a part or several different paragraphs instead of a paragraph
- + This structure element should be a part or several different paragraphs instead of a paragraph correctType != 'Part' || correctSemanticScore < 0.75 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml index 7dc2498b..7338fa3b 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t28.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI The structure type and attributes of a TOCI shall be semantically appropriate
- + The structure type and attributes of a TOCI shall be semantically appropriate correctType != 'TOCI' || standardType == 'TOCI' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml index 66fdd4bc..c8c7fe81 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t29.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI without text + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI without text TOCI shall contain one or more text lines
- + TOCI shall contain one or more text lines errorCodes.split(',').filter(elem => elem == 1000).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml similarity index 89% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml index 3aea89a4..16778b69 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t31.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI page + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI page TOCI page label shall match the destination page
- + TOCI page label shall match the destination page errorCodes.split(',').filter(elem => elem == 1002).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml index 8d5bf38f..e31ed16d 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t32.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Right alignment of TOCIs + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Right alignment of TOCIs TOCI shall have a right alignment that matches a right alignment of other TOCIs
- + TOCI shall have a right alignment that matches a right alignment of other TOCIs errorCodes.split(',').filter(elem => elem == 1003).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml index 455d97ce..0035d621 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t34.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List tagging + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List tagging This list and neighbor list(s) should be tagged as one list
- + This list and neighbor list(s) should be tagged as one list errorCodes.split(',').filter(elem => elem == 1200).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml index 474f00fb..aa78c507 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t35.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOC tagging + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOC tagging This TOC and neighbor TOC(s) should be tagged as one TOC
- + This TOC and neighbor TOC(s) should be tagged as one TOC errorCodes.split(',').filter(elem => elem == 1006).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml similarity index 90% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml index 3aff760b..323ea292 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t36.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table rows + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table rows The number of rows of this table does not match the number of rows of the visual representation of this table
- + The number of rows of this table does not match the number of rows of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1104).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml similarity index 91% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml index 96103928..073c687f 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t37.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table columns + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table columns The number of columns of this table does not match the number of columns of the visual representation of this table
- + The number of columns of this table does not match the number of columns of the visual representation of this table errorCodes.split(',').filter(elem => elem == 1105).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml similarity index 90% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml index e559d5ff..e2933e6b 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t38.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell row span + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell row span The row span of this table cell does not match the row span of the visual representation of this table cell
- + The row span of this table cell does not match the row span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1106).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml similarity index 91% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml index 218632a7..6ae927de 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t39.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell column span + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell column span The column span of this table cell does not match the column span of the visual representation of this table cell
- + The column span of this table cell does not match the column span of the visual representation of this table cell errorCodes.split(',').filter(elem => elem == 1107).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml index 626e6a38..3083f180 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t40.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item This content should be tagged as a list item
- + This content should be tagged as a list item false diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml index d36e8f90..bd039ebf 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t41.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position This cell is below than some cells in the next row
- + This cell is below than some cells in the next row errorCodes.split(',').filter(elem => elem == 1100).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml index f6740533..b918a528 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t42.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position This cell is above than some cells in the previous row
- + This cell is above than some cells in the previous row errorCodes.split(',').filter(elem => elem == 1101).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml index c65db219..2d30c81c 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t43.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position This cell is to the right of some cells in the next column
- + This cell is to the right of some cells in the next column errorCodes.split(',').filter(elem => elem == 1102).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml index 037f48b8..fff6e382 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t44.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell position This cell is to the left of some cells in the previous column
- + This cell is to the left of some cells in the previous column errorCodes.split(',').filter(elem => elem == 1103).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml index 34dcf20b..5101a461 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t45.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Table cell This structure element should be a table cell instead of a table header
- + This structure element should be a table cell instead of a table header correctType != 'TD' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml index 2c81dd64..7a8a53a1 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t46.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI text on document + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI text on document TOCI text should be presented in the document
- + TOCI text should be presented in the document errorCodes.split(',').filter(elem => elem == 1007).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml similarity index 91% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml index d7354ca0..2b0df8ec 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t47.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI text on page + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI text on page TOCI text should be presented on a destination page
- + TOCI text should be presented on a destination page errorCodes.split(',').filter(elem => elem == 1008).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml index 0b7079ba..7b151506 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t48.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Destination of TOCI + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Destination of TOCI TOCI should have a destination
- + TOCI should have a destination errorCodes.split(',').filter(elem => elem == 1009).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml similarity index 88% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml index 44e3d65c..5b49e6d6 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t49.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Page label of TOCI + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Page label of TOCI TOCI should have a correct page label
- + TOCI should have a correct page label errorCodes.split(',').filter(elem => elem == 1010).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml similarity index 90% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml index 438a8e9e..c721d360 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t50.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI numbering + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - TOCI numbering TOCI should have a correct numbering
- + TOCI should have a correct numbering errorCodes.split(',').filter(elem => elem == 1011).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml similarity index 85% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml index 972db2d5..d13d8037 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t51.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List without list items + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List without list items List should contain list items
- + List should contain list items errorCodes.split(',').filter(elem => elem == 1201).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml similarity index 86% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml index afc6a6e1..c3af2954 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t52.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - List item The structure type and attributes of a list item shall be semantically appropriate
- + The structure type and attributes of a list item shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1202).length == 0 diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml similarity index 85% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml index 2d3d8be3..4392523e 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t53.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Note instead of span + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Note instead of span This structure element should be a note instead of a span
- + This structure element should be a note instead of a span correctType != 'Note' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml similarity index 85% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml index 5de44b49..aa2ff35f 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t54.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Note instead of paragraph + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Note instead of paragraph This structure element should be a note instead of a paragraph
- + This structure element should be a note instead of a paragraph correctType != 'Note' diff --git a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml similarity index 87% rename from PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml rename to PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml index 3149eb5b..938b5ca6 100644 --- a/PDF_UA/WCAG/2.1/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml +++ b/PDF_UA/WCAG/2.2/4 Robust/4.1 Compatible/4.1.2 Name, Role, Value/verapdf-profile-4-1-2-t55.xml @@ -1,13 +1,13 @@ - +
- WCAG 2.1 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading + WCAG 2.2 - 4.1 Compatible - 4.1.2 Name, Role, Value - Heading The structure type and attributes of a heading shall be semantically appropriate
- + The structure type and attributes of a heading shall be semantically appropriate errorCodes.split(',').filter(elem => elem == 1300).length == 0 diff --git a/README.md b/README.md index 66b24b6c..fe9edde6 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ The repository contains all validation profiles supported by veraPDF. They are s The [PDF_A](https://github.com/veraPDF/veraPDF-validation-profiles/tree/integration/PDF_A) folder contains all rules for PDF/A validation against all PDF/A parts (ISO 19005) and conformance levels. -The [PDF_UA](https://github.com/veraPDF/veraPDF-validation-profiles/tree/integration/PDF_UA) folder holds all rules and validation profiles for PDF/UA-1 validation, as well as validation of parent-child relationships in Tagged PDF structure tree for ISO 32000-1, ISO 32000-2 and ISO 32005. Finally, this folder also contains rules and validation profiles for WCAG 2.1. This is work in progress and is in the experimental stage. +The [PDF_UA](https://github.com/veraPDF/veraPDF-validation-profiles/tree/integration/PDF_UA) folder holds all rules and validation profiles for PDF/UA-1 validation, as well as validation of parent-child relationships in Tagged PDF structure tree for ISO 32000-1, ISO 32000-2 and ISO 32005. Finally, this folder also contains rules and validation profiles for WCAG 2.2. This is work in progress and is in the experimental stage. See [Wiki pages](https://github.com/veraPDF/veraPDF-validation-profiles/wiki) for the documentation on the profile syntax and the details for each rule. From 628d68dda9e8a9ad614d641e08f4e79c93ac8a26 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 13 Dec 2023 13:21:21 +0000 Subject: [PATCH 502/557] Add WCAG2.2 Machine profile --- PDF_UA/PDFUA-2-ISO32005.xml | 11 ++++++----- PDF_UA/PDFUA-2.xml | 11 ++++++----- PDF_UA/WCAG-22-Complete.xml | 2 +- PDF_UA/WCAG-22-Machine.xml | 2 +- PDF_UA/WCAG-22.xml | 2 +- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 51148ae9..167a561a 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -661,16 +661,17 @@ - + - Text strings intended to be human readable shall not use the Unicode PUA - containsPUA == false + 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 + gContainsConfigs == false || (Name != null && Name.length() > 0) - Text string intended to be human readable uses Unicode PUA + Missing or empty Name entry of the optional content configuration dictionary - + + diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 48ce5d64..fe182410 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -661,16 +661,17 @@ - + - Text strings intended to be human readable shall not use the Unicode PUA - containsPUA == false + 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 + gContainsConfigs == false || (Name != null && Name.length() > 0) - Text string intended to be human readable uses Unicode PUA + Missing or empty Name entry of the optional content configuration dictionary - + + diff --git a/PDF_UA/WCAG-22-Complete.xml b/PDF_UA/WCAG-22-Complete.xml index 77451e43..f87e333b 100644 --- a/PDF_UA/WCAG-22-Complete.xml +++ b/PDF_UA/WCAG-22-Complete.xml @@ -1,6 +1,6 @@ -
+
WCAG-2.2-Complete validation profile Validation rules against WCAG 2.2 and ISO 14289-1:2014
diff --git a/PDF_UA/WCAG-22-Machine.xml b/PDF_UA/WCAG-22-Machine.xml index 814785df..e7dc30dc 100644 --- a/PDF_UA/WCAG-22-Machine.xml +++ b/PDF_UA/WCAG-22-Machine.xml @@ -1,6 +1,6 @@ -
+
WCAG 2.2 machine validation profile Machine rules for WCAG 2.2 validation
diff --git a/PDF_UA/WCAG-22.xml b/PDF_UA/WCAG-22.xml index 9328954a..63c4edd4 100644 --- a/PDF_UA/WCAG-22.xml +++ b/PDF_UA/WCAG-22.xml @@ -1,6 +1,6 @@ -
+
WCAG 2.2 validation profile Extra rules for WCAG 2.2 validation in addition to PDF/UA-1
From b5d02cd1ad6d6d5b5383f18d180053077b814617 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 14 Dec 2023 18:01:25 +0300 Subject: [PATCH 503/557] PDF/UA-2. Add rule 8.2.5.27-1 --- .../verapdf-profile-8-2-5-27-t01.xml | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml new file mode 100644 index 00000000..3ea7ca41 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.27 Caption - Caption index + When present, the Caption element shall be the first or the last child of the structure element +
+ + + + + When present, the Caption element shall be the first or the last child of the structure element + kidsStandardTypes.indexOf('&Caption&') < 0 + + Structure element %1 contains Caption as its %2 child instead of first or last one + + objectKey + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + + + +
From 195fe3f71e6fc28fed3d5789a330556ed98a08de Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Thu, 14 Dec 2023 15:04:09 +0000 Subject: [PATCH 504/557] PDF/UA-2. Add rule 8.2.5.27-1 --- PDF_UA/PDFUA-2-ISO32005.xml | 13 +++++++++++++ PDF_UA/PDFUA-2.xml | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 167a561a..daaea5bb 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -374,6 +374,19 @@ + + + When present, the Caption element shall be the first or the last child of the structure element + kidsStandardTypes.indexOf('&Caption&') < 0 + + Structure element %1 contains Caption as its %2 child instead of first or last one + + objectKey + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + 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 diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index fe182410..034c42c0 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -374,6 +374,19 @@ + + + When present, the Caption element shall be the first or the last child of the structure element + kidsStandardTypes.indexOf('&Caption&') < 0 + + Structure element %1 contains Caption as its %2 child instead of first or last one + + objectKey + kidsStandardTypes.split('&').slice(1).findIndex(elem => elem == 'Caption') + 2 + + + + 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 From 16488d962c6cf82a392d3f363860df67e3c03bd8 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 14 Dec 2023 23:19:31 +0300 Subject: [PATCH 505/557] PDF/UA. Add rules about struct tree root parent. PDF/UA-1(7.1-12),PDF/UA-2(8.2.1-2) --- .../1/7.1 General/verapdf-profile-7-1-t12.xml | 23 +++++++++++++++++++ .../verapdf-profile-8-2-1-t02.xml | 23 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml new file mode 100644 index 00000000..9d69f805 --- /dev/null +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-1:2014 - 7.1 General - Struct element parent + Struct element shall contain the P entry according to ISO 32000-1:2008, 14.7.2, Table 355 +
+ + + + + A struct element shall contain the P entry according to ISO 32000-1:2008, 14.7.2, Table 355 + containsParent == true + + A struct element does not contain the P entry + + + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml new file mode 100644 index 00000000..b32a78b7 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.1 General - Struct element parent + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 +
+ + + + + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 + containsParent == true + + A struct element does not contain the P entry + + + + + + + + +
From 5c998dcc4c876d0df91d1a482143471fc65ff4ce Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 15 Dec 2023 10:33:31 +0000 Subject: [PATCH 506/557] PDF/UA. Add rules about struct tree root parent. PDF/UA-1(7.1-12),PDF/UA-2(8.2.1-2) --- PDF_UA/PDFUA-1.xml | 12 ++++++++++++ PDF_UA/PDFUA-2-ISO32005.xml | 12 ++++++++++++ PDF_UA/PDFUA-2.xml | 12 ++++++++++++ PDF_UA/WCAG-22-Complete.xml | 12 ++++++++++++ PDF_UA/WCAG-22-Machine.xml | 12 ++++++++++++ 5 files changed, 60 insertions(+) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 82ec59da..c39b90d5 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -197,6 +197,18 @@
+ + + A struct element shall contain the P entry according to ISO 32000-1:2008, 14.7.2, Table 355 + containsParent == true + + A struct element does not contain the P entry + + + + + + Natural language in the Outline entries shall be determined diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index daaea5bb..fc90f1fa 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -76,6 +76,18 @@ + + + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 + containsParent == true + + A struct element does not contain the P entry + + + + + + Content that is not considered real shall be an artifact diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 034c42c0..0699ab72 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -76,6 +76,18 @@ + + + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 + containsParent == true + + A struct element does not contain the P entry + + + + + + Content that is not considered real shall be an artifact diff --git a/PDF_UA/WCAG-22-Complete.xml b/PDF_UA/WCAG-22-Complete.xml index f87e333b..cf7256f9 100644 --- a/PDF_UA/WCAG-22-Complete.xml +++ b/PDF_UA/WCAG-22-Complete.xml @@ -139,6 +139,18 @@ + + + A struct element shall contain the P entry according to ISO 32000-1:2008, 14.7.2, Table 355 + containsParent == true + + A struct element does not contain the P entry + + + + + + Natural language in the Outline entries shall be determined diff --git a/PDF_UA/WCAG-22-Machine.xml b/PDF_UA/WCAG-22-Machine.xml index e7dc30dc..0926ae7c 100644 --- a/PDF_UA/WCAG-22-Machine.xml +++ b/PDF_UA/WCAG-22-Machine.xml @@ -139,6 +139,18 @@ + + + A struct element shall contain the P entry according to ISO 32000-1:2008, 14.7.2, Table 355 + containsParent == true + + A struct element does not contain the P entry + + + + + + Natural language in the Outline entries shall be determined From 63650486f2bb6ae05d4655fba76974dd202fd99d Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 15 Dec 2023 17:04:35 +0300 Subject: [PATCH 507/557] Rename WCAG2.2 profiles --- .github/workflows/update-library-PDFUA-profiles-workflow.yml | 2 +- PDF_UA/{WCAG-22-Complete.xml => WCAG-2-2-Complete.xml} | 0 PDF_UA/{WCAG-22-Dev.xml => WCAG-2-2-Dev.xml} | 0 PDF_UA/{WCAG-22-Machine.xml => WCAG-2-2-Machine.xml} | 0 PDF_UA/{WCAG-22.xml => WCAG-2-2.xml} | 0 5 files changed, 1 insertion(+), 1 deletion(-) rename PDF_UA/{WCAG-22-Complete.xml => WCAG-2-2-Complete.xml} (100%) rename PDF_UA/{WCAG-22-Dev.xml => WCAG-2-2-Dev.xml} (100%) rename PDF_UA/{WCAG-22-Machine.xml => WCAG-2-2-Machine.xml} (100%) rename PDF_UA/{WCAG-22.xml => WCAG-2-2.xml} (100%) diff --git a/.github/workflows/update-library-PDFUA-profiles-workflow.yml b/.github/workflows/update-library-PDFUA-profiles-workflow.yml index 658e9476..be3ceac2 100644 --- a/.github/workflows/update-library-PDFUA-profiles-workflow.yml +++ b/.github/workflows/update-library-PDFUA-profiles-workflow.yml @@ -31,7 +31,7 @@ jobs: git-user: "Git User" git-commit-message: ${{ github.event.head_commit.message }} git-commit-sign-off: "false" - excludes: 1:2:WCAG:ISO-32000-1-Tagged.xml:ISO-32000-2-Tagged.xml:PDFUA-2-ISO32005.xml:ISO-32005-Tagged.xml:WCAG-22.xml:WCAG-22-Machine.xml:WCAG-22-Complete.xml:WCAG-22-Dev.xml:PDFA-1A.xml:PDFA-1B.xml:PDFA-2A.xml:PDFA-2B.xml:PDFA-2U.xml:PDFA-3A.xml:PDFA-3B.xml:PDFA-3U.xml:PDFA-4.xml:PDFA-4E.xml:PDFA-4F.xml:validationProfile.xsd + excludes: 1:2:WCAG:ISO-32000-1-Tagged.xml:ISO-32000-2-Tagged.xml:PDFUA-2-ISO32005.xml:ISO-32005-Tagged.xml:WCAG-2-2.xml:WCAG-2-2-Machine.xml:WCAG-2-2-Complete.xml:WCAG-2-2-Dev.xml:PDFA-1A.xml:PDFA-1B.xml:PDFA-2A.xml:PDFA-2B.xml:PDFA-2U.xml:PDFA-3A.xml:PDFA-3B.xml:PDFA-3U.xml:PDFA-4.xml:PDFA-4E.xml:PDFA-4F.xml:validationProfile.xsd - name: Notify slack if library wasn't updated if: failure() diff --git a/PDF_UA/WCAG-22-Complete.xml b/PDF_UA/WCAG-2-2-Complete.xml similarity index 100% rename from PDF_UA/WCAG-22-Complete.xml rename to PDF_UA/WCAG-2-2-Complete.xml diff --git a/PDF_UA/WCAG-22-Dev.xml b/PDF_UA/WCAG-2-2-Dev.xml similarity index 100% rename from PDF_UA/WCAG-22-Dev.xml rename to PDF_UA/WCAG-2-2-Dev.xml diff --git a/PDF_UA/WCAG-22-Machine.xml b/PDF_UA/WCAG-2-2-Machine.xml similarity index 100% rename from PDF_UA/WCAG-22-Machine.xml rename to PDF_UA/WCAG-2-2-Machine.xml diff --git a/PDF_UA/WCAG-22.xml b/PDF_UA/WCAG-2-2.xml similarity index 100% rename from PDF_UA/WCAG-22.xml rename to PDF_UA/WCAG-2-2.xml From d5707eb96c6a4ced28ad1ad710ca19c452117c44 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 18 Dec 2023 13:48:58 +0300 Subject: [PATCH 508/557] Fix PDF/UA-2 rule 8.2.1-2 --- .../8.2.1 General/verapdf-profile-8-2-1-t02.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml index b32a78b7..54902c92 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml @@ -6,7 +6,7 @@
- + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true From ff8bf5a82de2687d0dee05233bcf633f6264eae0 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 18 Dec 2023 10:50:48 +0000 Subject: [PATCH 509/557] Fix PDF/UA-2 rule 8.2.1-2 --- PDF_UA/PDFUA-2-ISO32005.xml | 2 +- PDF_UA/PDFUA-2.xml | 2 +- PDF_UA/WCAG-2-2-Machine.xml | 628 ++++++++++++++++++++++++++++++++++++ 3 files changed, 630 insertions(+), 2 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index fc90f1fa..56ea5356 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -76,7 +76,7 @@ - + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 0699ab72..d21b61d8 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -76,7 +76,7 @@ - + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true diff --git a/PDF_UA/WCAG-2-2-Machine.xml b/PDF_UA/WCAG-2-2-Machine.xml index 0926ae7c..c56f43b9 100644 --- a/PDF_UA/WCAG-2-2-Machine.xml +++ b/PDF_UA/WCAG-2-2-Machine.xml @@ -1299,6 +1299,26 @@ + + + Underlined text + isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 + + Underlined text is detected + + + + + + + If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element + hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 + + Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element + + + + Pages shall have the same orientation @@ -1335,6 +1355,16 @@ + + + Document should not contain illegible font + fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) + + Document contains illegible font + + + + Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page @@ -1379,6 +1409,178 @@ + + + Table shouldn't have merged cells + colSpan == 1 && rowSpan == 1 + + Table has merged cells + + + + structureID + + + + + + + Incorrect use of a paragraph + correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Incorrect use of a span + correctSemanticScore >= 0.75 || correctType == null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Incorrect use of a heading + correctSemanticScore >= 0.75 || correctType == null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Incorrect use of a numbered heading + correctSemanticScore >= 0.75 || correctType == null + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + Incorrect table element + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + Missing table element + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + This structure element should be a heading instead of a paragraph + correctType != 'H' && correctType != 'Hn' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a span instead of a paragraph + correctType != 'Span' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a span + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a heading instead of a span + correctType != 'H' && correctType != 'Hn' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a heading + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a paragraph instead of a numbered heading + correctType != 'P' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + Redundant paragraph @@ -1431,6 +1633,112 @@ + + + This structure element should be a caption instead of a paragraph + correctType != 'Caption' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of list elements shall be semantically appropriate + hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + The structure type and attributes of a list shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list item shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a list body shall be semantically appropriate + hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + A table element is incorrectly tagged as a list element or a list has the wrong numbering + hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + This structure element should be a part or several different paragraphs instead of a paragraph + correctType != 'Part' || correctSemanticScore < 0.75 + + score = %1, correct type = %2 + + correctSemanticScore + correctType + + + + + + + The structure type and attributes of a TOCI shall be semantically appropriate + correctType != 'TOCI' || standardType == 'TOCI' + + score = %1, correct type = %2, structure id = %3 + + correctSemanticScore + correctType + structureID + + + + TOCI shall contain one or more text lines @@ -1445,6 +1753,326 @@ + + + TOCI page label shall match the destination page + errorCodes.split(',').filter(elem => elem == 1002).length == 0 + + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] + + structureID + + + + + + + TOCI shall have a right alignment that matches a right alignment of other TOCIs + errorCodes.split(',').filter(elem => elem == 1003).length == 0 + + TOCI has a bad right alignment + + + + structureID + + + + + + + This list and neighbor list(s) should be tagged as one list + errorCodes.split(',').filter(elem => elem == 1200).length == 0 + + This list and neighbor list(s) should be tagged as one list + + + + structureID + + + + + + + This TOC and neighbor TOC(s) should be tagged as one TOC + errorCodes.split(',').filter(elem => elem == 1006).length == 0 + + This TOC and neighbor TOC(s) should be tagged as one TOC + + + + structureID + + + + + + + The number of rows of this table does not match the number of rows of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1104).length == 0 + + The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1] + structureID + + + + + + + The number of columns of this table does not match the number of columns of the visual representation of this table + errorCodes.split(',').filter(elem => elem == 1105).length == 0 + + The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1] + structureID + + + + + + + The row span of this table cell does not match the row span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1106).length == 0 + + The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1] + structureID + + + + + + + The column span of this table cell does not match the column span of the visual representation of this table cell + errorCodes.split(',').filter(elem => elem == 1107).length == 0 + + The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1] + structureID + + + + + + + This content should be tagged as a list item + false + + This content should be tagged as a list item + + + + structureID + + + + + + + This cell is below than some cells in the next row + errorCodes.split(',').filter(elem => elem == 1100).length == 0 + + This cell is below than some cells in the next row + + + + structureID + + + + + + + This cell is above than some cells in the previous row + errorCodes.split(',').filter(elem => elem == 1101).length == 0 + + This cell is above than some cells in the previous row + + + + structureID + + + + + + + This cell is to the right of some cells in the next column + errorCodes.split(',').filter(elem => elem == 1102).length == 0 + + This cell is to the right of some cells in the next column + + + + structureID + + + + + + + This cell is to the left of some cells in the previous column + errorCodes.split(',').filter(elem => elem == 1103).length == 0 + + This cell is to the left of some cells in the previous column + + + + structureID + + + + + + + This structure element should be a table cell instead of a table header + correctType != 'TD' + + score = %1, correct type = %2, id = %3 + + correctSemanticScore + correctType + structureID + + + + + + + TOCI text should be presented in the document + errorCodes.split(',').filter(elem => elem == 1007).length == 0 + + TOCI text is not found in the document + + + + structureID + + + + + + + TOCI text should be presented on a destination page + errorCodes.split(',').filter(elem => elem == 1008).length == 0 + + TOCI text is not found on a destination page %wrongDestinationPage%. Possible destination page number(s): %possiblePageNumbers% + + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1008)].split(';')[1] + structureID + + + + + + + TOCI should have a destination + errorCodes.split(',').filter(elem => elem == 1009).length == 0 + + TOCI doesn't have a destination. Possible destination page number(s): %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] + + structureID + + + + + + + TOCI should have a correct page label + errorCodes.split(',').filter(elem => elem == 1010).length == 0 + + TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 + + errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] + + structureID + + + + + + + TOCI should have a correct numbering + errorCodes.split(',').filter(elem => elem == 1011).length == 0 + + TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering% + + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[0] + errorArguments.split(';;')[errorCodes.split(',') + .findIndex(elem => elem == 1011)].split(';')[1] + structureID + + + + + + + List should contain list items + errorCodes.split(',').filter(elem => elem == 1201).length == 0 + + List contains only one child - list + + + + + + + The structure type and attributes of a list item shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1202).length == 0 + + This list item should be tagged as several different list items + + + + + + + This structure element should be a note instead of a span + correctType != 'Note' + + This structure element should be a note instead of a span + + + + + + + This structure element should be a note instead of a paragraph + correctType != 'Note' + + This structure element should be a note instead of a paragraph + + + + + + + The structure type and attributes of a heading shall be semantically appropriate + errorCodes.split(',').filter(elem => elem == 1300).length == 0 + + This node is the single child with content. One of its ancestor nodes should be tagged as heading instead of this one + + + + From 45a1e773aa0250422c38efdba87d3f82796cebff Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 18 Dec 2023 19:16:06 +0300 Subject: [PATCH 510/557] PDF/UA-2. Update rule 8.14.1-1 --- .../verapdf-profile-8-14-1-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml b/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml index f018207c..4875ba62 100644 --- a/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml +++ b/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml @@ -11,7 +11,7 @@ The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document - containsDesc == true + containsDesc == true || presentInEmbeddedFiles == false The file specification dictionary for an embedded file does not contain Desc key From 79b1187e63051771de466d40d8d8194a53ebaa85 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 20 Dec 2023 09:44:39 +0000 Subject: [PATCH 511/557] PDF/UA-2. Update rule 8.14.1-1 --- PDF_UA/PDFUA-2-ISO32005.xml | 2 +- PDF_UA/PDFUA-2.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 56ea5356..48590b1c 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -1079,7 +1079,7 @@ The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document - containsDesc == true + containsDesc == true || presentInEmbeddedFiles == false The file specification dictionary for an embedded file does not contain Desc key diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index d21b61d8..9c90ec24 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -1079,7 +1079,7 @@ The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document - containsDesc == true + containsDesc == true || presentInEmbeddedFiles == false The file specification dictionary for an embedded file does not contain Desc key From 3f69e7f2cf12a47a369751192d8a76153cb0d48d Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 21 Dec 2023 12:26:12 +0300 Subject: [PATCH 512/557] Update PDF/UA-2 rules --- .../verapdf-profile-8-10-1-t03.xml | 23 +++++++++++++++++ .../verapdf-profile-8-10-2-3-t02.xml | 25 +++++++++++++++++++ .../verapdf-profile-8-10-3-3-t01.xml | 5 +++- .../verapdf-profile-8-4-5-9-t01.xml | 4 ++- .../verapdf-profile-8-9-2-4-10-t01.xml | 6 ++--- .../verapdf-profile-8-9-2-4-13-t01.xml | 6 ++--- .../verapdf-profile-8-9-2-4-14-t01.xml | 4 +-- .../verapdf-profile-8-9-2-4-7-t01.xml | 4 ++- .../verapdf-profile-8-9-4-2-t01.xml | 6 +++-- 9 files changed, 68 insertions(+), 15 deletions(-) create mode 100644 PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml create mode 100644 PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml new file mode 100644 index 00000000..5b24397f --- /dev/null +++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.10 Forms - 8.10.1 General - XFA form + XFA forms shall not be present +
+ + + + + XFA forms shall not be present + containsXFA == false + + XFA form is present + + + + + + + + +
diff --git a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml new file mode 100644 index 00000000..084975dd --- /dev/null +++ b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml @@ -0,0 +1,25 @@ + + +
+ ISO 14289-2:202x - 8.10 Forms - 8.10.2.3 Contents entry - AA and Contents + If an additional action (AA) entry is present in a widget annotation dictionary, the respective + widget's Contents entry shall be present +
+ + + + + If an additional action (AA) entry is present in a widget annotation dictionary, the respective + widget's Contents entry shall be present + containsAA == false || Contents != null + + Widget annotation dictionary contains an AA entry, but not contains the Contents entry + + + + + + + + +
diff --git a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml index 3b4792a5..5a470103 100644 --- a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml +++ b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml @@ -19,7 +19,10 @@ V
- + + + +
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml index 948cd183..39ceb8d2 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml @@ -16,7 +16,9 @@ The document contains a reference to the .notdef glyph
- + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml index 2c89fa77..6121681e 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml @@ -2,16 +2,14 @@
ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - File attachment annotation - When a file attachment annotation references a file specification dictionary in accordance with - ISO 32000-2:2020, 7.11.3 using the FS entry in accordance with ISO 32000-2:2020, 12.5.6.15, that file + When a file attachment annotation references a file specification dictionary, the file specification dictionary shall include an AFRelationship entry
- When a file attachment annotation references a file specification dictionary in accordance with - ISO 32000-2:2020, 7.11.3 using the FS entry in accordance with ISO 32000-2:2020, 12.5.6.15, that file + When a file attachment annotation references a file specification dictionary, the file specification dictionary shall include an AFRelationship entry containsFS == false || AFRelationship != null diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml index c9f09109..6c5b05b0 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml @@ -2,15 +2,13 @@
ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Widget annotation - A widget annotation of zero height and width, accordance with ISO 32000-2:2020, 12.7.5.5 shall be - an artifact + A widget annotation of zero height and width shall be an artifact
- A widget annotation of zero height and width, accordance with ISO 32000-2:2020, 12.7.5.5 shall - be an artifact + A widget annotation of zero height and width shall be an artifact width != 0 || height != 0 || structParentType == null || isArtifact == true A Widget annotation of zero height and width is not marked as an Artifact (structure tag = %1, standard type = %2) diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml index aba3d2c1..7d0a2d4a 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml @@ -2,13 +2,13 @@
ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - PrinterMark annotation - A printer's mark annotation as specified in ISO 32000-2:2020, 14.11.3 shall be an artifact + A printer's mark annotation shall be an artifact
- A printer's mark annotation as specified in ISO 32000-2:2020, 14.11.3 shall be an artifact + A printer's mark annotation shall be an artifact structParentType == null || isArtifact == true A PrinterMark annotation is included in logical structure with tag %1 (standard type = %2) diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml index 66f35de2..03693c0d 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml @@ -16,7 +16,9 @@ Rubber stamp annotation contains neither Name nor Contents entry - + + + diff --git a/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml index e3050a6c..be302f2c 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml @@ -2,13 +2,15 @@
ISO 14289-2:202x - 8.9 Annotations - 8.9.4.2 Alt properties - Alt and Contents - Where both Contents and Alt entries are present for the annotation, they shall be identical + 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
- Where both Contents and Alt entries are present for the annotation, they shall be identical + 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 Contents == null || Alt == null || Contents == Alt Both Contents and Alt entries are present for the annotation, but they are not identical (Contents = %1, Alt = %2) From a902a21e2ac9fa0a26cbe4a030ad68b2b088af4d Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 22 Dec 2023 09:41:50 +0000 Subject: [PATCH 513/557] Update PDF/UA-2 rules --- PDF_UA/PDFUA-2-ISO32005.xml | 45 +++++++++++++++++++++++++++++++------ PDF_UA/PDFUA-2.xml | 45 +++++++++++++++++++++++++++++++------ 2 files changed, 76 insertions(+), 14 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 48590b1c..f3dc863f 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -671,7 +671,9 @@ The document contains a reference to the .notdef glyph - + + + @@ -818,7 +820,9 @@ Rubber stamp annotation contains neither Name nor Contents entry
- + + +
@@ -847,7 +851,7 @@ - When a file attachment annotation references a file specification dictionary in accordance with ISO 32000-2:2020, 7.11.3 using the FS entry in accordance with ISO 32000-2:2020, 12.5.6.15, that file specification dictionary shall include an AFRelationship entry + When a file attachment annotation references a file specification dictionary, the file specification dictionary shall include an AFRelationship entry containsFS == false || AFRelationship != null The file specification dictionary referenced by a file attachment annotation does not include AFRelationship entry @@ -890,7 +894,7 @@ - A widget annotation of zero height and width, accordance with ISO 32000-2:2020, 12.7.5.5 shall be an artifact + A widget annotation of zero height and width shall be an artifact width != 0 || height != 0 || structParentType == null || isArtifact == true A Widget annotation of zero height and width is not marked as an Artifact (structure tag = %1, standard type = %2) @@ -905,7 +909,7 @@ - A printer's mark annotation as specified in ISO 32000-2:2020, 14.11.3 shall be an artifact + A printer's mark annotation shall be an artifact structParentType == null || isArtifact == true A PrinterMark annotation is included in logical structure with tag %1 (standard type = %2) @@ -980,7 +984,7 @@ - Where both Contents and Alt entries are present for the annotation, they shall be identical + 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 Contents == null || Alt == null || Contents == Alt Both Contents and Alt entries are present for the annotation, but they are not identical (Contents = %1, Alt = %2) @@ -1016,6 +1020,18 @@ + + + XFA forms shall not be present + containsXFA == false + + XFA form is present + + + + + + If a label for a widget annotation is not present, a Contents entry shall be provided to supply description and context for the widget @@ -1026,6 +1042,18 @@
+ + + If an additional action (AA) entry is present in a widget annotation dictionary, the respective widget's Contents entry shall be present + containsAA == false || Contents != null + + Widget annotation dictionary contains an AA entry, but not contains the Contents entry + + + + + + For text fields, when an RV entry is present a V entry shall also be present, and they shall be textually equivalent @@ -1037,7 +1065,10 @@ V
- + + + + diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 9c90ec24..4fc0d367 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -671,7 +671,9 @@ The document contains a reference to the .notdef glyph - + + + @@ -818,7 +820,9 @@ Rubber stamp annotation contains neither Name nor Contents entry - + + + @@ -847,7 +851,7 @@ - When a file attachment annotation references a file specification dictionary in accordance with ISO 32000-2:2020, 7.11.3 using the FS entry in accordance with ISO 32000-2:2020, 12.5.6.15, that file specification dictionary shall include an AFRelationship entry + When a file attachment annotation references a file specification dictionary, the file specification dictionary shall include an AFRelationship entry containsFS == false || AFRelationship != null The file specification dictionary referenced by a file attachment annotation does not include AFRelationship entry @@ -890,7 +894,7 @@ - A widget annotation of zero height and width, accordance with ISO 32000-2:2020, 12.7.5.5 shall be an artifact + A widget annotation of zero height and width shall be an artifact width != 0 || height != 0 || structParentType == null || isArtifact == true A Widget annotation of zero height and width is not marked as an Artifact (structure tag = %1, standard type = %2) @@ -905,7 +909,7 @@ - A printer's mark annotation as specified in ISO 32000-2:2020, 14.11.3 shall be an artifact + A printer's mark annotation shall be an artifact structParentType == null || isArtifact == true A PrinterMark annotation is included in logical structure with tag %1 (standard type = %2) @@ -980,7 +984,7 @@ - Where both Contents and Alt entries are present for the annotation, they shall be identical + 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 Contents == null || Alt == null || Contents == Alt Both Contents and Alt entries are present for the annotation, but they are not identical (Contents = %1, Alt = %2) @@ -1016,6 +1020,18 @@ + + + XFA forms shall not be present + containsXFA == false + + XFA form is present + + + + + + If a label for a widget annotation is not present, a Contents entry shall be provided to supply description and context for the widget @@ -1026,6 +1042,18 @@ + + + If an additional action (AA) entry is present in a widget annotation dictionary, the respective widget's Contents entry shall be present + containsAA == false || Contents != null + + Widget annotation dictionary contains an AA entry, but not contains the Contents entry + + + + + + For text fields, when an RV entry is present a V entry shall also be present, and they shall be textually equivalent @@ -1037,7 +1065,10 @@ V - + + + + From 74b8222ef4482ecc5a6212f4f245140e8b2f3f84 Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 22 Dec 2023 17:32:49 +0300 Subject: [PATCH 514/557] PDF/UA-2. Add rule about Watermark annotation --- .../verapdf-profile-8-2-5-29-t02.xml | 24 --------------- .../verapdf-profile-8-9-2-4-16-t01.xml | 24 +++++++++++++++ .../verapdf-profile-8-9-4-1-t01.xml | 30 ------------------- 3 files changed, 24 insertions(+), 54 deletions(-) delete mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t02.xml create mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml delete mode 100644 PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.1 Contents entries/verapdf-profile-8-9-4-1-t01.xml diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t02.xml deleted file mode 100644 index 405cf7a4..00000000 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t02.xml +++ /dev/null @@ -1,24 +0,0 @@ - - -
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.29 Formula - Non-math formula - Non-mathematical scientific formula enclosed within Formula structure elements shall have either - an Alt entry or an ActualText entry in its structure element dictionary -
- - - - - Non-mathematical scientific formula enclosed within Formula structure elements shall have either - an Alt entry or an ActualText entry in its structure element dictionary - Alt != null || ActualText != null || isMathFormula == true - - A non-mathematical scientific formula enclosed within Formula structure elements contains - neither Alt nor ActualText entry in its structure element dictionary - - - - - - -
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml new file mode 100644 index 00000000..d9329c5b --- /dev/null +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml @@ -0,0 +1,24 @@ + + +
+ ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4.16 Watermark - Annot structure element + When used as real content, Watermark annotations shall be enclosed within Annot structure elements +
+ + + + + When used as real content, Watermark annotations shall be enclosed within Annot structure elements + structParentType == null || isArtifact == true || structParentStandardType == 'Annot' + + A Watermark annotation is nested within %1 tag (standard type = %2) instead of Annot + + structParentType + structParentStandardType + + + + + + +
diff --git a/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.1 Contents entries/verapdf-profile-8-9-4-1-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.1 Contents entries/verapdf-profile-8-9-4-1-t01.xml deleted file mode 100644 index 138e67ae..00000000 --- a/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.1 Contents entries/verapdf-profile-8-9-4-1-t01.xml +++ /dev/null @@ -1,30 +0,0 @@ - - -
- ISO 14289-2:202x - 8.9 Annotations - 8.9.4.1 Contents entries - Contents and Alt - Except Widget annotations, Contents entries in annotation dictionaries shall provide an alternative - description of the annotation. If Contents cannot be used for this purpose, an alternate description shall - be provided for the annotation via one of the other mechanisms defined in ISO 32000-2:2020, 14.9.3 -
- - - - - Except Widget annotations, Contents entries in annotation dictionaries shall provide an - alternative description of the annotation. If Contents cannot be used for this purpose, an alternate - description shall be provided for the annotation via one of the other mechanisms defined in - ISO 32000-2:2020, 14.9.3 - Subtype == 'Widget' || Contents != null || Alt != null - - %1 annotation neither has a Contents entry nor alternate description - - Subtype - - - - - - - - -
From b93f4224eb6b52d8dab2d91a120baa12f52c8866 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 26 Dec 2023 09:02:26 +0000 Subject: [PATCH 515/557] PDF/UA-2. Add rule about Watermark annotation --- PDF_UA/PDFUA-2-ISO32005.xml | 37 +++++++++++++------------------------ PDF_UA/PDFUA-2.xml | 37 +++++++++++++------------------------ 2 files changed, 26 insertions(+), 48 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index f3dc863f..33d06d83 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -423,16 +423,6 @@
- - - Non-mathematical scientific formula enclosed within Formula structure elements shall have either an Alt entry or an ActualText entry in its structure element dictionary - Alt != null || ActualText != null || isMathFormula == true - - A non-mathematical scientific formula enclosed within Formula structure elements contains neither Alt nor ActualText entry in its structure element dictionary - - - - In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present @@ -932,6 +922,19 @@ + + + When used as real content, Watermark annotations shall be enclosed within Annot structure elements + structParentType == null || isArtifact == true || structParentStandardType == 'Annot' + + A Watermark annotation is nested within %1 tag (standard type = %2) instead of Annot + + structParentType + structParentStandardType + + + + 3D annotation shall include alternate description in respective Contents entry @@ -968,20 +971,6 @@ - - - Except Widget annotations, Contents entries in annotation dictionaries shall provide an alternative description of the annotation. If Contents cannot be used for this purpose, an alternate description shall be provided for the annotation via one of the other mechanisms defined in ISO 32000-2:2020, 14.9.3 - Subtype == 'Widget' || Contents != null || Alt != null - - %1 annotation neither has a Contents entry nor alternate description - - Subtype - - - - - - 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 diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 4fc0d367..3af8ea79 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -423,16 +423,6 @@ - - - Non-mathematical scientific formula enclosed within Formula structure elements shall have either an Alt entry or an ActualText entry in its structure element dictionary - Alt != null || ActualText != null || isMathFormula == true - - A non-mathematical scientific formula enclosed within Formula structure elements contains neither Alt nor ActualText entry in its structure element dictionary - - - - In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present @@ -932,6 +922,19 @@ + + + When used as real content, Watermark annotations shall be enclosed within Annot structure elements + structParentType == null || isArtifact == true || structParentStandardType == 'Annot' + + A Watermark annotation is nested within %1 tag (standard type = %2) instead of Annot + + structParentType + structParentStandardType + + + + 3D annotation shall include alternate description in respective Contents entry @@ -968,20 +971,6 @@ - - - Except Widget annotations, Contents entries in annotation dictionaries shall provide an alternative description of the annotation. If Contents cannot be used for this purpose, an alternate description shall be provided for the annotation via one of the other mechanisms defined in ISO 32000-2:2020, 14.9.3 - Subtype == 'Widget' || Contents != null || Alt != null - - %1 annotation neither has a Contents entry nor alternate description - - Subtype - - - - - - 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 From 5e46b518a2ac4d4d6c727421557422f6f930c312 Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 26 Dec 2023 22:32:50 +0300 Subject: [PATCH 516/557] PDF/UA. Update rules about tagged content PDF/UA-1(7.1-1 - 7.1-2), PDF/UA-2(8.2.2-1, 8.5.1-1) --- .../verapdf-profile-6-2-10-8-t01.xml | 2 +- PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml | 6 +++--- PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml | 6 +++--- PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml | 2 +- .../8.2.2 Real content/verapdf-profile-8-2-2-t01.xml | 2 +- .../verapdf-profile-8-4-3-t02.xml | 2 +- .../verapdf-profile-8-4-3-t03.xml | 4 ++-- .../8.5.1 General/verapdf-profile-8-5-1-t01.xml | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml index e47f1d1c..a115669f 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml @@ -11,7 +11,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicoide Area value + The ActualText entry contains a Private Unicode Area value diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml index bb9124fe..de19c0a7 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t01.xml @@ -9,11 +9,11 @@ Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || parentStructureTag == null + tag != 'Artifact' || isTaggedContent == false - Content marked as Artifact is present inside tagged content (tag %1) + Content marked as Artifact is present inside tagged content (parent struct element %1) - parentStructureTag + parentStructureElementObjectKey diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml index def29346..199c8498 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t02.xml @@ -9,11 +9,11 @@ Tagged content should not present inside content marked as Artifact - parentStructureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + isTaggedContent == false || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 - Tagged content (tag %1) is present inside content marked as Artifact + Tagged content (parent struct element %1) is present inside content marked as Artifact - parentStructureTag + parentStructureElementObjectKey diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml index aafe2261..a9717540 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t03.xml @@ -9,7 +9,7 @@ Content shall be marked as Artifact or tagged as real content - parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 Content is neither marked as Artifact nor tagged as real content diff --git a/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml index 46359770..f77c764a 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml @@ -9,7 +9,7 @@ Content that is not considered real shall be an artifact - parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 Content is neither marked as Artifact nor tagged as real content diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml index b9838ca4..ff7040d0 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml @@ -11,7 +11,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicoide Area value + The ActualText entry contains a Private Unicode Area value diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml index 371838fb..93f812c7 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml @@ -6,12 +6,12 @@
- + The Alt entry shall not contain any PUA values containsPUA == false - The Alt entry contains a Private Unicoide Area value + The Alt entry contains a Private Unicode Area value diff --git a/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml b/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml index 183615e2..3159cab2 100644 --- a/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml +++ b/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml @@ -11,7 +11,7 @@ Real content that does not possess the semantics of text objects and does not have an alternate textual representation shall be enclosed within Figure or Formula structure elements as appropriate - itemType == 'text' || parentStructureTag == null || ActualText != null || + itemType == 'text' || isTaggedContent == false || ActualText != null || isArtifact == true || isFigure == true || isFormula == true Real content that does not possess the semantics of text objects and does not have an alternate From bfefc3dfed423682f219ab20aacf8852fbab3f25 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 27 Dec 2023 09:15:53 +0000 Subject: [PATCH 517/557] PDF/UA. Update rules about tagged content PDF/UA-1(7.1-1 - 7.1-2), PDF/UA-2(8.2.2-1, 8.5.1-1) --- PDF_UA/PDFUA-1.xml | 14 +++++++------- PDF_UA/PDFUA-2-ISO32005.xml | 10 +++++----- PDF_UA/PDFUA-2.xml | 10 +++++----- PDF_UA/WCAG-2-2-Complete.xml | 2 +- PDF_UA/WCAG-2-2-Machine.xml | 2 +- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index c39b90d5..322e8f57 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -67,11 +67,11 @@ Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || parentStructureTag == null + tag != 'Artifact' || isTaggedContent == false - Content marked as Artifact is present inside tagged content (tag %1) + Content marked as Artifact is present inside tagged content (parent struct element %1) - parentStructureTag + parentStructureElementObjectKey @@ -79,11 +79,11 @@ Tagged content should not present inside content marked as Artifact - parentStructureTag == null || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + isTaggedContent == false || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 - Tagged content (tag %1) is present inside content marked as Artifact + Tagged content (parent struct element %1) is present inside content marked as Artifact - parentStructureTag + parentStructureElementObjectKey @@ -91,7 +91,7 @@ Content shall be marked as Artifact or tagged as real content - parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 Content is neither marked as Artifact nor tagged as real content diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 33d06d83..436b8fa1 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -91,7 +91,7 @@ Content that is not considered real shall be an artifact - parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 Content is neither marked as Artifact nor tagged as real content @@ -438,17 +438,17 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicoide Area value + The ActualText entry contains a Private Unicode Area value - + The Alt entry shall not contain any PUA values containsPUA == false - The Alt entry contains a Private Unicoide Area value + The Alt entry contains a Private Unicode Area value @@ -668,7 +668,7 @@ Real content that does not possess the semantics of text objects and does not have an alternate textual representation shall be enclosed within Figure or Formula structure elements as appropriate - itemType == 'text' || parentStructureTag == null || ActualText != null || isArtifact == true || isFigure == true || isFormula == true + itemType == 'text' || isTaggedContent == false || ActualText != null || isArtifact == true || isFigure == true || isFormula == true Real content that does not possess the semantics of text objects and does not have an alternate textual representation is not enclosed within Figure or Formula structure elements diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 3af8ea79..ef6b42ea 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -91,7 +91,7 @@ Content that is not considered real shall be an artifact - parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 Content is neither marked as Artifact nor tagged as real content @@ -438,17 +438,17 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicoide Area value + The ActualText entry contains a Private Unicode Area value - + The Alt entry shall not contain any PUA values containsPUA == false - The Alt entry contains a Private Unicoide Area value + The Alt entry contains a Private Unicode Area value @@ -668,7 +668,7 @@ Real content that does not possess the semantics of text objects and does not have an alternate textual representation shall be enclosed within Figure or Formula structure elements as appropriate - itemType == 'text' || parentStructureTag == null || ActualText != null || isArtifact == true || isFigure == true || isFormula == true + itemType == 'text' || isTaggedContent == false || ActualText != null || isArtifact == true || isFigure == true || isFormula == true Real content that does not possess the semantics of text objects and does not have an alternate textual representation is not enclosed within Figure or Formula structure elements diff --git a/PDF_UA/WCAG-2-2-Complete.xml b/PDF_UA/WCAG-2-2-Complete.xml index cf7256f9..bf635799 100644 --- a/PDF_UA/WCAG-2-2-Complete.xml +++ b/PDF_UA/WCAG-2-2-Complete.xml @@ -33,7 +33,7 @@ Content shall be marked as Artifact or tagged as real content - parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 Content is neither marked as Artifact nor tagged as real content diff --git a/PDF_UA/WCAG-2-2-Machine.xml b/PDF_UA/WCAG-2-2-Machine.xml index c56f43b9..00d6da74 100644 --- a/PDF_UA/WCAG-2-2-Machine.xml +++ b/PDF_UA/WCAG-2-2-Machine.xml @@ -33,7 +33,7 @@ Content shall be marked as Artifact or tagged as real content - parentStructureTag != null || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 + isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 Content is neither marked as Artifact nor tagged as real content From 98ba47a5392b4be1983daf5d1572fbde32be44ed Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 20 Dec 2023 15:56:38 +0300 Subject: [PATCH 518/557] Update ISO-32005-Tagged profile --- .../update-PDFUA-profiles-workflow.yml | 1 + PDF_UA/ISO-32005-Tagged.xml | 6456 +++++++++-------- 2 files changed, 3255 insertions(+), 3202 deletions(-) diff --git a/.github/workflows/update-PDFUA-profiles-workflow.yml b/.github/workflows/update-PDFUA-profiles-workflow.yml index 176f0373..d86d152f 100644 --- a/.github/workflows/update-PDFUA-profiles-workflow.yml +++ b/.github/workflows/update-PDFUA-profiles-workflow.yml @@ -8,6 +8,7 @@ on: - 'PDF_UA/1/**' - 'PDF_UA/2/**' - 'PDF_UA/WCAG/**' + - 'PDF_UA/ISO-32005-Tagged.xml' jobs: update-profiles: diff --git a/PDF_UA/ISO-32005-Tagged.xml b/PDF_UA/ISO-32005-Tagged.xml index 89483c09..3ac64161 100644 --- a/PDF_UA/ISO-32005-Tagged.xml +++ b/PDF_UA/ISO-32005-Tagged.xml @@ -9,9 +9,9 @@ Every structure type should be mapped to a standard structure type - false + isNotMappedToStandardType == false - Structure type %1 is not mapped to the standard structure type + Non-standard structure type %1 is not mapped to a standard type valueS @@ -25,17 +25,17 @@ StructTreeRoot shall contain exactly one <Document> kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 1 - StructTreeRoot either either doesn't contain or contains more than one <Document> + StructTreeRoot either doesn't contain or contains more than one <Document> - + StructTreeRoot shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <DocumentFragment> @@ -44,10 +44,10 @@ - + StructTreeRoot shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Part> @@ -56,10 +56,10 @@ - + StructTreeRoot shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Art> @@ -68,10 +68,10 @@ - + StructTreeRoot shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Div> @@ -80,10 +80,10 @@ - + StructTreeRoot shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Sect> @@ -92,10 +92,10 @@ - + StructTreeRoot shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TOC> @@ -104,10 +104,10 @@ - + StructTreeRoot shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TOCI> @@ -116,10 +116,10 @@ - + StructTreeRoot shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Aside> @@ -128,10 +128,10 @@ - + StructTreeRoot shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <BlockQuote> @@ -140,10 +140,10 @@ - + StructTreeRoot shall not contain <NonStruct> - kidsStandardTypes.split('&').filter(elem => elem == 'NonStruct').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <NonStruct> @@ -152,10 +152,10 @@ - + StructTreeRoot shall not contain <Private> - kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Private> @@ -164,10 +164,10 @@ - + StructTreeRoot shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <P> @@ -176,10 +176,10 @@ - + StructTreeRoot shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Note> @@ -188,10 +188,10 @@ - + StructTreeRoot shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Code> @@ -200,10 +200,10 @@ - + StructTreeRoot shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Hn> @@ -212,10 +212,10 @@ - + StructTreeRoot shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <H> @@ -224,10 +224,10 @@ - + StructTreeRoot shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Title> @@ -236,10 +236,10 @@ - + StructTreeRoot shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Sub> @@ -248,10 +248,10 @@ - + StructTreeRoot shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Lbl> @@ -260,10 +260,10 @@ - + StructTreeRoot shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Em> @@ -272,10 +272,10 @@ - + StructTreeRoot shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Strong> @@ -284,10 +284,10 @@ - + StructTreeRoot shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Span> @@ -296,10 +296,10 @@ - + StructTreeRoot shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Quote> @@ -308,10 +308,10 @@ - + StructTreeRoot shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Link> @@ -320,10 +320,10 @@ - + StructTreeRoot shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Reference> @@ -332,10 +332,10 @@ - + StructTreeRoot shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Annot> @@ -344,10 +344,10 @@ - + StructTreeRoot shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Form> @@ -356,10 +356,10 @@ - + StructTreeRoot shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Ruby> @@ -368,10 +368,10 @@ - + StructTreeRoot shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <RB> @@ -380,10 +380,10 @@ - + StructTreeRoot shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <RT> @@ -392,10 +392,10 @@ - + StructTreeRoot shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <RP> @@ -404,10 +404,10 @@ - + StructTreeRoot shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Warichu> @@ -416,10 +416,10 @@ - + StructTreeRoot shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <WT> @@ -428,10 +428,10 @@ - + StructTreeRoot shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <WP> @@ -440,10 +440,10 @@ - + StructTreeRoot shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <FENote> @@ -452,10 +452,10 @@ - + StructTreeRoot shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Index> @@ -464,10 +464,10 @@ - + StructTreeRoot shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <L> @@ -476,10 +476,10 @@ - + StructTreeRoot shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <LI> @@ -488,10 +488,10 @@ - + StructTreeRoot shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <LBody> @@ -500,10 +500,10 @@ - + StructTreeRoot shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <BibEntry> @@ -512,10 +512,10 @@ - + StructTreeRoot shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Table> @@ -524,10 +524,10 @@ - + StructTreeRoot shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TR> @@ -536,10 +536,10 @@ - + StructTreeRoot shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TH> @@ -548,10 +548,10 @@ - + StructTreeRoot shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TD> @@ -560,10 +560,10 @@ - + StructTreeRoot shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <THead> @@ -572,10 +572,10 @@ - + StructTreeRoot shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TBody> @@ -584,10 +584,10 @@ - + StructTreeRoot shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TFoot> @@ -596,10 +596,10 @@ - + StructTreeRoot shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Caption> @@ -608,10 +608,10 @@ - + StructTreeRoot shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Figure> @@ -620,10 +620,10 @@ - + StructTreeRoot shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Formula> @@ -632,10 +632,10 @@ - + StructTreeRoot shall not contain <Artifact> - kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Artifact> @@ -644,9 +644,9 @@ - + - StructTreeRoot shall not contain content item + StructTreeRoot shall not contain content items hasContentItems == false StructTreeRoot contains content item(s) @@ -656,10 +656,10 @@ - + <Document> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Document' <Document> contains <TOCI> @@ -680,10 +680,10 @@ - + <Document> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Document' <Document> contains <Sub> @@ -692,10 +692,10 @@ - + <Document> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Document' <Document> contains <Lbl> @@ -704,10 +704,10 @@ - + <Document> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Document' <Document> contains <Em> @@ -716,10 +716,10 @@ - + <Document> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Document' <Document> contains <Strong> @@ -728,10 +728,10 @@ - + <Document> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Document' <Document> contains <Span> @@ -740,10 +740,10 @@ - + <Document> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Document' <Document> contains <Quote> @@ -752,10 +752,10 @@ - + <Document> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Document' <Document> contains <Reference> @@ -764,10 +764,10 @@ - + <Document> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Document' <Document> contains <Ruby> @@ -776,10 +776,10 @@ - + <Document> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Document' <Document> contains <RB> @@ -788,10 +788,10 @@ - + <Document> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Document' <Document> contains <RT> @@ -800,10 +800,10 @@ - + <Document> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Document' <Document> contains <RP> @@ -812,10 +812,10 @@ - + <Document> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Document' <Document> contains <Warichu> @@ -824,10 +824,10 @@ - + <Document> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Document' <Document> contains <WT> @@ -836,10 +836,10 @@ - + <Document> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Document' <Document> contains <WP> @@ -848,10 +848,10 @@ - + <Document> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Document' <Document> contains <LI> @@ -860,10 +860,10 @@ - + <Document> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Document' <Document> contains <LBody> @@ -872,10 +872,10 @@ - + <Document> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Document' <Document> contains <BibEntry> @@ -884,10 +884,10 @@ - + <Document> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Document' <Document> contains <TR> @@ -896,10 +896,10 @@ - + <Document> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Document' <Document> contains <TH> @@ -908,10 +908,10 @@ - + <Document> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Document' <Document> contains <TD> @@ -920,10 +920,10 @@ - + <Document> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Document' <Document> contains <THead> @@ -932,10 +932,10 @@ - + <Document> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Document' <Document> contains <TBody> @@ -944,10 +944,10 @@ - + <Document> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Document' <Document> contains <TFoot> @@ -956,10 +956,10 @@ - + <Document> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Document' <Document> contains <Caption> @@ -970,7 +970,7 @@ - <Document> shall not contain content item + <Document> shall not contain content items hasContentItems == false <Document> contains content item(s) @@ -980,10 +980,10 @@ - + <DocumentFragment> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TOCI> @@ -1004,10 +1004,10 @@ - + <DocumentFragment> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Sub> @@ -1016,10 +1016,10 @@ - + <DocumentFragment> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Lbl> @@ -1028,10 +1028,10 @@ - + <DocumentFragment> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Em> @@ -1040,10 +1040,10 @@ - + <DocumentFragment> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Strong> @@ -1052,10 +1052,10 @@ - + <DocumentFragment> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Span> @@ -1064,10 +1064,10 @@ - + <DocumentFragment> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Quote> @@ -1076,10 +1076,10 @@ - + <DocumentFragment> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Reference> @@ -1088,10 +1088,10 @@ - + <DocumentFragment> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Ruby> @@ -1100,10 +1100,10 @@ - + <DocumentFragment> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <RB> @@ -1112,10 +1112,10 @@ - + <DocumentFragment> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <RT> @@ -1124,10 +1124,10 @@ - + <DocumentFragment> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <RP> @@ -1136,10 +1136,10 @@ - + <DocumentFragment> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Warichu> @@ -1148,10 +1148,10 @@ - + <DocumentFragment> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <WT> @@ -1160,10 +1160,10 @@ - + <DocumentFragment> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <WP> @@ -1172,10 +1172,10 @@ - + <DocumentFragment> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <LI> @@ -1184,10 +1184,10 @@ - + <DocumentFragment> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <LBody> @@ -1196,10 +1196,10 @@ - + <DocumentFragment> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <BibEntry> @@ -1208,10 +1208,10 @@ - + <DocumentFragment> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TR> @@ -1220,10 +1220,10 @@ - + <DocumentFragment> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TH> @@ -1232,10 +1232,10 @@ - + <DocumentFragment> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TD> @@ -1244,10 +1244,10 @@ - + <DocumentFragment> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <THead> @@ -1256,10 +1256,10 @@ - + <DocumentFragment> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TBody> @@ -1268,10 +1268,10 @@ - + <DocumentFragment> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TFoot> @@ -1280,10 +1280,10 @@ - + <DocumentFragment> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Caption> @@ -1294,7 +1294,7 @@ - <DocumentFragment> shall not contain content item + <DocumentFragment> shall not contain content items hasContentItems == false <DocumentFragment> contains content item(s) @@ -1304,10 +1304,10 @@ - + <Part> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Part' <Part> contains <Em> @@ -1316,10 +1316,10 @@ - + <Part> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Part' <Part> contains <Strong> @@ -1328,10 +1328,10 @@ - + <Part> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Part' <Part> contains <Span> @@ -1340,10 +1340,10 @@ - + <Part> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Part' <Part> contains <Quote> @@ -1352,10 +1352,10 @@ - + <Part> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Part' <Part> contains <Ruby> @@ -1364,10 +1364,10 @@ - + <Part> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Part' <Part> contains <RB> @@ -1376,10 +1376,10 @@ - + <Part> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Part' <Part> contains <RT> @@ -1388,10 +1388,10 @@ - + <Part> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Part' <Part> contains <RP> @@ -1400,10 +1400,10 @@ - + <Part> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Part' <Part> contains <Warichu> @@ -1412,10 +1412,10 @@ - + <Part> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Part' <Part> contains <WT> @@ -1424,10 +1424,10 @@ - + <Part> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Part' <Part> contains <WP> @@ -1436,10 +1436,10 @@ - + <Part> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Part' <Part> contains <LI> @@ -1448,10 +1448,10 @@ - + <Part> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Part' <Part> contains <LBody> @@ -1460,10 +1460,10 @@ - + <Part> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Part' <Part> contains <TR> @@ -1472,10 +1472,10 @@ - + <Part> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Part' <Part> contains <TH> @@ -1484,10 +1484,10 @@ - + <Part> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Part' <Part> contains <TD> @@ -1496,10 +1496,10 @@ - + <Part> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Part' <Part> contains <THead> @@ -1508,10 +1508,10 @@ - + <Part> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Part' <Part> contains <TBody> @@ -1520,10 +1520,10 @@ - + <Part> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Part' <Part> contains <TFoot> @@ -1534,7 +1534,7 @@ - <Part> shall not contain content item + <Part> shall not contain content items hasContentItems == false <Part> contains content item(s) @@ -1546,7 +1546,7 @@ - <Div> shall not contain content item + <Div> shall not contain content items hasContentItems == false <Div> contains content item(s) @@ -1556,10 +1556,10 @@ - + <Art> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Art' <Art> contains <Document> @@ -1571,7 +1571,7 @@ <Art> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Art' <Art> contains <Art> @@ -1580,10 +1580,10 @@ - + <Art> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Art' <Art> contains <TOCI> @@ -1604,10 +1604,10 @@ - + <Art> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Art' <Art> contains <Sub> @@ -1616,10 +1616,10 @@ - + <Art> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Art' <Art> contains <Em> @@ -1628,10 +1628,10 @@ - + <Art> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Art' <Art> contains <Strong> @@ -1640,10 +1640,10 @@ - + <Art> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Art' <Art> contains <Span> @@ -1652,10 +1652,10 @@ - + <Art> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Art' <Art> contains <Quote> @@ -1664,10 +1664,10 @@ - + <Art> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Art' <Art> contains <Reference> @@ -1676,10 +1676,10 @@ - + <Art> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Art' <Art> contains <Ruby> @@ -1688,10 +1688,10 @@ - + <Art> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Art' <Art> contains <RB> @@ -1700,10 +1700,10 @@ - + <Art> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Art' <Art> contains <RT> @@ -1712,10 +1712,10 @@ - + <Art> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Art' <Art> contains <RP> @@ -1724,10 +1724,10 @@ - + <Art> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Art' <Art> contains <Warichu> @@ -1736,10 +1736,10 @@ - + <Art> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Art' <Art> contains <WT> @@ -1748,10 +1748,10 @@ - + <Art> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Art' <Art> contains <WP> @@ -1760,10 +1760,10 @@ - + <Art> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Art' <Art> contains <LI> @@ -1772,10 +1772,10 @@ - + <Art> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Art' <Art> contains <LBody> @@ -1784,10 +1784,10 @@ - + <Art> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Art' <Art> contains <BibEntry> @@ -1796,10 +1796,10 @@ - + <Art> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Art' <Art> contains <TR> @@ -1808,10 +1808,10 @@ - + <Art> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Art' <Art> contains <TH> @@ -1820,10 +1820,10 @@ - + <Art> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Art' <Art> contains <TD> @@ -1832,10 +1832,10 @@ - + <Art> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Art' <Art> contains <THead> @@ -1844,10 +1844,10 @@ - + <Art> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Art' <Art> contains <TBody> @@ -1856,10 +1856,10 @@ - + <Art> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Art' <Art> contains <TFoot> @@ -1870,7 +1870,7 @@ - <Art> shall not contain content item + <Art> shall not contain content items hasContentItems == false <Art> contains content item(s) @@ -1880,10 +1880,10 @@ - + <Sect> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Sect' <Sect> contains <Document> @@ -1892,10 +1892,10 @@ - + <Sect> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Sect' <Sect> contains <TOCI> @@ -1916,10 +1916,10 @@ - + <Sect> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Sect' <Sect> contains <Sub> @@ -1928,10 +1928,10 @@ - + <Sect> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Sect' <Sect> contains <Em> @@ -1940,10 +1940,10 @@ - + <Sect> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Sect' <Sect> contains <Strong> @@ -1952,10 +1952,10 @@ - + <Sect> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Sect' <Sect> contains <Span> @@ -1964,10 +1964,10 @@ - + <Sect> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Sect' <Sect> contains <Quote> @@ -1976,10 +1976,10 @@ - + <Sect> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Sect' <Sect> contains <Reference> @@ -1988,10 +1988,10 @@ - + <Sect> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Sect' <Sect> contains <Ruby> @@ -2000,10 +2000,10 @@ - + <Sect> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Sect' <Sect> contains <RB> @@ -2012,10 +2012,10 @@ - + <Sect> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Sect' <Sect> contains <RT> @@ -2024,10 +2024,10 @@ - + <Sect> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Sect' <Sect> contains <RP> @@ -2036,10 +2036,10 @@ - + <Sect> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Sect' <Sect> contains <Warichu> @@ -2048,10 +2048,10 @@ - + <Sect> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Sect' <Sect> contains <WT> @@ -2060,10 +2060,10 @@ - + <Sect> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Sect' <Sect> contains <WP> @@ -2072,10 +2072,10 @@ - + <Sect> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Sect' <Sect> contains <LI> @@ -2084,10 +2084,10 @@ - + <Sect> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Sect' <Sect> contains <LBody> @@ -2096,10 +2096,10 @@ - + <Sect> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Sect' <Sect> contains <BibEntry> @@ -2108,10 +2108,10 @@ - + <Sect> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Sect' <Sect> contains <TR> @@ -2120,10 +2120,10 @@ - + <Sect> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Sect' <Sect> contains <TH> @@ -2132,10 +2132,10 @@ - + <Sect> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Sect' <Sect> contains <TD> @@ -2144,10 +2144,10 @@ - + <Sect> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Sect' <Sect> contains <THead> @@ -2156,10 +2156,10 @@ - + <Sect> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Sect' <Sect> contains <TBody> @@ -2168,10 +2168,10 @@ - + <Sect> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Sect' <Sect> contains <TFoot> @@ -2182,7 +2182,7 @@ - <Sect> shall not contain content item + <Sect> shall not contain content items hasContentItems == false <Sect> contains content item(s) @@ -2192,10 +2192,10 @@ - + <TOC> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TOC' <TOC> contains <Document> @@ -2204,10 +2204,10 @@ - + <TOC> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TOC' <TOC> contains <DocumentFragment> @@ -2216,10 +2216,10 @@ - + <TOC> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TOC' <TOC> contains <Part> @@ -2228,10 +2228,10 @@ - + <TOC> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'TOC' <TOC> contains <Art> @@ -2240,10 +2240,10 @@ - + <TOC> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'TOC' <TOC> contains <Div> @@ -2252,10 +2252,10 @@ - + <TOC> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'TOC' <TOC> contains <Sect> @@ -2264,10 +2264,10 @@ - + <TOC> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TOC' <TOC> contains <Aside> @@ -2276,10 +2276,10 @@ - + <TOC> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TOC' <TOC> contains <BlockQuote> @@ -2288,10 +2288,10 @@ - + <TOC> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'TOC' <TOC> contains <P> @@ -2300,10 +2300,10 @@ - + <TOC> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'TOC' <TOC> contains <Note> @@ -2312,10 +2312,10 @@ - + <TOC> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'TOC' <TOC> contains <Code> @@ -2324,10 +2324,10 @@ - + <TOC> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'TOC' <TOC> contains <Hn> @@ -2336,10 +2336,10 @@ - + <TOC> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'TOC' <TOC> contains <H> @@ -2348,10 +2348,10 @@ - + <TOC> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TOC' <TOC> contains <Title> @@ -2360,10 +2360,10 @@ - + <TOC> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TOC' <TOC> contains <Sub> @@ -2372,10 +2372,10 @@ - + <TOC> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'TOC' <TOC> contains <Lbl> @@ -2384,10 +2384,10 @@ - + <TOC> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'TOC' <TOC> contains <Em> @@ -2396,10 +2396,10 @@ - + <TOC> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'TOC' <TOC> contains <Strong> @@ -2408,10 +2408,10 @@ - + <TOC> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'TOC' <TOC> contains <Span> @@ -2420,10 +2420,10 @@ - + <TOC> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'TOC' <TOC> contains <Quote> @@ -2432,10 +2432,10 @@ - + <TOC> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'TOC' <TOC> contains <Link> @@ -2444,10 +2444,10 @@ - + <TOC> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'TOC' <TOC> contains <Reference> @@ -2456,10 +2456,10 @@ - + <TOC> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'TOC' <TOC> contains <Annot> @@ -2468,10 +2468,10 @@ - + <TOC> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'TOC' <TOC> contains <Form> @@ -2480,10 +2480,10 @@ - + <TOC> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'TOC' <TOC> contains <Ruby> @@ -2492,10 +2492,10 @@ - + <TOC> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TOC' <TOC> contains <RB> @@ -2504,10 +2504,10 @@ - + <TOC> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TOC' <TOC> contains <RT> @@ -2516,10 +2516,10 @@ - + <TOC> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TOC' <TOC> contains <RP> @@ -2528,10 +2528,10 @@ - + <TOC> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'TOC' <TOC> contains <Warichu> @@ -2540,10 +2540,10 @@ - + <TOC> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TOC' <TOC> contains <WT> @@ -2552,10 +2552,10 @@ - + <TOC> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TOC' <TOC> contains <WP> @@ -2564,10 +2564,10 @@ - + <TOC> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'TOC' <TOC> contains <FENote> @@ -2576,10 +2576,10 @@ - + <TOC> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'TOC' <TOC> contains <Index> @@ -2588,10 +2588,10 @@ - + <TOC> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'TOC' <TOC> contains <L> @@ -2600,10 +2600,10 @@ - + <TOC> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TOC' <TOC> contains <LI> @@ -2612,10 +2612,10 @@ - + <TOC> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TOC' <TOC> contains <LBody> @@ -2624,10 +2624,10 @@ - + <TOC> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'TOC' <TOC> contains <BibEntry> @@ -2636,10 +2636,10 @@ - + <TOC> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'TOC' <TOC> contains <Table> @@ -2648,10 +2648,10 @@ - + <TOC> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'TOC' <TOC> contains <TR> @@ -2660,10 +2660,10 @@ - + <TOC> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TOC' <TOC> contains <TH> @@ -2672,10 +2672,10 @@ - + <TOC> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TOC' <TOC> contains <TD> @@ -2684,10 +2684,10 @@ - + <TOC> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TOC' <TOC> contains <THead> @@ -2696,10 +2696,10 @@ - + <TOC> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TOC' <TOC> contains <TBody> @@ -2708,10 +2708,10 @@ - + <TOC> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TOC' <TOC> contains <TFoot> @@ -2732,10 +2732,10 @@ - + <TOC> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'TOC' <TOC> contains <Figure> @@ -2744,10 +2744,10 @@ - + <TOC> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'TOC' <TOC> contains <Formula> @@ -2758,7 +2758,7 @@ - <TOC> shall not contain content item + <TOC> shall not contain content items hasContentItems == false <TOC> contains content item(s) @@ -2768,10 +2768,10 @@ - + <TOCI> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Document> @@ -2780,10 +2780,10 @@ - + <TOCI> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <DocumentFragment> @@ -2792,10 +2792,10 @@ - + <TOCI> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Part> @@ -2804,10 +2804,10 @@ - + <TOCI> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Art> @@ -2816,10 +2816,10 @@ - + <TOCI> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Sect> @@ -2831,7 +2831,7 @@ <TOCI> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TOCI> @@ -2840,10 +2840,10 @@ - + <TOCI> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Aside> @@ -2852,10 +2852,10 @@ - + <TOCI> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <BlockQuote> @@ -2864,10 +2864,10 @@ - + <TOCI> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Note> @@ -2876,10 +2876,10 @@ - + <TOCI> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Code> @@ -2888,10 +2888,10 @@ - + <TOCI> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Hn> @@ -2900,10 +2900,10 @@ - + <TOCI> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <H> @@ -2912,10 +2912,10 @@ - + <TOCI> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Title> @@ -2924,10 +2924,10 @@ - + <TOCI> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Sub> @@ -2936,10 +2936,10 @@ - + <TOCI> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Em> @@ -2948,10 +2948,10 @@ - + <TOCI> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Strong> @@ -2960,10 +2960,10 @@ - + <TOCI> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Span> @@ -2972,10 +2972,10 @@ - + <TOCI> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Quote> @@ -2984,10 +2984,10 @@ - + <TOCI> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Link> @@ -2996,10 +2996,10 @@ - + <TOCI> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Annot> @@ -3008,10 +3008,10 @@ - + <TOCI> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Form> @@ -3020,10 +3020,10 @@ - + <TOCI> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Ruby> @@ -3032,10 +3032,10 @@ - + <TOCI> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <RB> @@ -3044,10 +3044,10 @@ - + <TOCI> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <RT> @@ -3056,10 +3056,10 @@ - + <TOCI> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <RP> @@ -3068,10 +3068,10 @@ - + <TOCI> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Warichu> @@ -3080,10 +3080,10 @@ - + <TOCI> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <WT> @@ -3092,10 +3092,10 @@ - + <TOCI> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <WP> @@ -3104,10 +3104,10 @@ - + <TOCI> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <FENote> @@ -3116,10 +3116,10 @@ - + <TOCI> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Index> @@ -3128,10 +3128,10 @@ - + <TOCI> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <L> @@ -3140,10 +3140,10 @@ - + <TOCI> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <LI> @@ -3152,10 +3152,10 @@ - + <TOCI> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <LBody> @@ -3164,10 +3164,10 @@ - + <TOCI> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <BibEntry> @@ -3176,10 +3176,10 @@ - + <TOCI> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Table> @@ -3188,10 +3188,10 @@ - + <TOCI> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TR> @@ -3200,10 +3200,10 @@ - + <TOCI> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TH> @@ -3212,10 +3212,10 @@ - + <TOCI> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TD> @@ -3224,10 +3224,10 @@ - + <TOCI> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <THead> @@ -3236,10 +3236,10 @@ - + <TOCI> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TBody> @@ -3248,10 +3248,10 @@ - + <TOCI> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TFoot> @@ -3260,10 +3260,10 @@ - + <TOCI> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Caption> @@ -3272,10 +3272,10 @@ - + <TOCI> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Figure> @@ -3284,10 +3284,10 @@ - + <TOCI> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Formula> @@ -3298,7 +3298,7 @@ - <TOCI> shall not contain content item + <TOCI> shall not contain content items hasContentItems == false <TOCI> contains content item(s) @@ -3308,10 +3308,10 @@ - + <Aside> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Aside' <Aside> contains <TOCI> @@ -3323,7 +3323,7 @@ <Aside> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Aside' <Aside> contains <Aside> @@ -3344,10 +3344,10 @@ - + <Aside> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Aside' <Aside> contains <Title> @@ -3356,10 +3356,10 @@ - + <Aside> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Aside' <Aside> contains <Sub> @@ -3368,10 +3368,10 @@ - + <Aside> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Aside' <Aside> contains <Em> @@ -3380,10 +3380,10 @@ - + <Aside> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Aside' <Aside> contains <Strong> @@ -3392,10 +3392,10 @@ - + <Aside> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Aside' <Aside> contains <Span> @@ -3404,10 +3404,10 @@ - + <Aside> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Aside' <Aside> contains <Quote> @@ -3416,10 +3416,10 @@ - + <Aside> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Aside' <Aside> contains <Ruby> @@ -3428,10 +3428,10 @@ - + <Aside> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Aside' <Aside> contains <RB> @@ -3440,10 +3440,10 @@ - + <Aside> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Aside' <Aside> contains <RT> @@ -3452,10 +3452,10 @@ - + <Aside> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Aside' <Aside> contains <RP> @@ -3464,10 +3464,10 @@ - + <Aside> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Aside' <Aside> contains <Warichu> @@ -3476,10 +3476,10 @@ - + <Aside> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Aside' <Aside> contains <WT> @@ -3488,10 +3488,10 @@ - + <Aside> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Aside' <Aside> contains <WP> @@ -3500,10 +3500,10 @@ - + <Aside> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Aside' <Aside> contains <LI> @@ -3512,10 +3512,10 @@ - + <Aside> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Aside' <Aside> contains <LBody> @@ -3524,10 +3524,10 @@ - + <Aside> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Aside' <Aside> contains <BibEntry> @@ -3536,10 +3536,10 @@ - + <Aside> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Aside' <Aside> contains <TR> @@ -3548,10 +3548,10 @@ - + <Aside> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Aside' <Aside> contains <TH> @@ -3560,10 +3560,10 @@ - + <Aside> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Aside' <Aside> contains <TD> @@ -3572,10 +3572,10 @@ - + <Aside> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Aside' <Aside> contains <THead> @@ -3584,10 +3584,10 @@ - + <Aside> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Aside' <Aside> contains <TBody> @@ -3596,10 +3596,10 @@ - + <Aside> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Aside' <Aside> contains <TFoot> @@ -3620,10 +3620,10 @@ - + <BlockQuote> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TOCI> @@ -3632,10 +3632,10 @@ - + <BlockQuote> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Aside> @@ -3656,10 +3656,10 @@ - + <BlockQuote> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Title> @@ -3668,10 +3668,10 @@ - + <BlockQuote> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Sub> @@ -3680,10 +3680,10 @@ - + <BlockQuote> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Em> @@ -3692,10 +3692,10 @@ - + <BlockQuote> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Strong> @@ -3704,10 +3704,10 @@ - + <BlockQuote> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Span> @@ -3716,10 +3716,10 @@ - + <BlockQuote> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Quote> @@ -3728,10 +3728,10 @@ - + <BlockQuote> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Ruby> @@ -3740,10 +3740,10 @@ - + <BlockQuote> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <RB> @@ -3752,10 +3752,10 @@ - + <BlockQuote> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <RT> @@ -3764,10 +3764,10 @@ - + <BlockQuote> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <RP> @@ -3776,10 +3776,10 @@ - + <BlockQuote> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Warichu> @@ -3788,10 +3788,10 @@ - + <BlockQuote> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <WT> @@ -3800,10 +3800,10 @@ - + <BlockQuote> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <WP> @@ -3812,10 +3812,10 @@ - + <BlockQuote> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <LI> @@ -3824,10 +3824,10 @@ - + <BlockQuote> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <LBody> @@ -3836,10 +3836,10 @@ - + <BlockQuote> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <BibEntry> @@ -3848,10 +3848,10 @@ - + <BlockQuote> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TR> @@ -3860,10 +3860,10 @@ - + <BlockQuote> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TH> @@ -3872,10 +3872,10 @@ - + <BlockQuote> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TD> @@ -3884,10 +3884,10 @@ - + <BlockQuote> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <THead> @@ -3896,10 +3896,10 @@ - + <BlockQuote> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TBody> @@ -3908,10 +3908,10 @@ - + <BlockQuote> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TFoot> @@ -3932,10 +3932,10 @@ - + <Title> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Title' <Title> contains <Document> @@ -3944,10 +3944,10 @@ - + <Title> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Title' <Title> contains <DocumentFragment> @@ -3956,10 +3956,10 @@ - + <Title> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Title' <Title> contains <Art> @@ -3968,10 +3968,10 @@ - + <Title> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Title' <Title> contains <Sect> @@ -3980,10 +3980,10 @@ - + <Title> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Title' <Title> contains <TOC> @@ -3992,10 +3992,10 @@ - + <Title> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Title' <Title> contains <TOCI> @@ -4004,10 +4004,10 @@ - + <Title> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Title' <Title> contains <BlockQuote> @@ -4016,10 +4016,10 @@ - + <Title> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Title' <Title> contains <Hn> @@ -4028,10 +4028,10 @@ - + <Title> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Title' <Title> contains <H> @@ -4043,7 +4043,7 @@ <Title> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Title' <Title> contains <Title> @@ -4052,10 +4052,10 @@ - + <Title> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Title' <Title> contains <Sub> @@ -4064,10 +4064,10 @@ - + <Title> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Title' <Title> contains <RB> @@ -4076,10 +4076,10 @@ - + <Title> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Title' <Title> contains <RT> @@ -4088,10 +4088,10 @@ - + <Title> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Title' <Title> contains <RP> @@ -4100,10 +4100,10 @@ - + <Title> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Title' <Title> contains <WT> @@ -4112,10 +4112,10 @@ - + <Title> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Title' <Title> contains <WP> @@ -4124,10 +4124,10 @@ - + <Title> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Title' <Title> contains <Index> @@ -4136,10 +4136,10 @@ - + <Title> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Title' <Title> contains <LI> @@ -4148,10 +4148,10 @@ - + <Title> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Title' <Title> contains <LBody> @@ -4160,10 +4160,10 @@ - + <Title> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Title' <Title> contains <TR> @@ -4172,10 +4172,10 @@ - + <Title> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Title' <Title> contains <TH> @@ -4184,10 +4184,10 @@ - + <Title> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Title' <Title> contains <TD> @@ -4196,10 +4196,10 @@ - + <Title> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Title' <Title> contains <THead> @@ -4208,10 +4208,10 @@ - + <Title> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Title' <Title> contains <TBody> @@ -4220,10 +4220,10 @@ - + <Title> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Title' <Title> contains <TFoot> @@ -4244,10 +4244,10 @@ - + <Sub> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Sub' <Sub> contains <Document> @@ -4256,10 +4256,10 @@ - + <Sub> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Sub' <Sub> contains <DocumentFragment> @@ -4268,10 +4268,10 @@ - + <Sub> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Sub' <Sub> contains <Part> @@ -4280,10 +4280,10 @@ - + <Sub> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Sub' <Sub> contains <Art> @@ -4292,10 +4292,10 @@ - + <Sub> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Sub' <Sub> contains <Div> @@ -4304,10 +4304,10 @@ - + <Sub> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Sub' <Sub> contains <Sect> @@ -4316,10 +4316,10 @@ - + <Sub> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Sub' <Sub> contains <TOC> @@ -4328,10 +4328,10 @@ - + <Sub> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Sub' <Sub> contains <TOCI> @@ -4340,10 +4340,10 @@ - + <Sub> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Sub' <Sub> contains <Aside> @@ -4352,10 +4352,10 @@ - + <Sub> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Sub' <Sub> contains <BlockQuote> @@ -4364,10 +4364,10 @@ - + <Sub> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Sub' <Sub> contains <P> @@ -4376,10 +4376,10 @@ - + <Sub> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Sub' <Sub> contains <Hn> @@ -4388,10 +4388,10 @@ - + <Sub> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Sub' <Sub> contains <H> @@ -4400,10 +4400,10 @@ - + <Sub> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Sub' <Sub> contains <Title> @@ -4415,7 +4415,7 @@ <Sub> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Sub' <Sub> contains <Sub> @@ -4424,10 +4424,10 @@ - + <Sub> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Sub' <Sub> contains <RB> @@ -4436,10 +4436,10 @@ - + <Sub> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Sub' <Sub> contains <RT> @@ -4448,10 +4448,10 @@ - + <Sub> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Sub' <Sub> contains <RP> @@ -4460,10 +4460,10 @@ - + <Sub> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Sub' <Sub> contains <WT> @@ -4472,10 +4472,10 @@ - + <Sub> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Sub' <Sub> contains <WP> @@ -4484,10 +4484,10 @@ - + <Sub> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Sub' <Sub> contains <Index> @@ -4496,10 +4496,10 @@ - + <Sub> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Sub' <Sub> contains <LI> @@ -4508,10 +4508,10 @@ - + <Sub> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Sub' <Sub> contains <LBody> @@ -4520,10 +4520,10 @@ - + <Sub> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Sub' <Sub> contains <Table> @@ -4532,10 +4532,10 @@ - + <Sub> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Sub' <Sub> contains <TR> @@ -4544,10 +4544,10 @@ - + <Sub> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Sub' <Sub> contains <TH> @@ -4556,10 +4556,10 @@ - + <Sub> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Sub' <Sub> contains <TD> @@ -4568,10 +4568,10 @@ - + <Sub> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Sub' <Sub> contains <THead> @@ -4580,10 +4580,10 @@ - + <Sub> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Sub' <Sub> contains <TBody> @@ -4592,10 +4592,10 @@ - + <Sub> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Sub' <Sub> contains <TFoot> @@ -4604,10 +4604,10 @@ - + <Sub> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Sub' <Sub> contains <Caption> @@ -4616,10 +4616,10 @@ - + <P> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'P' <P> contains <Document> @@ -4628,10 +4628,10 @@ - + <P> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'P' <P> contains <DocumentFragment> @@ -4640,10 +4640,10 @@ - + <P> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'P' <P> contains <Part> @@ -4652,10 +4652,10 @@ - + <P> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'P' <P> contains <Art> @@ -4664,10 +4664,10 @@ - + <P> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'P' <P> contains <Div> @@ -4676,10 +4676,10 @@ - + <P> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'P' <P> contains <Sect> @@ -4688,10 +4688,10 @@ - + <P> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'P' <P> contains <TOC> @@ -4700,10 +4700,10 @@ - + <P> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'P' <P> contains <TOCI> @@ -4712,10 +4712,10 @@ - + <P> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'P' <P> contains <Aside> @@ -4724,10 +4724,10 @@ - + <P> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'P' <P> contains <BlockQuote> @@ -4739,7 +4739,7 @@ <P> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'P' <P> contains <P> @@ -4748,10 +4748,10 @@ - + <P> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'P' <P> contains <Hn> @@ -4760,10 +4760,10 @@ - + <P> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'P' <P> contains <H> @@ -4772,10 +4772,10 @@ - + <P> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'P' <P> contains <Title> @@ -4784,10 +4784,10 @@ - + <P> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'P' <P> contains <RB> @@ -4796,10 +4796,10 @@ - + <P> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'P' <P> contains <RT> @@ -4808,10 +4808,10 @@ - + <P> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'P' <P> contains <RP> @@ -4820,10 +4820,10 @@ - + <P> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'P' <P> contains <WT> @@ -4832,10 +4832,10 @@ - + <P> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'P' <P> contains <WP> @@ -4844,10 +4844,10 @@ - + <P> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'P' <P> contains <Index> @@ -4856,10 +4856,10 @@ - + <P> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'P' <P> contains <LI> @@ -4868,10 +4868,10 @@ - + <P> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'P' <P> contains <LBody> @@ -4880,10 +4880,10 @@ - + <P> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'P' <P> contains <TR> @@ -4892,10 +4892,10 @@ - + <P> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'P' <P> contains <TH> @@ -4904,10 +4904,10 @@ - + <P> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'P' <P> contains <TD> @@ -4916,10 +4916,10 @@ - + <P> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'P' <P> contains <THead> @@ -4928,10 +4928,10 @@ - + <P> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'P' <P> contains <TBody> @@ -4940,10 +4940,10 @@ - + <P> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'P' <P> contains <TFoot> @@ -4952,10 +4952,10 @@ - + <P> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'P' <P> contains <Caption> @@ -4964,10 +4964,10 @@ - + <Note> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Note' <Note> contains <Document> @@ -4976,10 +4976,10 @@ - + <Note> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Note' <Note> contains <TOC> @@ -4988,10 +4988,10 @@ - + <Note> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Note' <Note> contains <TOCI> @@ -5000,10 +5000,10 @@ - + <Note> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Note' <Note> contains <Hn> @@ -5012,10 +5012,10 @@ - + <Note> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Note' <Note> contains <H> @@ -5024,10 +5024,10 @@ - + <Note> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Note' <Note> contains <Title> @@ -5036,10 +5036,10 @@ - + <Note> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Note' <Note> contains <RB> @@ -5048,10 +5048,10 @@ - + <Note> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Note' <Note> contains <RT> @@ -5060,10 +5060,10 @@ - + <Note> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Note' <Note> contains <RP> @@ -5072,10 +5072,10 @@ - + <Note> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Note' <Note> contains <WT> @@ -5084,10 +5084,10 @@ - + <Note> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Note' <Note> contains <WP> @@ -5096,10 +5096,10 @@ - + <Note> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Note' <Note> contains <LI> @@ -5108,10 +5108,10 @@ - + <Note> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Note' <Note> contains <LBody> @@ -5120,10 +5120,10 @@ - + <Note> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Note' <Note> contains <TR> @@ -5132,10 +5132,10 @@ - + <Note> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Note' <Note> contains <TH> @@ -5144,10 +5144,10 @@ - + <Note> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Note' <Note> contains <TD> @@ -5156,10 +5156,10 @@ - + <Note> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Note' <Note> contains <THead> @@ -5168,10 +5168,10 @@ - + <Note> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Note' <Note> contains <TBody> @@ -5180,10 +5180,10 @@ - + <Note> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Note' <Note> contains <TFoot> @@ -5192,10 +5192,10 @@ - + <Code> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Code' <Code> contains <Document> @@ -5204,10 +5204,10 @@ - + <Code> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Code' <Code> contains <Art> @@ -5216,10 +5216,10 @@ - + <Code> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Code' <Code> contains <Sect> @@ -5228,10 +5228,10 @@ - + <Code> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Code' <Code> contains <TOC> @@ -5240,10 +5240,10 @@ - + <Code> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Code' <Code> contains <TOCI> @@ -5252,10 +5252,10 @@ - + <Code> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Code' <Code> contains <Aside> @@ -5264,10 +5264,10 @@ - + <Code> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Code' <Code> contains <BlockQuote> @@ -5276,10 +5276,10 @@ - + <Code> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Code' <Code> contains <P> @@ -5291,7 +5291,7 @@ <Code> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Code' <Code> contains <Code> @@ -5300,10 +5300,10 @@ - + <Code> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Code' <Code> contains <Hn> @@ -5312,10 +5312,10 @@ - + <Code> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Code' <Code> contains <H> @@ -5324,10 +5324,10 @@ - + <Code> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Code' <Code> contains <Title> @@ -5336,10 +5336,10 @@ - + <Code> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Code' <Code> contains <Sub> @@ -5348,10 +5348,10 @@ - + <Code> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Code' <Code> contains <Lbl> @@ -5360,10 +5360,10 @@ - + <Code> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Code' <Code> contains <Quote> @@ -5372,10 +5372,10 @@ - + <Code> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Code' <Code> contains <Form> @@ -5384,10 +5384,10 @@ - + <Code> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Code' <Code> contains <Ruby> @@ -5396,10 +5396,10 @@ - + <Code> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Code' <Code> contains <RB> @@ -5408,10 +5408,10 @@ - + <Code> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Code' <Code> contains <RT> @@ -5420,10 +5420,10 @@ - + <Code> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Code' <Code> contains <RP> @@ -5432,10 +5432,10 @@ - + <Code> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Code' <Code> contains <Warichu> @@ -5444,10 +5444,10 @@ - + <Code> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Code' <Code> contains <WT> @@ -5456,10 +5456,10 @@ - + <Code> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Code' <Code> contains <WP> @@ -5468,10 +5468,10 @@ - + <Code> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Code' <Code> contains <Index> @@ -5480,10 +5480,10 @@ - + <Code> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Code' <Code> contains <L> @@ -5492,10 +5492,10 @@ - + <Code> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Code' <Code> contains <LI> @@ -5504,10 +5504,10 @@ - + <Code> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Code' <Code> contains <LBody> @@ -5516,10 +5516,10 @@ - + <Code> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Code' <Code> contains <Table> @@ -5528,10 +5528,10 @@ - + <Code> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Code' <Code> contains <TR> @@ -5540,10 +5540,10 @@ - + <Code> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Code' <Code> contains <TH> @@ -5552,10 +5552,10 @@ - + <Code> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Code' <Code> contains <TD> @@ -5564,10 +5564,10 @@ - + <Code> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Code' <Code> contains <THead> @@ -5576,10 +5576,10 @@ - + <Code> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Code' <Code> contains <TBody> @@ -5588,10 +5588,10 @@ - + <Code> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Code' <Code> contains <TFoot> @@ -5600,10 +5600,10 @@ - + <Code> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Code' <Code> contains <Caption> @@ -5612,10 +5612,10 @@ - + <Code> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'Code' <Code> contains <Figure> @@ -5624,10 +5624,10 @@ - + <Code> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'Code' <Code> contains <Formula> @@ -5636,10 +5636,10 @@ - + <Hn> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Document> @@ -5648,10 +5648,10 @@ - + <Hn> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <DocumentFragment> @@ -5660,10 +5660,10 @@ - + <Hn> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Part> @@ -5684,10 +5684,10 @@ - + <Hn> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Div> @@ -5708,10 +5708,10 @@ - + <Hn> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TOC> @@ -5720,10 +5720,10 @@ - + <Hn> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TOCI> @@ -5732,10 +5732,10 @@ - + <Hn> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Aside> @@ -5744,10 +5744,10 @@ - + <Hn> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <BlockQuote> @@ -5756,10 +5756,10 @@ - + <Hn> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <P> @@ -5771,7 +5771,7 @@ <Hn> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Hn> @@ -5780,10 +5780,10 @@ - + <Hn> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <H> @@ -5792,10 +5792,10 @@ - + <Hn> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Title> @@ -5804,10 +5804,10 @@ - + <Hn> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <RB> @@ -5816,10 +5816,10 @@ - + <Hn> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <RT> @@ -5828,10 +5828,10 @@ - + <Hn> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <RP> @@ -5840,10 +5840,10 @@ - + <Hn> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <WT> @@ -5852,10 +5852,10 @@ - + <Hn> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <WP> @@ -5864,10 +5864,10 @@ - + <Hn> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Index> @@ -5876,10 +5876,10 @@ - + <Hn> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <L> @@ -5888,10 +5888,10 @@ - + <Hn> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <LI> @@ -5900,10 +5900,10 @@ - + <Hn> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <LBody> @@ -5912,10 +5912,10 @@ - + <Hn> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Table> @@ -5924,10 +5924,10 @@ - + <Hn> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TR> @@ -5936,10 +5936,10 @@ - + <Hn> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TH> @@ -5948,10 +5948,10 @@ - + <Hn> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TD> @@ -5960,10 +5960,10 @@ - + <Hn> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <THead> @@ -5972,10 +5972,10 @@ - + <Hn> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TBody> @@ -5984,10 +5984,10 @@ - + <Hn> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TFoot> @@ -5996,10 +5996,10 @@ - + <Hn> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Caption> @@ -6008,10 +6008,10 @@ - + <H> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'H' <H> contains <Document> @@ -6020,10 +6020,10 @@ - + <H> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'H' <H> contains <DocumentFragment> @@ -6032,10 +6032,10 @@ - + <H> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'H' <H> contains <Part> @@ -6056,10 +6056,10 @@ - + <H> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'H' <H> contains <Div> @@ -6080,10 +6080,10 @@ - + <H> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'H' <H> contains <TOC> @@ -6092,10 +6092,10 @@ - + <H> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'H' <H> contains <TOCI> @@ -6104,10 +6104,10 @@ - + <H> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'H' <H> contains <Aside> @@ -6116,10 +6116,10 @@ - + <H> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'H' <H> contains <BlockQuote> @@ -6128,10 +6128,10 @@ - + <H> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'H' <H> contains <P> @@ -6140,10 +6140,10 @@ - + <H> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'H' <H> contains <Hn> @@ -6155,7 +6155,7 @@ <H> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'H' <H> contains <H> @@ -6164,10 +6164,10 @@ - + <H> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'H' <H> contains <Title> @@ -6176,10 +6176,10 @@ - + <H> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'H' <H> contains <RB> @@ -6188,10 +6188,10 @@ - + <H> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'H' <H> contains <RT> @@ -6200,10 +6200,10 @@ - + <H> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'H' <H> contains <RP> @@ -6212,10 +6212,10 @@ - + <H> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'H' <H> contains <WT> @@ -6224,10 +6224,10 @@ - + <H> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'H' <H> contains <WP> @@ -6236,10 +6236,10 @@ - + <H> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'H' <H> contains <Index> @@ -6248,10 +6248,10 @@ - + <H> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'H' <H> contains <L> @@ -6260,10 +6260,10 @@ - + <H> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'H' <H> contains <LI> @@ -6272,10 +6272,10 @@ - + <H> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'H' <H> contains <LBody> @@ -6284,10 +6284,10 @@ - + <H> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'H' <H> contains <Table> @@ -6296,10 +6296,10 @@ - + <H> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'H' <H> contains <TR> @@ -6308,10 +6308,10 @@ - + <H> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'H' <H> contains <TH> @@ -6320,10 +6320,10 @@ - + <H> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'H' <H> contains <TD> @@ -6332,10 +6332,10 @@ - + <H> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'H' <H> contains <THead> @@ -6344,10 +6344,10 @@ - + <H> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'H' <H> contains <TBody> @@ -6356,10 +6356,10 @@ - + <H> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'H' <H> contains <TFoot> @@ -6368,10 +6368,10 @@ - + <H> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'H' <H> contains <Caption> @@ -6380,10 +6380,10 @@ - + <Lbl> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Document> @@ -6392,10 +6392,10 @@ - + <Lbl> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <DocumentFragment> @@ -6404,10 +6404,10 @@ - + <Lbl> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Part> @@ -6416,10 +6416,10 @@ - + <Lbl> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Art> @@ -6428,10 +6428,10 @@ - + <Lbl> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Div> @@ -6440,10 +6440,10 @@ - + <Lbl> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Sect> @@ -6452,10 +6452,10 @@ - + <Lbl> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TOC> @@ -6464,10 +6464,10 @@ - + <Lbl> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TOCI> @@ -6476,10 +6476,10 @@ - + <Lbl> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Aside> @@ -6488,10 +6488,10 @@ - + <Lbl> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <BlockQuote> @@ -6500,10 +6500,10 @@ - + <Lbl> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <P> @@ -6512,10 +6512,10 @@ - + <Lbl> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Hn> @@ -6524,10 +6524,10 @@ - + <Lbl> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <H> @@ -6536,10 +6536,10 @@ - + <Lbl> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Title> @@ -6551,7 +6551,7 @@ <Lbl> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Lbl> @@ -6560,10 +6560,10 @@ - + <Lbl> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <RB> @@ -6572,10 +6572,10 @@ - + <Lbl> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <RT> @@ -6584,10 +6584,10 @@ - + <Lbl> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <RP> @@ -6596,10 +6596,10 @@ - + <Lbl> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <WT> @@ -6608,10 +6608,10 @@ - + <Lbl> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <WP> @@ -6620,10 +6620,10 @@ - + <Lbl> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Index> @@ -6632,10 +6632,10 @@ - + <Lbl> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <L> @@ -6644,10 +6644,10 @@ - + <Lbl> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <LI> @@ -6656,10 +6656,10 @@ - + <Lbl> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <LBody> @@ -6668,10 +6668,10 @@ - + <Lbl> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Table> @@ -6680,10 +6680,10 @@ - + <Lbl> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TR> @@ -6692,10 +6692,10 @@ - + <Lbl> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TH> @@ -6704,10 +6704,10 @@ - + <Lbl> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TD> @@ -6716,10 +6716,10 @@ - + <Lbl> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <THead> @@ -6728,10 +6728,10 @@ - + <Lbl> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TBody> @@ -6740,10 +6740,10 @@ - + <Lbl> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TFoot> @@ -6752,10 +6752,10 @@ - + <Lbl> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Caption> @@ -6764,10 +6764,10 @@ - + <Em> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Em' <Em> contains <Document> @@ -6776,10 +6776,10 @@ - + <Em> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Em' <Em> contains <DocumentFragment> @@ -6788,10 +6788,10 @@ - + <Em> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Em' <Em> contains <Part> @@ -6800,10 +6800,10 @@ - + <Em> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Em' <Em> contains <Art> @@ -6812,10 +6812,10 @@ - + <Em> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Em' <Em> contains <Div> @@ -6824,10 +6824,10 @@ - + <Em> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Em' <Em> contains <Sect> @@ -6836,10 +6836,10 @@ - + <Em> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Em' <Em> contains <TOC> @@ -6848,10 +6848,10 @@ - + <Em> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Em' <Em> contains <TOCI> @@ -6860,10 +6860,10 @@ - + <Em> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Em' <Em> contains <Aside> @@ -6872,10 +6872,10 @@ - + <Em> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Em' <Em> contains <BlockQuote> @@ -6884,10 +6884,10 @@ - + <Em> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Em' <Em> contains <P> @@ -6896,10 +6896,10 @@ - + <Em> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Em' <Em> contains <Hn> @@ -6908,10 +6908,10 @@ - + <Em> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Em' <Em> contains <H> @@ -6920,10 +6920,10 @@ - + <Em> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Em' <Em> contains <Title> @@ -6932,10 +6932,10 @@ - + <Em> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Em' <Em> contains <RB> @@ -6944,10 +6944,10 @@ - + <Em> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Em' <Em> contains <RT> @@ -6956,10 +6956,10 @@ - + <Em> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Em' <Em> contains <RP> @@ -6968,10 +6968,10 @@ - + <Em> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Em' <Em> contains <WT> @@ -6980,10 +6980,10 @@ - + <Em> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Em' <Em> contains <WP> @@ -6992,10 +6992,10 @@ - + <Em> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Em' <Em> contains <Index> @@ -7004,10 +7004,10 @@ - + <Em> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Em' <Em> contains <L> @@ -7016,10 +7016,10 @@ - + <Em> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Em' <Em> contains <LI> @@ -7028,10 +7028,10 @@ - + <Em> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Em' <Em> contains <LBody> @@ -7040,10 +7040,10 @@ - + <Em> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Em' <Em> contains <Table> @@ -7052,10 +7052,10 @@ - + <Em> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Em' <Em> contains <TR> @@ -7064,10 +7064,10 @@ - + <Em> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Em' <Em> contains <TH> @@ -7076,10 +7076,10 @@ - + <Em> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Em' <Em> contains <TD> @@ -7088,10 +7088,10 @@ - + <Em> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Em' <Em> contains <THead> @@ -7100,10 +7100,10 @@ - + <Em> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Em' <Em> contains <TBody> @@ -7112,10 +7112,10 @@ - + <Em> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Em' <Em> contains <TFoot> @@ -7124,10 +7124,10 @@ - + <Em> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Em' <Em> contains <Caption> @@ -7136,10 +7136,10 @@ - + <Strong> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Strong' <Strong> contains <Document> @@ -7148,10 +7148,10 @@ - + <Strong> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Strong' <Strong> contains <DocumentFragment> @@ -7160,10 +7160,10 @@ - + <Strong> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Strong' <Strong> contains <Part> @@ -7172,10 +7172,10 @@ - + <Strong> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Strong' <Strong> contains <Art> @@ -7184,10 +7184,10 @@ - + <Strong> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Strong' <Strong> contains <Div> @@ -7196,10 +7196,10 @@ - + <Strong> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Strong' <Strong> contains <Sect> @@ -7208,10 +7208,10 @@ - + <Strong> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Strong' <Strong> contains <TOC> @@ -7220,10 +7220,10 @@ - + <Strong> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Strong' <Strong> contains <TOCI> @@ -7232,10 +7232,10 @@ - + <Strong> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Strong' <Strong> contains <Aside> @@ -7244,10 +7244,10 @@ - + <Strong> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Strong' <Strong> contains <BlockQuote> @@ -7256,10 +7256,10 @@ - + <Strong> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Strong' <Strong> contains <P> @@ -7268,10 +7268,10 @@ - + <Strong> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Strong' <Strong> contains <Hn> @@ -7280,10 +7280,10 @@ - + <Strong> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Strong' <Strong> contains <H> @@ -7292,10 +7292,10 @@ - + <Strong> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Strong' <Strong> contains <Title> @@ -7304,10 +7304,10 @@ - + <Strong> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Strong' <Strong> contains <RB> @@ -7316,10 +7316,10 @@ - + <Strong> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Strong' <Strong> contains <RT> @@ -7328,10 +7328,10 @@ - + <Strong> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Strong' <Strong> contains <RP> @@ -7340,10 +7340,10 @@ - + <Strong> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Strong' <Strong> contains <WT> @@ -7352,10 +7352,10 @@ - + <Strong> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Strong' <Strong> contains <WP> @@ -7364,10 +7364,10 @@ - + <Strong> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Strong' <Strong> contains <Index> @@ -7376,10 +7376,10 @@ - + <Strong> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Strong' <Strong> contains <L> @@ -7388,10 +7388,10 @@ - + <Strong> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Strong' <Strong> contains <LI> @@ -7400,10 +7400,10 @@ - + <Strong> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Strong' <Strong> contains <LBody> @@ -7412,10 +7412,10 @@ - + <Strong> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Strong' <Strong> contains <Table> @@ -7424,10 +7424,10 @@ - + <Strong> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Strong' <Strong> contains <TR> @@ -7436,10 +7436,10 @@ - + <Strong> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Strong' <Strong> contains <TH> @@ -7448,10 +7448,10 @@ - + <Strong> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Strong' <Strong> contains <TD> @@ -7460,10 +7460,10 @@ - + <Strong> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Strong' <Strong> contains <THead> @@ -7472,10 +7472,10 @@ - + <Strong> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Strong' <Strong> contains <TBody> @@ -7484,10 +7484,10 @@ - + <Strong> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Strong' <Strong> contains <TFoot> @@ -7496,10 +7496,10 @@ - + <Strong> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Strong' <Strong> contains <Caption> @@ -7508,10 +7508,10 @@ - + <Span> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Span' <Span> contains <Document> @@ -7520,10 +7520,10 @@ - + <Span> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Span' <Span> contains <DocumentFragment> @@ -7532,10 +7532,10 @@ - + <Span> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Span' <Span> contains <Part> @@ -7544,10 +7544,10 @@ - + <Span> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Span' <Span> contains <Art> @@ -7556,10 +7556,10 @@ - + <Span> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Span' <Span> contains <Div> @@ -7568,10 +7568,10 @@ - + <Span> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Span' <Span> contains <Sect> @@ -7580,10 +7580,10 @@ - + <Span> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Span' <Span> contains <TOC> @@ -7592,10 +7592,10 @@ - + <Span> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Span' <Span> contains <TOCI> @@ -7604,10 +7604,10 @@ - + <Span> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Span' <Span> contains <Aside> @@ -7616,10 +7616,10 @@ - + <Span> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Span' <Span> contains <BlockQuote> @@ -7628,10 +7628,10 @@ - + <Span> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Span' <Span> contains <P> @@ -7640,10 +7640,10 @@ - + <Span> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Span' <Span> contains <Hn> @@ -7652,10 +7652,10 @@ - + <Span> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Span' <Span> contains <H> @@ -7664,10 +7664,10 @@ - + <Span> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Span' <Span> contains <Title> @@ -7676,10 +7676,10 @@ - + <Span> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Span' <Span> contains <RB> @@ -7688,10 +7688,10 @@ - + <Span> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Span' <Span> contains <RT> @@ -7700,10 +7700,10 @@ - + <Span> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Span' <Span> contains <RP> @@ -7712,10 +7712,10 @@ - + <Span> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Span' <Span> contains <WT> @@ -7724,10 +7724,10 @@ - + <Span> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Span' <Span> contains <WP> @@ -7736,10 +7736,10 @@ - + <Span> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Span' <Span> contains <Index> @@ -7748,10 +7748,10 @@ - + <Span> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Span' <Span> contains <L> @@ -7760,10 +7760,10 @@ - + <Span> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Span' <Span> contains <LI> @@ -7772,10 +7772,10 @@ - + <Span> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Span' <Span> contains <LBody> @@ -7784,10 +7784,10 @@ - + <Span> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Span' <Span> contains <Table> @@ -7796,10 +7796,10 @@ - + <Span> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Span' <Span> contains <TR> @@ -7808,10 +7808,10 @@ - + <Span> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Span' <Span> contains <TH> @@ -7820,10 +7820,10 @@ - + <Span> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Span' <Span> contains <TD> @@ -7832,10 +7832,10 @@ - + <Span> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Span' <Span> contains <THead> @@ -7844,10 +7844,10 @@ - + <Span> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Span' <Span> contains <TBody> @@ -7856,10 +7856,10 @@ - + <Span> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Span' <Span> contains <TFoot> @@ -7868,10 +7868,10 @@ - + <Span> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Span' <Span> contains <Caption> @@ -7880,10 +7880,10 @@ - + <Quote> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Quote' <Quote> contains <Document> @@ -7892,10 +7892,10 @@ - + <Quote> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Quote' <Quote> contains <DocumentFragment> @@ -7904,10 +7904,10 @@ - + <Quote> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Quote' <Quote> contains <Part> @@ -7916,10 +7916,10 @@ - + <Quote> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Quote' <Quote> contains <Art> @@ -7928,10 +7928,10 @@ - + <Quote> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Quote' <Quote> contains <Div> @@ -7940,10 +7940,10 @@ - + <Quote> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Quote' <Quote> contains <Sect> @@ -7952,10 +7952,10 @@ - + <Quote> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Quote' <Quote> contains <TOC> @@ -7964,10 +7964,10 @@ - + <Quote> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Quote' <Quote> contains <TOCI> @@ -7976,10 +7976,10 @@ - + <Quote> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Quote' <Quote> contains <Aside> @@ -7988,10 +7988,10 @@ - + <Quote> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Quote' <Quote> contains <BlockQuote> @@ -8000,10 +8000,10 @@ - + <Quote> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Quote' <Quote> contains <P> @@ -8012,10 +8012,10 @@ - + <Quote> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Quote' <Quote> contains <Hn> @@ -8024,10 +8024,10 @@ - + <Quote> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Quote' <Quote> contains <H> @@ -8036,10 +8036,10 @@ - + <Quote> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Quote' <Quote> contains <Title> @@ -8048,10 +8048,10 @@ - + <Quote> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Quote' <Quote> contains <RB> @@ -8060,10 +8060,10 @@ - + <Quote> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Quote' <Quote> contains <RT> @@ -8072,10 +8072,10 @@ - + <Quote> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Quote' <Quote> contains <RP> @@ -8084,10 +8084,10 @@ - + <Quote> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Quote' <Quote> contains <WT> @@ -8096,10 +8096,10 @@ - + <Quote> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Quote' <Quote> contains <WP> @@ -8108,10 +8108,10 @@ - + <Quote> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Quote' <Quote> contains <Index> @@ -8120,10 +8120,10 @@ - + <Quote> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Quote' <Quote> contains <L> @@ -8132,10 +8132,10 @@ - + <Quote> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Quote' <Quote> contains <LI> @@ -8144,10 +8144,10 @@ - + <Quote> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Quote' <Quote> contains <LBody> @@ -8156,10 +8156,10 @@ - + <Quote> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Quote' <Quote> contains <Table> @@ -8168,10 +8168,10 @@ - + <Quote> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Quote' <Quote> contains <TR> @@ -8180,10 +8180,10 @@ - + <Quote> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Quote' <Quote> contains <TH> @@ -8192,10 +8192,10 @@ - + <Quote> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Quote' <Quote> contains <TD> @@ -8204,10 +8204,10 @@ - + <Quote> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Quote' <Quote> contains <THead> @@ -8216,10 +8216,10 @@ - + <Quote> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Quote' <Quote> contains <TBody> @@ -8228,10 +8228,10 @@ - + <Quote> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Quote' <Quote> contains <TFoot> @@ -8240,10 +8240,10 @@ - + <Quote> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Quote' <Quote> contains <Caption> @@ -8252,10 +8252,10 @@ - + <Link> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Link' <Link> contains <Document> @@ -8264,10 +8264,10 @@ - + <Link> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Link' <Link> contains <TOC> @@ -8276,10 +8276,10 @@ - + <Link> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Link' <Link> contains <TOCI> @@ -8291,7 +8291,7 @@ <Link> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Link' <Link> contains <Link> @@ -8300,10 +8300,10 @@ - + <Link> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Link' <Link> contains <RB> @@ -8312,10 +8312,10 @@ - + <Link> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Link' <Link> contains <RT> @@ -8324,10 +8324,10 @@ - + <Link> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Link' <Link> contains <RP> @@ -8336,10 +8336,10 @@ - + <Link> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Link' <Link> contains <WT> @@ -8348,10 +8348,10 @@ - + <Link> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Link' <Link> contains <WP> @@ -8360,10 +8360,10 @@ - + <Link> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Link' <Link> contains <Index> @@ -8372,10 +8372,10 @@ - + <Link> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Link' <Link> contains <LI> @@ -8384,10 +8384,10 @@ - + <Link> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Link' <Link> contains <LBody> @@ -8396,10 +8396,10 @@ - + <Link> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Link' <Link> contains <TR> @@ -8408,10 +8408,10 @@ - + <Link> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Link' <Link> contains <TH> @@ -8420,10 +8420,10 @@ - + <Link> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Link' <Link> contains <TD> @@ -8432,10 +8432,10 @@ - + <Link> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Link' <Link> contains <THead> @@ -8444,10 +8444,10 @@ - + <Link> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Link' <Link> contains <TBody> @@ -8456,10 +8456,10 @@ - + <Link> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Link' <Link> contains <TFoot> @@ -8468,10 +8468,10 @@ - + <Reference> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Reference' <Reference> contains <Document> @@ -8480,10 +8480,10 @@ - + <Reference> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Reference' <Reference> contains <DocumentFragment> @@ -8492,10 +8492,10 @@ - + <Reference> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Reference' <Reference> contains <Part> @@ -8504,10 +8504,10 @@ - + <Reference> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Reference' <Reference> contains <Art> @@ -8516,10 +8516,10 @@ - + <Reference> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Reference' <Reference> contains <Div> @@ -8528,10 +8528,10 @@ - + <Reference> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Reference' <Reference> contains <Sect> @@ -8540,10 +8540,10 @@ - + <Reference> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Reference' <Reference> contains <TOC> @@ -8552,10 +8552,10 @@ - + <Reference> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Reference' <Reference> contains <TOCI> @@ -8564,10 +8564,10 @@ - + <Reference> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Reference' <Reference> contains <Aside> @@ -8576,10 +8576,10 @@ - + <Reference> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Reference' <Reference> contains <BlockQuote> @@ -8588,10 +8588,10 @@ - + <Reference> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Reference' <Reference> contains <P> @@ -8600,10 +8600,10 @@ - + <Reference> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Reference' <Reference> contains <Code> @@ -8612,10 +8612,10 @@ - + <Reference> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Reference' <Reference> contains <Hn> @@ -8624,10 +8624,10 @@ - + <Reference> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Reference' <Reference> contains <H> @@ -8636,10 +8636,10 @@ - + <Reference> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Reference' <Reference> contains <Title> @@ -8648,10 +8648,10 @@ - + <Reference> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Reference' <Reference> contains <Sub> @@ -8660,10 +8660,10 @@ - + <Reference> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Reference' <Reference> contains <Quote> @@ -8675,7 +8675,7 @@ <Reference> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Reference' <Reference> contains <Reference> @@ -8684,10 +8684,10 @@ - + <Reference> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Reference' <Reference> contains <Form> @@ -8696,10 +8696,10 @@ - + <Reference> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Reference' <Reference> contains <Ruby> @@ -8708,10 +8708,10 @@ - + <Reference> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Reference' <Reference> contains <RB> @@ -8720,10 +8720,10 @@ - + <Reference> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Reference' <Reference> contains <RT> @@ -8732,10 +8732,10 @@ - + <Reference> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Reference' <Reference> contains <RP> @@ -8744,10 +8744,10 @@ - + <Reference> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Reference' <Reference> contains <Warichu> @@ -8756,10 +8756,10 @@ - + <Reference> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Reference' <Reference> contains <WT> @@ -8768,10 +8768,10 @@ - + <Reference> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Reference' <Reference> contains <WP> @@ -8780,10 +8780,10 @@ - + <Reference> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Reference' <Reference> contains <Index> @@ -8792,10 +8792,10 @@ - + <Reference> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Reference' <Reference> contains <L> @@ -8804,10 +8804,10 @@ - + <Reference> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Reference' <Reference> contains <LI> @@ -8816,10 +8816,10 @@ - + <Reference> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Reference' <Reference> contains <LBody> @@ -8828,10 +8828,10 @@ - + <Reference> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Reference' <Reference> contains <Table> @@ -8840,10 +8840,10 @@ - + <Reference> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Reference' <Reference> contains <TR> @@ -8852,10 +8852,10 @@ - + <Reference> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Reference' <Reference> contains <TH> @@ -8864,10 +8864,10 @@ - + <Reference> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Reference' <Reference> contains <TD> @@ -8876,10 +8876,10 @@ - + <Reference> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Reference' <Reference> contains <THead> @@ -8888,10 +8888,10 @@ - + <Reference> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Reference' <Reference> contains <TBody> @@ -8900,10 +8900,10 @@ - + <Reference> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Reference' <Reference> contains <TFoot> @@ -8912,10 +8912,10 @@ - + <Reference> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Reference' <Reference> contains <Caption> @@ -8924,10 +8924,10 @@ - + <Reference> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'Reference' <Reference> contains <Formula> @@ -8936,10 +8936,10 @@ - + <Annot> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Annot' <Annot> contains <Document> @@ -8948,10 +8948,10 @@ - + <Annot> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Annot' <Annot> contains <TOC> @@ -8960,10 +8960,10 @@ - + <Annot> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Annot' <Annot> contains <TOCI> @@ -8972,10 +8972,10 @@ - + <Annot> shall not contain <Private> - kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0 + parentStandardType != 'Annot' <Annot> contains <Private> @@ -8984,10 +8984,10 @@ - + <Annot> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Annot' <Annot> contains <RB> @@ -8996,10 +8996,10 @@ - + <Annot> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Annot' <Annot> contains <RT> @@ -9008,10 +9008,10 @@ - + <Annot> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Annot' <Annot> contains <RP> @@ -9020,10 +9020,10 @@ - + <Annot> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Annot' <Annot> contains <WT> @@ -9032,10 +9032,10 @@ - + <Annot> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Annot' <Annot> contains <WP> @@ -9044,10 +9044,10 @@ - + <Annot> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Annot' <Annot> contains <Index> @@ -9056,10 +9056,10 @@ - + <Annot> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Annot' <Annot> contains <LI> @@ -9068,10 +9068,10 @@ - + <Annot> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Annot' <Annot> contains <LBody> @@ -9080,10 +9080,10 @@ - + <Annot> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Annot' <Annot> contains <TR> @@ -9092,10 +9092,10 @@ - + <Annot> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Annot' <Annot> contains <TH> @@ -9104,10 +9104,10 @@ - + <Annot> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Annot' <Annot> contains <TD> @@ -9116,10 +9116,10 @@ - + <Annot> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Annot' <Annot> contains <THead> @@ -9128,10 +9128,10 @@ - + <Annot> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Annot' <Annot> contains <TBody> @@ -9140,10 +9140,10 @@ - + <Annot> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Annot' <Annot> contains <TFoot> @@ -9152,10 +9152,10 @@ - + <Form> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Form' <Form> contains <Document> @@ -9164,10 +9164,10 @@ - + <Form> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Form' <Form> contains <DocumentFragment> @@ -9176,10 +9176,10 @@ - + <Form> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Form' <Form> contains <Art> @@ -9188,10 +9188,10 @@ - + <Form> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Form' <Form> contains <Sect> @@ -9200,10 +9200,10 @@ - + <Form> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Form' <Form> contains <TOC> @@ -9212,10 +9212,10 @@ - + <Form> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Form' <Form> contains <TOCI> @@ -9224,10 +9224,10 @@ - + <Form> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Form' <Form> contains <Aside> @@ -9236,10 +9236,10 @@ - + <Form> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Form' <Form> contains <BlockQuote> @@ -9248,10 +9248,10 @@ - + <Form> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Form' <Form> contains <P> @@ -9260,10 +9260,10 @@ - + <Form> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Form' <Form> contains <Hn> @@ -9272,10 +9272,10 @@ - + <Form> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Form' <Form> contains <H> @@ -9284,10 +9284,10 @@ - + <Form> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Form' <Form> contains <Title> @@ -9296,10 +9296,10 @@ - + <Form> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Form' <Form> contains <Sub> @@ -9308,10 +9308,10 @@ - + <Form> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Form' <Form> contains <Em> @@ -9320,10 +9320,10 @@ - + <Form> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Form' <Form> contains <Strong> @@ -9332,10 +9332,10 @@ - + <Form> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Form' <Form> contains <Span> @@ -9344,10 +9344,10 @@ - + <Form> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Form' <Form> contains <Quote> @@ -9356,10 +9356,10 @@ - + <Form> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Form' <Form> contains <Link> @@ -9368,10 +9368,10 @@ - + <Form> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'Form' <Form> contains <Annot> @@ -9383,7 +9383,7 @@ <Form> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Form' <Form> contains <Form> @@ -9392,10 +9392,10 @@ - + <Form> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Form' <Form> contains <Ruby> @@ -9404,10 +9404,10 @@ - + <Form> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Form' <Form> contains <RB> @@ -9416,10 +9416,10 @@ - + <Form> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Form' <Form> contains <RT> @@ -9428,10 +9428,10 @@ - + <Form> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Form' <Form> contains <RP> @@ -9440,10 +9440,10 @@ - + <Form> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Form' <Form> contains <Warichu> @@ -9452,10 +9452,10 @@ - + <Form> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Form' <Form> contains <WT> @@ -9464,10 +9464,10 @@ - + <Form> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Form' <Form> contains <WP> @@ -9476,10 +9476,10 @@ - + <Form> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Form' <Form> contains <Index> @@ -9488,10 +9488,10 @@ - + <Form> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Form' <Form> contains <LI> @@ -9500,10 +9500,10 @@ - + <Form> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Form' <Form> contains <LBody> @@ -9512,10 +9512,10 @@ - + <Form> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Form' <Form> contains <TR> @@ -9524,10 +9524,10 @@ - + <Form> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Form' <Form> contains <TH> @@ -9536,10 +9536,10 @@ - + <Form> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Form' <Form> contains <TD> @@ -9548,10 +9548,10 @@ - + <Form> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Form' <Form> contains <THead> @@ -9560,10 +9560,10 @@ - + <Form> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Form' <Form> contains <TBody> @@ -9572,10 +9572,10 @@ - + <Form> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Form' <Form> contains <TFoot> @@ -9596,10 +9596,10 @@ - + <Ruby> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Document> @@ -9608,10 +9608,10 @@ - + <Ruby> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <DocumentFragment> @@ -9620,10 +9620,10 @@ - + <Ruby> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Part> @@ -9632,10 +9632,10 @@ - + <Ruby> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Art> @@ -9644,10 +9644,10 @@ - + <Ruby> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Div> @@ -9656,10 +9656,10 @@ - + <Ruby> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Sect> @@ -9668,10 +9668,10 @@ - + <Ruby> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TOC> @@ -9680,10 +9680,10 @@ - + <Ruby> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TOCI> @@ -9692,10 +9692,10 @@ - + <Ruby> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Aside> @@ -9704,10 +9704,10 @@ - + <Ruby> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <BlockQuote> @@ -9716,10 +9716,10 @@ - + <Ruby> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <P> @@ -9728,10 +9728,10 @@ - + <Ruby> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Note> @@ -9740,10 +9740,10 @@ - + <Ruby> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Code> @@ -9752,10 +9752,10 @@ - + <Ruby> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Hn> @@ -9764,10 +9764,10 @@ - + <Ruby> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <H> @@ -9776,10 +9776,10 @@ - + <Ruby> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Title> @@ -9788,10 +9788,10 @@ - + <Ruby> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Sub> @@ -9800,10 +9800,10 @@ - + <Ruby> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Lbl> @@ -9812,10 +9812,10 @@ - + <Ruby> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Em> @@ -9824,10 +9824,10 @@ - + <Ruby> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Strong> @@ -9836,10 +9836,10 @@ - + <Ruby> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Span> @@ -9848,10 +9848,10 @@ - + <Ruby> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Quote> @@ -9860,10 +9860,10 @@ - + <Ruby> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Link> @@ -9872,10 +9872,10 @@ - + <Ruby> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Reference> @@ -9884,10 +9884,10 @@ - + <Ruby> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Annot> @@ -9896,10 +9896,10 @@ - + <Ruby> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Form> @@ -9911,7 +9911,7 @@ <Ruby> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Ruby> @@ -9920,10 +9920,10 @@ - + <Ruby> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Warichu> @@ -9932,10 +9932,10 @@ - + <Ruby> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <WT> @@ -9944,10 +9944,10 @@ - + <Ruby> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <WP> @@ -9956,10 +9956,10 @@ - + <Ruby> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <FENote> @@ -9968,10 +9968,10 @@ - + <Ruby> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Index> @@ -9980,10 +9980,10 @@ - + <Ruby> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <L> @@ -9992,10 +9992,10 @@ - + <Ruby> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <LI> @@ -10004,10 +10004,10 @@ - + <Ruby> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <LBody> @@ -10016,10 +10016,10 @@ - + <Ruby> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <BibEntry> @@ -10028,10 +10028,10 @@ - + <Ruby> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Table> @@ -10040,10 +10040,10 @@ - + <Ruby> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TR> @@ -10052,10 +10052,10 @@ - + <Ruby> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TH> @@ -10064,10 +10064,10 @@ - + <Ruby> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TD> @@ -10076,10 +10076,10 @@ - + <Ruby> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <THead> @@ -10088,10 +10088,10 @@ - + <Ruby> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TBody> @@ -10100,10 +10100,10 @@ - + <Ruby> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TFoot> @@ -10112,10 +10112,10 @@ - + <Ruby> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Caption> @@ -10124,10 +10124,10 @@ - + <Ruby> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Figure> @@ -10136,10 +10136,10 @@ - + <Ruby> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Formula> @@ -10148,10 +10148,10 @@ - + <Ruby> shall not contain <Artifact> - kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Artifact> @@ -10160,10 +10160,10 @@ - + <RB> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'RB' <RB> contains <Document> @@ -10172,10 +10172,10 @@ - + <RB> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'RB' <RB> contains <DocumentFragment> @@ -10184,10 +10184,10 @@ - + <RB> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'RB' <RB> contains <Part> @@ -10196,10 +10196,10 @@ - + <RB> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'RB' <RB> contains <Art> @@ -10208,10 +10208,10 @@ - + <RB> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'RB' <RB> contains <Div> @@ -10220,10 +10220,10 @@ - + <RB> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'RB' <RB> contains <Sect> @@ -10232,10 +10232,10 @@ - + <RB> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'RB' <RB> contains <TOC> @@ -10244,10 +10244,10 @@ - + <RB> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'RB' <RB> contains <TOCI> @@ -10256,10 +10256,10 @@ - + <RB> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'RB' <RB> contains <Aside> @@ -10268,10 +10268,10 @@ - + <RB> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'RB' <RB> contains <BlockQuote> @@ -10280,10 +10280,10 @@ - + <RB> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'RB' <RB> contains <P> @@ -10292,10 +10292,10 @@ - + <RB> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'RB' <RB> contains <Note> @@ -10304,10 +10304,10 @@ - + <RB> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'RB' <RB> contains <Code> @@ -10316,10 +10316,10 @@ - + <RB> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'RB' <RB> contains <Hn> @@ -10328,10 +10328,10 @@ - + <RB> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'RB' <RB> contains <H> @@ -10340,10 +10340,10 @@ - + <RB> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'RB' <RB> contains <Title> @@ -10352,10 +10352,10 @@ - + <RB> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'RB' <RB> contains <Lbl> @@ -10364,10 +10364,10 @@ - + <RB> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'RB' <RB> contains <Ruby> @@ -10379,7 +10379,7 @@ <RB> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'RB' <RB> contains <RB> @@ -10388,10 +10388,10 @@ - + <RB> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'RB' <RB> contains <RT> @@ -10400,10 +10400,10 @@ - + <RB> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'RB' <RB> contains <RP> @@ -10412,10 +10412,10 @@ - + <RB> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'RB' <RB> contains <Warichu> @@ -10424,10 +10424,10 @@ - + <RB> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'RB' <RB> contains <WT> @@ -10436,10 +10436,10 @@ - + <RB> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'RB' <RB> contains <WP> @@ -10448,10 +10448,10 @@ - + <RB> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'RB' <RB> contains <FENote> @@ -10460,10 +10460,10 @@ - + <RB> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'RB' <RB> contains <Index> @@ -10472,10 +10472,10 @@ - + <RB> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'RB' <RB> contains <L> @@ -10484,10 +10484,10 @@ - + <RB> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'RB' <RB> contains <LI> @@ -10496,10 +10496,10 @@ - + <RB> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'RB' <RB> contains <LBody> @@ -10508,10 +10508,10 @@ - + <RB> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'RB' <RB> contains <BibEntry> @@ -10520,10 +10520,10 @@ - + <RB> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'RB' <RB> contains <Table> @@ -10532,10 +10532,10 @@ - + <RB> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'RB' <RB> contains <TR> @@ -10544,10 +10544,10 @@ - + <RB> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'RB' <RB> contains <TH> @@ -10556,10 +10556,10 @@ - + <RB> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'RB' <RB> contains <TD> @@ -10568,10 +10568,10 @@ - + <RB> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'RB' <RB> contains <THead> @@ -10580,10 +10580,10 @@ - + <RB> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'RB' <RB> contains <TBody> @@ -10592,10 +10592,10 @@ - + <RB> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'RB' <RB> contains <TFoot> @@ -10604,10 +10604,10 @@ - + <RB> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'RB' <RB> contains <Caption> @@ -10616,10 +10616,10 @@ - + <RB> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'RB' <RB> contains <Figure> @@ -10628,10 +10628,10 @@ - + <RB> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'RB' <RB> contains <Formula> @@ -10640,10 +10640,10 @@ - + <RT> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'RT' <RT> contains <Document> @@ -10652,10 +10652,10 @@ - + <RT> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'RT' <RT> contains <DocumentFragment> @@ -10664,10 +10664,10 @@ - + <RT> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'RT' <RT> contains <Part> @@ -10676,10 +10676,10 @@ - + <RT> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'RT' <RT> contains <Art> @@ -10688,10 +10688,10 @@ - + <RT> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'RT' <RT> contains <Div> @@ -10700,10 +10700,10 @@ - + <RT> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'RT' <RT> contains <Sect> @@ -10712,10 +10712,10 @@ - + <RT> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'RT' <RT> contains <TOC> @@ -10724,10 +10724,10 @@ - + <RT> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'RT' <RT> contains <TOCI> @@ -10736,10 +10736,10 @@ - + <RT> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'RT' <RT> contains <Aside> @@ -10748,10 +10748,10 @@ - + <RT> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'RT' <RT> contains <BlockQuote> @@ -10760,10 +10760,10 @@ - + <RT> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'RT' <RT> contains <P> @@ -10772,10 +10772,10 @@ - + <RT> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'RT' <RT> contains <Note> @@ -10784,10 +10784,10 @@ - + <RT> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'RT' <RT> contains <Code> @@ -10796,10 +10796,10 @@ - + <RT> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'RT' <RT> contains <Hn> @@ -10808,10 +10808,10 @@ - + <RT> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'RT' <RT> contains <H> @@ -10820,10 +10820,10 @@ - + <RT> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'RT' <RT> contains <Title> @@ -10832,10 +10832,10 @@ - + <RT> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'RT' <RT> contains <Lbl> @@ -10844,10 +10844,10 @@ - + <RT> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'RT' <RT> contains <Ruby> @@ -10856,10 +10856,10 @@ - + <RT> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'RT' <RT> contains <RB> @@ -10871,7 +10871,7 @@ <RT> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'RT' <RT> contains <RT> @@ -10880,10 +10880,10 @@ - + <RT> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'RT' <RT> contains <RP> @@ -10892,10 +10892,10 @@ - + <RT> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'RT' <RT> contains <Warichu> @@ -10904,10 +10904,10 @@ - + <RT> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'RT' <RT> contains <WT> @@ -10916,10 +10916,10 @@ - + <RT> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'RT' <RT> contains <WP> @@ -10928,10 +10928,10 @@ - + <RT> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'RT' <RT> contains <FENote> @@ -10940,10 +10940,10 @@ - + <RT> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'RT' <RT> contains <Index> @@ -10952,10 +10952,10 @@ - + <RT> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'RT' <RT> contains <L> @@ -10964,10 +10964,10 @@ - + <RT> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'RT' <RT> contains <LI> @@ -10976,10 +10976,10 @@ - + <RT> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'RT' <RT> contains <LBody> @@ -10988,10 +10988,10 @@ - + <RT> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'RT' <RT> contains <BibEntry> @@ -11000,10 +11000,10 @@ - + <RT> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'RT' <RT> contains <Table> @@ -11012,10 +11012,10 @@ - + <RT> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'RT' <RT> contains <TR> @@ -11024,10 +11024,10 @@ - + <RT> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'RT' <RT> contains <TH> @@ -11036,10 +11036,10 @@ - + <RT> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'RT' <RT> contains <TD> @@ -11048,10 +11048,10 @@ - + <RT> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'RT' <RT> contains <THead> @@ -11060,10 +11060,10 @@ - + <RT> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'RT' <RT> contains <TBody> @@ -11072,10 +11072,10 @@ - + <RT> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'RT' <RT> contains <TFoot> @@ -11084,10 +11084,10 @@ - + <RT> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'RT' <RT> contains <Caption> @@ -11096,10 +11096,10 @@ - + <RT> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'RT' <RT> contains <Figure> @@ -11108,10 +11108,10 @@ - + <RT> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'RT' <RT> contains <Formula> @@ -11120,10 +11120,10 @@ - + <RP> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'RP' <RP> contains <Document> @@ -11132,10 +11132,10 @@ - + <RP> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'RP' <RP> contains <DocumentFragment> @@ -11144,10 +11144,10 @@ - + <RP> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'RP' <RP> contains <Part> @@ -11156,10 +11156,10 @@ - + <RP> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'RP' <RP> contains <Art> @@ -11168,10 +11168,10 @@ - + <RP> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'RP' <RP> contains <Div> @@ -11180,10 +11180,10 @@ - + <RP> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'RP' <RP> contains <Sect> @@ -11192,10 +11192,10 @@ - + <RP> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'RP' <RP> contains <TOC> @@ -11204,10 +11204,10 @@ - + <RP> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'RP' <RP> contains <TOCI> @@ -11216,10 +11216,10 @@ - + <RP> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'RP' <RP> contains <Aside> @@ -11228,10 +11228,10 @@ - + <RP> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'RP' <RP> contains <BlockQuote> @@ -11240,10 +11240,10 @@ - + <RP> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'RP' <RP> contains <P> @@ -11252,10 +11252,10 @@ - + <RP> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'RP' <RP> contains <Note> @@ -11264,10 +11264,10 @@ - + <RP> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'RP' <RP> contains <Code> @@ -11276,10 +11276,10 @@ - + <RP> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'RP' <RP> contains <Hn> @@ -11288,10 +11288,10 @@ - + <RP> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'RP' <RP> contains <H> @@ -11300,10 +11300,10 @@ - + <RP> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'RP' <RP> contains <Title> @@ -11312,10 +11312,10 @@ - + <RP> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'RP' <RP> contains <Lbl> @@ -11324,10 +11324,10 @@ - + <RP> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'RP' <RP> contains <Ruby> @@ -11336,10 +11336,10 @@ - + <RP> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'RP' <RP> contains <RB> @@ -11348,10 +11348,10 @@ - + <RP> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'RP' <RP> contains <RT> @@ -11363,7 +11363,7 @@ <RP> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'RP' <RP> contains <RP> @@ -11372,10 +11372,10 @@ - + <RP> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'RP' <RP> contains <Warichu> @@ -11384,10 +11384,10 @@ - + <RP> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'RP' <RP> contains <WT> @@ -11396,10 +11396,10 @@ - + <RP> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'RP' <RP> contains <WP> @@ -11408,10 +11408,10 @@ - + <RP> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'RP' <RP> contains <FENote> @@ -11420,10 +11420,10 @@ - + <RP> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'RP' <RP> contains <Index> @@ -11432,10 +11432,10 @@ - + <RP> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'RP' <RP> contains <L> @@ -11444,10 +11444,10 @@ - + <RP> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'RP' <RP> contains <LI> @@ -11456,10 +11456,10 @@ - + <RP> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'RP' <RP> contains <LBody> @@ -11468,10 +11468,10 @@ - + <RP> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'RP' <RP> contains <BibEntry> @@ -11480,10 +11480,10 @@ - + <RP> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'RP' <RP> contains <Table> @@ -11492,10 +11492,10 @@ - + <RP> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'RP' <RP> contains <TR> @@ -11504,10 +11504,10 @@ - + <RP> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'RP' <RP> contains <TH> @@ -11516,10 +11516,10 @@ - + <RP> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'RP' <RP> contains <TD> @@ -11528,10 +11528,10 @@ - + <RP> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'RP' <RP> contains <THead> @@ -11540,10 +11540,10 @@ - + <RP> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'RP' <RP> contains <TBody> @@ -11552,10 +11552,10 @@ - + <RP> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'RP' <RP> contains <TFoot> @@ -11564,10 +11564,10 @@ - + <RP> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'RP' <RP> contains <Caption> @@ -11576,10 +11576,10 @@ - + <RP> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'RP' <RP> contains <Figure> @@ -11588,10 +11588,10 @@ - + <RP> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'RP' <RP> contains <Formula> @@ -11600,10 +11600,10 @@ - + <Warichu> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Document> @@ -11612,10 +11612,10 @@ - + <Warichu> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <DocumentFragment> @@ -11624,10 +11624,10 @@ - + <Warichu> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Part> @@ -11636,10 +11636,10 @@ - + <Warichu> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Art> @@ -11648,10 +11648,10 @@ - + <Warichu> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Div> @@ -11660,10 +11660,10 @@ - + <Warichu> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Sect> @@ -11672,10 +11672,10 @@ - + <Warichu> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TOC> @@ -11684,10 +11684,10 @@ - + <Warichu> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TOCI> @@ -11696,10 +11696,10 @@ - + <Warichu> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Aside> @@ -11708,10 +11708,10 @@ - + <Warichu> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <BlockQuote> @@ -11720,10 +11720,10 @@ - + <Warichu> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <P> @@ -11732,10 +11732,10 @@ - + <Warichu> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Note> @@ -11744,10 +11744,10 @@ - + <Warichu> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Code> @@ -11756,10 +11756,10 @@ - + <Warichu> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Hn> @@ -11768,10 +11768,10 @@ - + <Warichu> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <H> @@ -11780,10 +11780,10 @@ - + <Warichu> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Title> @@ -11792,10 +11792,10 @@ - + <Warichu> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Sub> @@ -11804,10 +11804,10 @@ - + <Warichu> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Lbl> @@ -11816,10 +11816,10 @@ - + <Warichu> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Em> @@ -11828,10 +11828,10 @@ - + <Warichu> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Strong> @@ -11840,10 +11840,10 @@ - + <Warichu> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Span> @@ -11852,10 +11852,10 @@ - + <Warichu> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Quote> @@ -11864,10 +11864,10 @@ - + <Warichu> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Link> @@ -11876,10 +11876,10 @@ - + <Warichu> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Reference> @@ -11888,10 +11888,10 @@ - + <Warichu> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Annot> @@ -11900,10 +11900,10 @@ - + <Warichu> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Form> @@ -11912,10 +11912,10 @@ - + <Warichu> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Ruby> @@ -11924,10 +11924,10 @@ - + <Warichu> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <RB> @@ -11936,10 +11936,10 @@ - + <Warichu> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <RT> @@ -11948,10 +11948,10 @@ - + <Warichu> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <RP> @@ -11963,7 +11963,7 @@ <Warichu> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Warichu> @@ -11972,10 +11972,10 @@ - + <Warichu> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <FENote> @@ -11984,10 +11984,10 @@ - + <Warichu> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Index> @@ -11996,10 +11996,10 @@ - + <Warichu> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <L> @@ -12008,10 +12008,10 @@ - + <Warichu> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <LI> @@ -12020,10 +12020,10 @@ - + <Warichu> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <LBody> @@ -12032,10 +12032,10 @@ - + <Warichu> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <BibEntry> @@ -12044,10 +12044,10 @@ - + <Warichu> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Table> @@ -12056,10 +12056,10 @@ - + <Warichu> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TR> @@ -12068,10 +12068,10 @@ - + <Warichu> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TH> @@ -12080,10 +12080,10 @@ - + <Warichu> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TD> @@ -12092,10 +12092,10 @@ - + <Warichu> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <THead> @@ -12104,10 +12104,10 @@ - + <Warichu> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TBody> @@ -12116,10 +12116,10 @@ - + <Warichu> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TFoot> @@ -12128,10 +12128,10 @@ - + <Warichu> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Caption> @@ -12140,10 +12140,10 @@ - + <Warichu> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Figure> @@ -12152,10 +12152,10 @@ - + <Warichu> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Formula> @@ -12164,10 +12164,10 @@ - + <Warichu> shall not contain <Artifact> - kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Artifact> @@ -12176,10 +12176,10 @@ - + <WT> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'WT' <WT> contains <Document> @@ -12188,10 +12188,10 @@ - + <WT> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'WT' <WT> contains <DocumentFragment> @@ -12200,10 +12200,10 @@ - + <WT> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'WT' <WT> contains <Part> @@ -12212,10 +12212,10 @@ - + <WT> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'WT' <WT> contains <Art> @@ -12224,10 +12224,10 @@ - + <WT> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'WT' <WT> contains <Div> @@ -12236,10 +12236,10 @@ - + <WT> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'WT' <WT> contains <Sect> @@ -12248,10 +12248,10 @@ - + <WT> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'WT' <WT> contains <TOC> @@ -12260,10 +12260,10 @@ - + <WT> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'WT' <WT> contains <TOCI> @@ -12272,10 +12272,10 @@ - + <WT> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'WT' <WT> contains <Aside> @@ -12284,10 +12284,10 @@ - + <WT> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'WT' <WT> contains <BlockQuote> @@ -12296,10 +12296,10 @@ - + <WT> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'WT' <WT> contains <P> @@ -12308,10 +12308,10 @@ - + <WT> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'WT' <WT> contains <Note> @@ -12320,10 +12320,10 @@ - + <WT> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'WT' <WT> contains <Code> @@ -12332,10 +12332,10 @@ - + <WT> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'WT' <WT> contains <Hn> @@ -12344,10 +12344,10 @@ - + <WT> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'WT' <WT> contains <H> @@ -12356,10 +12356,10 @@ - + <WT> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'WT' <WT> contains <Title> @@ -12368,10 +12368,10 @@ - + <WT> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'WT' <WT> contains <Lbl> @@ -12380,10 +12380,10 @@ - + <WT> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'WT' <WT> contains <Ruby> @@ -12392,10 +12392,10 @@ - + <WT> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'WT' <WT> contains <RB> @@ -12404,10 +12404,10 @@ - + <WT> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'WT' <WT> contains <RT> @@ -12416,10 +12416,10 @@ - + <WT> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'WT' <WT> contains <RP> @@ -12428,10 +12428,10 @@ - + <WT> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'WT' <WT> contains <Warichu> @@ -12443,7 +12443,7 @@ <WT> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'WT' <WT> contains <WT> @@ -12452,10 +12452,10 @@ - + <WT> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'WT' <WT> contains <WP> @@ -12464,10 +12464,10 @@ - + <WT> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'WT' <WT> contains <FENote> @@ -12476,10 +12476,10 @@ - + <WT> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'WT' <WT> contains <Index> @@ -12488,10 +12488,10 @@ - + <WT> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'WT' <WT> contains <L> @@ -12500,10 +12500,10 @@ - + <WT> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'WT' <WT> contains <LI> @@ -12512,10 +12512,10 @@ - + <WT> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'WT' <WT> contains <LBody> @@ -12524,10 +12524,10 @@ - + <WT> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'WT' <WT> contains <BibEntry> @@ -12536,10 +12536,10 @@ - + <WT> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'WT' <WT> contains <Table> @@ -12548,10 +12548,10 @@ - + <WT> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'WT' <WT> contains <TR> @@ -12560,10 +12560,10 @@ - + <WT> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'WT' <WT> contains <TH> @@ -12572,10 +12572,10 @@ - + <WT> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'WT' <WT> contains <TD> @@ -12584,10 +12584,10 @@ - + <WT> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'WT' <WT> contains <THead> @@ -12596,10 +12596,10 @@ - + <WT> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'WT' <WT> contains <TBody> @@ -12608,10 +12608,10 @@ - + <WT> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'WT' <WT> contains <TFoot> @@ -12620,10 +12620,10 @@ - + <WT> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'WT' <WT> contains <Caption> @@ -12632,10 +12632,10 @@ - + <WT> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'WT' <WT> contains <Figure> @@ -12644,10 +12644,10 @@ - + <WT> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'WT' <WT> contains <Formula> @@ -12656,10 +12656,10 @@ - + <WP> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'WP' <WP> contains <Document> @@ -12668,10 +12668,10 @@ - + <WP> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'WP' <WP> contains <DocumentFragment> @@ -12680,10 +12680,10 @@ - + <WP> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'WP' <WP> contains <Part> @@ -12692,10 +12692,10 @@ - + <WP> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'WP' <WP> contains <Art> @@ -12704,10 +12704,10 @@ - + <WP> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'WP' <WP> contains <Div> @@ -12716,10 +12716,10 @@ - + <WP> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'WP' <WP> contains <Sect> @@ -12728,10 +12728,10 @@ - + <WP> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'WP' <WP> contains <TOC> @@ -12740,10 +12740,10 @@ - + <WP> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'WP' <WP> contains <TOCI> @@ -12752,10 +12752,10 @@ - + <WP> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'WP' <WP> contains <Aside> @@ -12764,10 +12764,10 @@ - + <WP> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'WP' <WP> contains <BlockQuote> @@ -12776,10 +12776,10 @@ - + <WP> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'WP' <WP> contains <P> @@ -12788,10 +12788,10 @@ - + <WP> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'WP' <WP> contains <Note> @@ -12800,10 +12800,10 @@ - + <WP> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'WP' <WP> contains <Code> @@ -12812,10 +12812,10 @@ - + <WP> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'WP' <WP> contains <Hn> @@ -12824,10 +12824,10 @@ - + <WP> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'WP' <WP> contains <H> @@ -12836,10 +12836,10 @@ - + <WP> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'WP' <WP> contains <Title> @@ -12848,10 +12848,10 @@ - + <WP> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'WP' <WP> contains <Lbl> @@ -12860,10 +12860,10 @@ - + <WP> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'WP' <WP> contains <Ruby> @@ -12872,10 +12872,10 @@ - + <WP> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'WP' <WP> contains <RB> @@ -12884,10 +12884,10 @@ - + <WP> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'WP' <WP> contains <RT> @@ -12896,10 +12896,10 @@ - + <WP> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'WP' <WP> contains <RP> @@ -12908,10 +12908,10 @@ - + <WP> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'WP' <WP> contains <Warichu> @@ -12920,10 +12920,10 @@ - + <WP> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'WP' <WP> contains <WT> @@ -12935,7 +12935,7 @@ <WP> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'WP' <WP> contains <WP> @@ -12944,10 +12944,10 @@ - + <WP> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'WP' <WP> contains <FENote> @@ -12956,10 +12956,10 @@ - + <WP> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'WP' <WP> contains <Index> @@ -12968,10 +12968,10 @@ - + <WP> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'WP' <WP> contains <L> @@ -12980,10 +12980,10 @@ - + <WP> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'WP' <WP> contains <LI> @@ -12992,10 +12992,10 @@ - + <WP> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'WP' <WP> contains <LBody> @@ -13004,10 +13004,10 @@ - + <WP> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'WP' <WP> contains <BibEntry> @@ -13016,10 +13016,10 @@ - + <WP> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'WP' <WP> contains <Table> @@ -13028,10 +13028,10 @@ - + <WP> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'WP' <WP> contains <TR> @@ -13040,10 +13040,10 @@ - + <WP> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'WP' <WP> contains <TH> @@ -13052,10 +13052,10 @@ - + <WP> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'WP' <WP> contains <TD> @@ -13064,10 +13064,10 @@ - + <WP> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'WP' <WP> contains <THead> @@ -13076,10 +13076,10 @@ - + <WP> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'WP' <WP> contains <TBody> @@ -13088,10 +13088,10 @@ - + <WP> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'WP' <WP> contains <TFoot> @@ -13100,10 +13100,10 @@ - + <WP> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'WP' <WP> contains <Caption> @@ -13112,10 +13112,10 @@ - + <WP> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'WP' <WP> contains <Figure> @@ -13124,10 +13124,10 @@ - + <WP> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'WP' <WP> contains <Formula> @@ -13136,10 +13136,10 @@ - + <FENote> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'FENote' <FENote> contains <Document> @@ -13148,10 +13148,10 @@ - + <FENote> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'FENote' <FENote> contains <TOC> @@ -13160,10 +13160,10 @@ - + <FENote> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'FENote' <FENote> contains <TOCI> @@ -13172,10 +13172,10 @@ - + <FENote> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'FENote' <FENote> contains <Hn> @@ -13184,10 +13184,10 @@ - + <FENote> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'FENote' <FENote> contains <H> @@ -13196,10 +13196,10 @@ - + <FENote> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'FENote' <FENote> contains <Title> @@ -13208,10 +13208,10 @@ - + <FENote> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'FENote' <FENote> contains <RB> @@ -13220,10 +13220,10 @@ - + <FENote> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'FENote' <FENote> contains <RT> @@ -13232,10 +13232,10 @@ - + <FENote> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'FENote' <FENote> contains <RP> @@ -13244,10 +13244,10 @@ - + <FENote> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'FENote' <FENote> contains <WT> @@ -13256,10 +13256,10 @@ - + <FENote> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'FENote' <FENote> contains <WP> @@ -13268,10 +13268,10 @@ - + <FENote> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'FENote' <FENote> contains <Index> @@ -13280,10 +13280,10 @@ - + <FENote> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'FENote' <FENote> contains <LI> @@ -13292,10 +13292,10 @@ - + <FENote> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'FENote' <FENote> contains <LBody> @@ -13304,10 +13304,10 @@ - + <FENote> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'FENote' <FENote> contains <BibEntry> @@ -13316,10 +13316,10 @@ - + <FENote> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'FENote' <FENote> contains <TR> @@ -13328,10 +13328,10 @@ - + <FENote> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'FENote' <FENote> contains <TH> @@ -13340,10 +13340,10 @@ - + <FENote> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'FENote' <FENote> contains <TD> @@ -13352,10 +13352,10 @@ - + <FENote> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'FENote' <FENote> contains <THead> @@ -13364,10 +13364,10 @@ - + <FENote> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'FENote' <FENote> contains <TBody> @@ -13376,10 +13376,10 @@ - + <FENote> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'FENote' <FENote> contains <TFoot> @@ -13388,10 +13388,10 @@ - + <Index> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Index' <Index> contains <Document> @@ -13400,10 +13400,10 @@ - + <Index> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Index' <Index> contains <DocumentFragment> @@ -13412,10 +13412,10 @@ - + <Index> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Index' <Index> contains <Art> @@ -13424,10 +13424,10 @@ - + <Index> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Index' <Index> contains <TOC> @@ -13436,10 +13436,10 @@ - + <Index> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Index' <Index> contains <TOCI> @@ -13448,10 +13448,10 @@ - + <Index> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Index' <Index> contains <Aside> @@ -13460,10 +13460,10 @@ - + <Index> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Index' <Index> contains <BlockQuote> @@ -13472,10 +13472,10 @@ - + <Index> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Index' <Index> contains <Code> @@ -13484,10 +13484,10 @@ - + <Index> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Index' <Index> contains <Title> @@ -13496,10 +13496,10 @@ - + <Index> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Index' <Index> contains <Sub> @@ -13508,10 +13508,10 @@ - + <Index> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Index' <Index> contains <Lbl> @@ -13520,10 +13520,10 @@ - + <Index> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Index' <Index> contains <Em> @@ -13532,10 +13532,10 @@ - + <Index> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Index' <Index> contains <Strong> @@ -13544,10 +13544,10 @@ - + <Index> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Index' <Index> contains <Span> @@ -13556,10 +13556,10 @@ - + <Index> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Index' <Index> contains <Quote> @@ -13568,10 +13568,10 @@ - + <Index> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Index' <Index> contains <Link> @@ -13580,10 +13580,10 @@ - + <Index> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Index' <Index> contains <Form> @@ -13592,10 +13592,10 @@ - + <Index> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Index' <Index> contains <Ruby> @@ -13604,10 +13604,10 @@ - + <Index> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Index' <Index> contains <RB> @@ -13616,10 +13616,10 @@ - + <Index> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Index' <Index> contains <RT> @@ -13628,10 +13628,10 @@ - + <Index> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Index' <Index> contains <RP> @@ -13640,10 +13640,10 @@ - + <Index> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Index' <Index> contains <Warichu> @@ -13652,10 +13652,10 @@ - + <Index> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Index' <Index> contains <WT> @@ -13664,10 +13664,10 @@ - + <Index> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Index' <Index> contains <WP> @@ -13679,7 +13679,7 @@ <Index> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Index' <Index> contains <Index> @@ -13688,10 +13688,10 @@ - + <Index> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Index' <Index> contains <LI> @@ -13700,10 +13700,10 @@ - + <Index> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Index' <Index> contains <LBody> @@ -13712,10 +13712,10 @@ - + <Index> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Index' <Index> contains <BibEntry> @@ -13724,10 +13724,10 @@ - + <Index> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Index' <Index> contains <TR> @@ -13736,10 +13736,10 @@ - + <Index> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Index' <Index> contains <TH> @@ -13748,10 +13748,10 @@ - + <Index> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Index' <Index> contains <TD> @@ -13760,10 +13760,10 @@ - + <Index> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Index' <Index> contains <THead> @@ -13772,10 +13772,10 @@ - + <Index> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Index' <Index> contains <TBody> @@ -13784,10 +13784,10 @@ - + <Index> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Index' <Index> contains <TFoot> @@ -13798,7 +13798,7 @@ - <Index> shall not contain content item + <Index> shall not contain content items hasContentItems == false <Index> contains content item(s) @@ -13808,10 +13808,10 @@ - + <L> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'L' <L> contains <Document> @@ -13820,10 +13820,10 @@ - + <L> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'L' <L> contains <DocumentFragment> @@ -13832,10 +13832,10 @@ - + <L> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'L' <L> contains <Part> @@ -13844,10 +13844,10 @@ - + <L> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'L' <L> contains <Art> @@ -13856,10 +13856,10 @@ - + <L> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'L' <L> contains <Div> @@ -13868,10 +13868,10 @@ - + <L> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'L' <L> contains <Sect> @@ -13880,10 +13880,10 @@ - + <L> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'L' <L> contains <TOC> @@ -13892,10 +13892,10 @@ - + <L> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'L' <L> contains <TOCI> @@ -13904,10 +13904,10 @@ - + <L> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'L' <L> contains <Aside> @@ -13916,10 +13916,10 @@ - + <L> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'L' <L> contains <BlockQuote> @@ -13928,10 +13928,10 @@ - + <L> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'L' <L> contains <P> @@ -13940,10 +13940,10 @@ - + <L> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'L' <L> contains <Note> @@ -13952,10 +13952,10 @@ - + <L> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'L' <L> contains <Code> @@ -13964,10 +13964,10 @@ - + <L> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'L' <L> contains <Hn> @@ -13976,10 +13976,10 @@ - + <L> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'L' <L> contains <H> @@ -13988,10 +13988,10 @@ - + <L> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'L' <L> contains <Title> @@ -14000,10 +14000,10 @@ - + <L> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'L' <L> contains <Sub> @@ -14012,10 +14012,10 @@ - + <L> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'L' <L> contains <Lbl> @@ -14024,10 +14024,10 @@ - + <L> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'L' <L> contains <Em> @@ -14036,10 +14036,10 @@ - + <L> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'L' <L> contains <Strong> @@ -14048,10 +14048,10 @@ - + <L> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'L' <L> contains <Span> @@ -14060,10 +14060,10 @@ - + <L> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'L' <L> contains <Quote> @@ -14072,10 +14072,10 @@ - + <L> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'L' <L> contains <Link> @@ -14084,10 +14084,10 @@ - + <L> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'L' <L> contains <Reference> @@ -14096,10 +14096,10 @@ - + <L> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'L' <L> contains <Annot> @@ -14108,10 +14108,10 @@ - + <L> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'L' <L> contains <Form> @@ -14120,10 +14120,10 @@ - + <L> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'L' <L> contains <Ruby> @@ -14132,10 +14132,10 @@ - + <L> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'L' <L> contains <RB> @@ -14144,10 +14144,10 @@ - + <L> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'L' <L> contains <RT> @@ -14156,10 +14156,10 @@ - + <L> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'L' <L> contains <RP> @@ -14168,10 +14168,10 @@ - + <L> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'L' <L> contains <Warichu> @@ -14180,10 +14180,10 @@ - + <L> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'L' <L> contains <WT> @@ -14192,10 +14192,10 @@ - + <L> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'L' <L> contains <WP> @@ -14204,10 +14204,10 @@ - + <L> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'L' <L> contains <FENote> @@ -14216,10 +14216,10 @@ - + <L> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'L' <L> contains <Index> @@ -14228,10 +14228,10 @@ - + <L> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'L' <L> contains <LBody> @@ -14240,10 +14240,10 @@ - + <L> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'L' <L> contains <BibEntry> @@ -14252,10 +14252,10 @@ - + <L> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'L' <L> contains <Table> @@ -14264,10 +14264,10 @@ - + <L> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'L' <L> contains <TR> @@ -14276,10 +14276,10 @@ - + <L> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'L' <L> contains <TH> @@ -14288,10 +14288,10 @@ - + <L> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'L' <L> contains <TD> @@ -14300,10 +14300,10 @@ - + <L> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'L' <L> contains <THead> @@ -14312,10 +14312,10 @@ - + <L> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'L' <L> contains <TBody> @@ -14324,10 +14324,10 @@ - + <L> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'L' <L> contains <TFoot> @@ -14348,10 +14348,10 @@ - + <L> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'L' <L> contains <Figure> @@ -14360,10 +14360,10 @@ - + <L> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'L' <L> contains <Formula> @@ -14374,7 +14374,7 @@ - <L> shall not contain content item + <L> shall not contain content items hasContentItems == false <L> contains content item(s) @@ -14384,10 +14384,10 @@ - + <LI> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'LI' <LI> contains <Document> @@ -14396,10 +14396,10 @@ - + <LI> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'LI' <LI> contains <DocumentFragment> @@ -14408,10 +14408,10 @@ - + <LI> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'LI' <LI> contains <Part> @@ -14420,10 +14420,10 @@ - + <LI> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'LI' <LI> contains <Art> @@ -14432,10 +14432,10 @@ - + <LI> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'LI' <LI> contains <Sect> @@ -14444,10 +14444,10 @@ - + <LI> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'LI' <LI> contains <TOC> @@ -14456,10 +14456,10 @@ - + <LI> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'LI' <LI> contains <TOCI> @@ -14468,10 +14468,10 @@ - + <LI> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'LI' <LI> contains <Aside> @@ -14480,10 +14480,10 @@ - + <LI> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'LI' <LI> contains <BlockQuote> @@ -14492,10 +14492,10 @@ - + <LI> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'LI' <LI> contains <P> @@ -14504,10 +14504,10 @@ - + <LI> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'LI' <LI> contains <Note> @@ -14516,10 +14516,10 @@ - + <LI> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'LI' <LI> contains <Code> @@ -14528,10 +14528,10 @@ - + <LI> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'LI' <LI> contains <Hn> @@ -14540,10 +14540,10 @@ - + <LI> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'LI' <LI> contains <H> @@ -14552,10 +14552,10 @@ - + <LI> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'LI' <LI> contains <Title> @@ -14564,10 +14564,10 @@ - + <LI> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'LI' <LI> contains <Sub> @@ -14576,10 +14576,10 @@ - + <LI> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'LI' <LI> contains <Em> @@ -14588,10 +14588,10 @@ - + <LI> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'LI' <LI> contains <Strong> @@ -14600,10 +14600,10 @@ - + <LI> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'LI' <LI> contains <Span> @@ -14612,10 +14612,10 @@ - + <LI> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'LI' <LI> contains <Quote> @@ -14624,10 +14624,10 @@ - + <LI> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'LI' <LI> contains <Link> @@ -14636,10 +14636,10 @@ - + <LI> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'LI' <LI> contains <Reference> @@ -14648,10 +14648,10 @@ - + <LI> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'LI' <LI> contains <Annot> @@ -14660,10 +14660,10 @@ - + <LI> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'LI' <LI> contains <Form> @@ -14672,10 +14672,10 @@ - + <LI> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'LI' <LI> contains <Ruby> @@ -14684,10 +14684,10 @@ - + <LI> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'LI' <LI> contains <RB> @@ -14696,10 +14696,10 @@ - + <LI> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'LI' <LI> contains <RT> @@ -14708,10 +14708,10 @@ - + <LI> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'LI' <LI> contains <RP> @@ -14720,10 +14720,10 @@ - + <LI> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'LI' <LI> contains <Warichu> @@ -14732,10 +14732,10 @@ - + <LI> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'LI' <LI> contains <WT> @@ -14744,10 +14744,10 @@ - + <LI> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'LI' <LI> contains <WP> @@ -14756,10 +14756,10 @@ - + <LI> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'LI' <LI> contains <FENote> @@ -14768,10 +14768,10 @@ - + <LI> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'LI' <LI> contains <Index> @@ -14780,10 +14780,10 @@ - + <LI> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'LI' <LI> contains <L> @@ -14795,7 +14795,7 @@ <LI> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'LI' <LI> contains <LI> @@ -14804,10 +14804,10 @@ - + <LI> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'LI' <LI> contains <BibEntry> @@ -14816,10 +14816,10 @@ - + <LI> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'LI' <LI> contains <Table> @@ -14828,10 +14828,10 @@ - + <LI> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'LI' <LI> contains <TR> @@ -14840,10 +14840,10 @@ - + <LI> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'LI' <LI> contains <TH> @@ -14852,10 +14852,10 @@ - + <LI> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'LI' <LI> contains <TD> @@ -14864,10 +14864,10 @@ - + <LI> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'LI' <LI> contains <THead> @@ -14876,10 +14876,10 @@ - + <LI> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'LI' <LI> contains <TBody> @@ -14888,10 +14888,10 @@ - + <LI> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'LI' <LI> contains <TFoot> @@ -14900,10 +14900,10 @@ - + <LI> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'LI' <LI> contains <Caption> @@ -14912,10 +14912,10 @@ - + <LI> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'LI' <LI> contains <Figure> @@ -14924,10 +14924,10 @@ - + <LI> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'LI' <LI> contains <Formula> @@ -14936,10 +14936,10 @@ - + <LBody> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'LBody' <LBody> contains <Document> @@ -14948,10 +14948,10 @@ - + <LBody> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'LBody' <LBody> contains <DocumentFragment> @@ -14960,10 +14960,10 @@ - + <LBody> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'LBody' <LBody> contains <TOC> @@ -14972,10 +14972,10 @@ - + <LBody> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'LBody' <LBody> contains <TOCI> @@ -14996,10 +14996,10 @@ - + <LBody> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'LBody' <LBody> contains <Title> @@ -15008,10 +15008,10 @@ - + <LBody> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'LBody' <LBody> contains <Lbl> @@ -15020,10 +15020,10 @@ - + <LBody> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'LBody' <LBody> contains <RB> @@ -15032,10 +15032,10 @@ - + <LBody> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'LBody' <LBody> contains <RT> @@ -15044,10 +15044,10 @@ - + <LBody> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'LBody' <LBody> contains <RP> @@ -15056,10 +15056,10 @@ - + <LBody> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'LBody' <LBody> contains <WT> @@ -15068,10 +15068,10 @@ - + <LBody> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'LBody' <LBody> contains <WP> @@ -15080,10 +15080,10 @@ - + <LBody> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'LBody' <LBody> contains <LI> @@ -15095,7 +15095,7 @@ <LBody> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'LBody' <LBody> contains <LBody> @@ -15104,10 +15104,10 @@ - + <LBody> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'LBody' <LBody> contains <TR> @@ -15116,10 +15116,10 @@ - + <LBody> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'LBody' <LBody> contains <TH> @@ -15128,10 +15128,10 @@ - + <LBody> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'LBody' <LBody> contains <TD> @@ -15140,10 +15140,10 @@ - + <LBody> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'LBody' <LBody> contains <THead> @@ -15152,10 +15152,10 @@ - + <LBody> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'LBody' <LBody> contains <TBody> @@ -15164,10 +15164,10 @@ - + <LBody> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'LBody' <LBody> contains <TFoot> @@ -15188,10 +15188,10 @@ - + <BibEntry> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Document> @@ -15200,10 +15200,10 @@ - + <BibEntry> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <DocumentFragment> @@ -15212,10 +15212,10 @@ - + <BibEntry> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Art> @@ -15224,10 +15224,10 @@ - + <BibEntry> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Sect> @@ -15236,10 +15236,10 @@ - + <BibEntry> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TOC> @@ -15248,10 +15248,10 @@ - + <BibEntry> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TOCI> @@ -15260,10 +15260,10 @@ - + <BibEntry> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Aside> @@ -15272,10 +15272,10 @@ - + <BibEntry> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <BlockQuote> @@ -15284,10 +15284,10 @@ - + <BibEntry> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Code> @@ -15296,10 +15296,10 @@ - + <BibEntry> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Hn> @@ -15308,10 +15308,10 @@ - + <BibEntry> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <H> @@ -15320,10 +15320,10 @@ - + <BibEntry> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Title> @@ -15332,10 +15332,10 @@ - + <BibEntry> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Sub> @@ -15344,10 +15344,10 @@ - + <BibEntry> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Quote> @@ -15356,10 +15356,10 @@ - + <BibEntry> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Form> @@ -15368,10 +15368,10 @@ - + <BibEntry> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Ruby> @@ -15380,10 +15380,10 @@ - + <BibEntry> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <RB> @@ -15392,10 +15392,10 @@ - + <BibEntry> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <RT> @@ -15404,10 +15404,10 @@ - + <BibEntry> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <RP> @@ -15416,10 +15416,10 @@ - + <BibEntry> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Warichu> @@ -15428,10 +15428,10 @@ - + <BibEntry> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <WT> @@ -15440,10 +15440,10 @@ - + <BibEntry> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <WP> @@ -15452,10 +15452,10 @@ - + <BibEntry> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Index> @@ -15464,10 +15464,10 @@ - + <BibEntry> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <L> @@ -15476,10 +15476,10 @@ - + <BibEntry> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <LI> @@ -15488,10 +15488,10 @@ - + <BibEntry> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <LBody> @@ -15503,7 +15503,7 @@ <BibEntry> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <BibEntry> @@ -15512,10 +15512,10 @@ - + <BibEntry> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Table> @@ -15524,10 +15524,10 @@ - + <BibEntry> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TR> @@ -15536,10 +15536,10 @@ - + <BibEntry> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TH> @@ -15548,10 +15548,10 @@ - + <BibEntry> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TD> @@ -15560,10 +15560,10 @@ - + <BibEntry> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <THead> @@ -15572,10 +15572,10 @@ - + <BibEntry> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TBody> @@ -15584,10 +15584,10 @@ - + <BibEntry> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TFoot> @@ -15596,10 +15596,10 @@ - + <BibEntry> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Caption> @@ -15608,10 +15608,10 @@ - + <BibEntry> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Formula> @@ -15620,10 +15620,10 @@ - + <Table> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Table' <Table> contains <Document> @@ -15632,10 +15632,10 @@ - + <Table> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Table' <Table> contains <DocumentFragment> @@ -15644,10 +15644,10 @@ - + <Table> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Table' <Table> contains <Part> @@ -15656,10 +15656,10 @@ - + <Table> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Table' <Table> contains <Art> @@ -15668,10 +15668,10 @@ - + <Table> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Table' <Table> contains <Div> @@ -15680,10 +15680,10 @@ - + <Table> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Table' <Table> contains <Sect> @@ -15692,10 +15692,10 @@ - + <Table> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Table' <Table> contains <TOC> @@ -15704,10 +15704,10 @@ - + <Table> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Table' <Table> contains <TOCI> @@ -15716,10 +15716,10 @@ - + <Table> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Table' <Table> contains <Aside> @@ -15728,10 +15728,10 @@ - + <Table> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Table' <Table> contains <BlockQuote> @@ -15740,10 +15740,10 @@ - + <Table> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Table' <Table> contains <P> @@ -15752,10 +15752,10 @@ - + <Table> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'Table' <Table> contains <Note> @@ -15764,10 +15764,10 @@ - + <Table> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Table' <Table> contains <Code> @@ -15776,10 +15776,10 @@ - + <Table> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Table' <Table> contains <Hn> @@ -15788,10 +15788,10 @@ - + <Table> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Table' <Table> contains <H> @@ -15800,10 +15800,10 @@ - + <Table> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Table' <Table> contains <Title> @@ -15812,10 +15812,10 @@ - + <Table> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Table' <Table> contains <Sub> @@ -15824,10 +15824,10 @@ - + <Table> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Table' <Table> contains <Lbl> @@ -15836,10 +15836,10 @@ - + <Table> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Table' <Table> contains <Em> @@ -15848,10 +15848,10 @@ - + <Table> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Table' <Table> contains <Strong> @@ -15860,10 +15860,10 @@ - + <Table> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Table' <Table> contains <Span> @@ -15872,10 +15872,10 @@ - + <Table> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Table' <Table> contains <Quote> @@ -15884,10 +15884,10 @@ - + <Table> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Table' <Table> contains <Link> @@ -15896,10 +15896,10 @@ - + <Table> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Table' <Table> contains <Reference> @@ -15908,10 +15908,10 @@ - + <Table> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'Table' <Table> contains <Annot> @@ -15920,10 +15920,10 @@ - + <Table> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Table' <Table> contains <Form> @@ -15932,10 +15932,10 @@ - + <Table> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Table' <Table> contains <Ruby> @@ -15944,10 +15944,10 @@ - + <Table> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Table' <Table> contains <RB> @@ -15956,10 +15956,10 @@ - + <Table> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Table' <Table> contains <RT> @@ -15968,10 +15968,10 @@ - + <Table> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Table' <Table> contains <RP> @@ -15980,10 +15980,10 @@ - + <Table> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Table' <Table> contains <Warichu> @@ -15992,10 +15992,10 @@ - + <Table> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Table' <Table> contains <WT> @@ -16004,10 +16004,10 @@ - + <Table> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Table' <Table> contains <WP> @@ -16016,10 +16016,10 @@ - + <Table> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'Table' <Table> contains <FENote> @@ -16028,10 +16028,10 @@ - + <Table> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Table' <Table> contains <Index> @@ -16040,10 +16040,10 @@ - + <Table> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Table' <Table> contains <L> @@ -16052,10 +16052,10 @@ - + <Table> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Table' <Table> contains <LI> @@ -16064,10 +16064,10 @@ - + <Table> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Table' <Table> contains <LBody> @@ -16076,10 +16076,10 @@ - + <Table> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Table' <Table> contains <BibEntry> @@ -16091,7 +16091,7 @@ <Table> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Table' <Table> contains <Table> @@ -16100,10 +16100,10 @@ - + <Table> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Table' <Table> contains <TH> @@ -16112,10 +16112,10 @@ - + <Table> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Table' <Table> contains <TD> @@ -16160,10 +16160,10 @@ - + <Table> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'Table' <Table> contains <Figure> @@ -16172,10 +16172,10 @@ - + <Table> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'Table' <Table> contains <Formula> @@ -16186,7 +16186,7 @@ - <Table> shall not contain content item + <Table> shall not contain content items hasContentItems == false <Table> contains content item(s) @@ -16196,10 +16196,10 @@ - + <TR> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TR' <TR> contains <Document> @@ -16208,10 +16208,10 @@ - + <TR> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TR' <TR> contains <DocumentFragment> @@ -16220,10 +16220,10 @@ - + <TR> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TR' <TR> contains <Part> @@ -16232,10 +16232,10 @@ - + <TR> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'TR' <TR> contains <Art> @@ -16244,10 +16244,10 @@ - + <TR> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'TR' <TR> contains <Div> @@ -16256,10 +16256,10 @@ - + <TR> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'TR' <TR> contains <Sect> @@ -16268,10 +16268,10 @@ - + <TR> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'TR' <TR> contains <TOC> @@ -16280,10 +16280,10 @@ - + <TR> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TR' <TR> contains <TOCI> @@ -16292,10 +16292,10 @@ - + <TR> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TR' <TR> contains <Aside> @@ -16304,10 +16304,10 @@ - + <TR> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TR' <TR> contains <BlockQuote> @@ -16316,10 +16316,10 @@ - + <TR> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'TR' <TR> contains <P> @@ -16328,10 +16328,10 @@ - + <TR> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'TR' <TR> contains <Note> @@ -16340,10 +16340,10 @@ - + <TR> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'TR' <TR> contains <Code> @@ -16352,10 +16352,10 @@ - + <TR> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'TR' <TR> contains <Hn> @@ -16364,10 +16364,10 @@ - + <TR> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'TR' <TR> contains <H> @@ -16376,10 +16376,10 @@ - + <TR> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TR' <TR> contains <Title> @@ -16388,10 +16388,10 @@ - + <TR> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TR' <TR> contains <Sub> @@ -16400,10 +16400,10 @@ - + <TR> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'TR' <TR> contains <Lbl> @@ -16412,10 +16412,10 @@ - + <TR> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'TR' <TR> contains <Em> @@ -16424,10 +16424,10 @@ - + <TR> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'TR' <TR> contains <Strong> @@ -16436,10 +16436,10 @@ - + <TR> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'TR' <TR> contains <Span> @@ -16448,10 +16448,10 @@ - + <TR> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'TR' <TR> contains <Quote> @@ -16460,10 +16460,10 @@ - + <TR> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'TR' <TR> contains <Link> @@ -16472,10 +16472,10 @@ - + <TR> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'TR' <TR> contains <Reference> @@ -16484,10 +16484,10 @@ - + <TR> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'TR' <TR> contains <Annot> @@ -16496,10 +16496,10 @@ - + <TR> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'TR' <TR> contains <Form> @@ -16508,10 +16508,10 @@ - + <TR> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'TR' <TR> contains <Ruby> @@ -16520,10 +16520,10 @@ - + <TR> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TR' <TR> contains <RB> @@ -16532,10 +16532,10 @@ - + <TR> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TR' <TR> contains <RT> @@ -16544,10 +16544,10 @@ - + <TR> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TR' <TR> contains <RP> @@ -16556,10 +16556,10 @@ - + <TR> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'TR' <TR> contains <Warichu> @@ -16568,10 +16568,10 @@ - + <TR> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TR' <TR> contains <WT> @@ -16580,10 +16580,10 @@ - + <TR> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TR' <TR> contains <WP> @@ -16592,10 +16592,10 @@ - + <TR> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'TR' <TR> contains <FENote> @@ -16604,10 +16604,10 @@ - + <TR> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'TR' <TR> contains <Index> @@ -16616,10 +16616,10 @@ - + <TR> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'TR' <TR> contains <L> @@ -16628,10 +16628,10 @@ - + <TR> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TR' <TR> contains <LI> @@ -16640,10 +16640,10 @@ - + <TR> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TR' <TR> contains <LBody> @@ -16652,10 +16652,10 @@ - + <TR> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'TR' <TR> contains <BibEntry> @@ -16664,10 +16664,10 @@ - + <TR> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'TR' <TR> contains <Table> @@ -16679,7 +16679,7 @@ <TR> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'TR' <TR> contains <TR> @@ -16688,10 +16688,10 @@ - + <TR> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TR' <TR> contains <THead> @@ -16700,10 +16700,10 @@ - + <TR> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TR' <TR> contains <TBody> @@ -16712,10 +16712,10 @@ - + <TR> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TR' <TR> contains <TFoot> @@ -16724,10 +16724,10 @@ - + <TR> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TR' <TR> contains <Caption> @@ -16736,10 +16736,10 @@ - + <TR> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'TR' <TR> contains <Figure> @@ -16748,10 +16748,10 @@ - + <TR> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'TR' <TR> contains <Formula> @@ -16762,7 +16762,7 @@ - <TR> shall not contain content item + <TR> shall not contain content items hasContentItems == false <TR> contains content item(s) @@ -16772,10 +16772,10 @@ - + <TH> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TH' <TH> contains <Document> @@ -16784,10 +16784,10 @@ - + <TH> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TH' <TH> contains <DocumentFragment> @@ -16796,10 +16796,10 @@ - + <TH> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TH' <TH> contains <Part> @@ -16808,10 +16808,10 @@ - + <TH> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'TH' <TH> contains <TOC> @@ -16820,10 +16820,10 @@ - + <TH> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TH' <TH> contains <TOCI> @@ -16832,10 +16832,10 @@ - + <TH> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TH' <TH> contains <Aside> @@ -16844,10 +16844,10 @@ - + <TH> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TH' <TH> contains <BlockQuote> @@ -16868,10 +16868,10 @@ - + <TH> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TH' <TH> contains <Title> @@ -16880,10 +16880,10 @@ - + <TH> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TH' <TH> contains <Sub> @@ -16892,10 +16892,10 @@ - + <TH> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TH' <TH> contains <RB> @@ -16904,10 +16904,10 @@ - + <TH> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TH' <TH> contains <RT> @@ -16916,10 +16916,10 @@ - + <TH> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TH' <TH> contains <RP> @@ -16928,10 +16928,10 @@ - + <TH> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TH' <TH> contains <WT> @@ -16940,10 +16940,10 @@ - + <TH> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TH' <TH> contains <WP> @@ -16952,10 +16952,10 @@ - + <TH> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TH' <TH> contains <LI> @@ -16964,10 +16964,10 @@ - + <TH> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TH' <TH> contains <LBody> @@ -16976,10 +16976,10 @@ - + <TH> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'TH' <TH> contains <TR> @@ -16991,7 +16991,7 @@ <TH> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TH' <TH> contains <TH> @@ -17000,10 +17000,10 @@ - + <TH> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TH' <TH> contains <TD> @@ -17012,10 +17012,10 @@ - + <TH> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TH' <TH> contains <THead> @@ -17024,10 +17024,10 @@ - + <TH> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TH' <TH> contains <TBody> @@ -17036,10 +17036,10 @@ - + <TH> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TH' <TH> contains <TFoot> @@ -17048,10 +17048,10 @@ - + <TH> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TH' <TH> contains <Caption> @@ -17060,10 +17060,10 @@ - + <TD> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TD' <TD> contains <Document> @@ -17072,10 +17072,10 @@ - + <TD> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TD' <TD> contains <DocumentFragment> @@ -17084,10 +17084,10 @@ - + <TD> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TD' <TD> contains <Part> @@ -17096,10 +17096,10 @@ - + <TD> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'TD' <TD> contains <TOC> @@ -17108,10 +17108,10 @@ - + <TD> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TD' <TD> contains <TOCI> @@ -17120,10 +17120,10 @@ - + <TD> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TD' <TD> contains <Aside> @@ -17132,10 +17132,10 @@ - + <TD> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TD' <TD> contains <BlockQuote> @@ -17156,10 +17156,10 @@ - + <TD> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TD' <TD> contains <Title> @@ -17168,10 +17168,10 @@ - + <TD> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TD' <TD> contains <Sub> @@ -17180,10 +17180,10 @@ - + <TD> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TD' <TD> contains <RB> @@ -17192,10 +17192,10 @@ - + <TD> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TD' <TD> contains <RT> @@ -17204,10 +17204,10 @@ - + <TD> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TD' <TD> contains <RP> @@ -17216,10 +17216,10 @@ - + <TD> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TD' <TD> contains <WT> @@ -17228,10 +17228,10 @@ - + <TD> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TD' <TD> contains <WP> @@ -17240,10 +17240,10 @@ - + <TD> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TD' <TD> contains <LI> @@ -17252,10 +17252,10 @@ - + <TD> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TD' <TD> contains <LBody> @@ -17264,10 +17264,10 @@ - + <TD> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'TD' <TD> contains <TR> @@ -17276,10 +17276,10 @@ - + <TD> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TD' <TD> contains <TH> @@ -17291,7 +17291,7 @@ <TD> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TD' <TD> contains <TD> @@ -17300,10 +17300,10 @@ - + <TD> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TD' <TD> contains <THead> @@ -17312,10 +17312,10 @@ - + <TD> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TD' <TD> contains <TBody> @@ -17324,10 +17324,10 @@ - + <TD> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TD' <TD> contains <TFoot> @@ -17336,10 +17336,10 @@ - + <TD> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TD' <TD> contains <Caption> @@ -17348,10 +17348,10 @@ - + <THead> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'THead' <THead> contains <Document> @@ -17360,10 +17360,10 @@ - + <THead> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'THead' <THead> contains <DocumentFragment> @@ -17372,10 +17372,10 @@ - + <THead> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'THead' <THead> contains <Part> @@ -17384,10 +17384,10 @@ - + <THead> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'THead' <THead> contains <Art> @@ -17396,10 +17396,10 @@ - + <THead> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'THead' <THead> contains <Div> @@ -17408,10 +17408,10 @@ - + <THead> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'THead' <THead> contains <Sect> @@ -17420,10 +17420,10 @@ - + <THead> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'THead' <THead> contains <TOC> @@ -17432,10 +17432,10 @@ - + <THead> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'THead' <THead> contains <TOCI> @@ -17444,10 +17444,10 @@ - + <THead> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'THead' <THead> contains <Aside> @@ -17456,10 +17456,10 @@ - + <THead> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'THead' <THead> contains <BlockQuote> @@ -17468,10 +17468,10 @@ - + <THead> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'THead' <THead> contains <P> @@ -17480,10 +17480,10 @@ - + <THead> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'THead' <THead> contains <Note> @@ -17492,10 +17492,10 @@ - + <THead> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'THead' <THead> contains <Code> @@ -17504,10 +17504,10 @@ - + <THead> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'THead' <THead> contains <Hn> @@ -17516,10 +17516,10 @@ - + <THead> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'THead' <THead> contains <H> @@ -17528,10 +17528,10 @@ - + <THead> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'THead' <THead> contains <Title> @@ -17540,10 +17540,10 @@ - + <THead> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'THead' <THead> contains <Sub> @@ -17552,10 +17552,10 @@ - + <THead> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'THead' <THead> contains <Lbl> @@ -17564,10 +17564,10 @@ - + <THead> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'THead' <THead> contains <Em> @@ -17576,10 +17576,10 @@ - + <THead> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'THead' <THead> contains <Strong> @@ -17588,10 +17588,10 @@ - + <THead> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'THead' <THead> contains <Span> @@ -17600,10 +17600,10 @@ - + <THead> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'THead' <THead> contains <Quote> @@ -17612,10 +17612,10 @@ - + <THead> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'THead' <THead> contains <Link> @@ -17624,10 +17624,10 @@ - + <THead> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'THead' <THead> contains <Reference> @@ -17636,10 +17636,10 @@ - + <THead> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'THead' <THead> contains <Annot> @@ -17648,10 +17648,10 @@ - + <THead> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'THead' <THead> contains <Form> @@ -17660,10 +17660,10 @@ - + <THead> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'THead' <THead> contains <Ruby> @@ -17672,10 +17672,10 @@ - + <THead> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'THead' <THead> contains <RB> @@ -17684,10 +17684,10 @@ - + <THead> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'THead' <THead> contains <RT> @@ -17696,10 +17696,10 @@ - + <THead> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'THead' <THead> contains <RP> @@ -17708,10 +17708,10 @@ - + <THead> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'THead' <THead> contains <Warichu> @@ -17720,10 +17720,10 @@ - + <THead> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'THead' <THead> contains <WT> @@ -17732,10 +17732,10 @@ - + <THead> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'THead' <THead> contains <WP> @@ -17744,10 +17744,10 @@ - + <THead> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'THead' <THead> contains <FENote> @@ -17756,10 +17756,10 @@ - + <THead> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'THead' <THead> contains <Index> @@ -17768,10 +17768,10 @@ - + <THead> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'THead' <THead> contains <L> @@ -17780,10 +17780,10 @@ - + <THead> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'THead' <THead> contains <LI> @@ -17792,10 +17792,10 @@ - + <THead> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'THead' <THead> contains <LBody> @@ -17804,10 +17804,10 @@ - + <THead> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'THead' <THead> contains <BibEntry> @@ -17816,10 +17816,10 @@ - + <THead> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'THead' <THead> contains <Table> @@ -17828,10 +17828,10 @@ - + <THead> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'THead' <THead> contains <TH> @@ -17840,10 +17840,10 @@ - + <THead> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'THead' <THead> contains <TD> @@ -17855,7 +17855,7 @@ <THead> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'THead' <THead> contains <THead> @@ -17864,10 +17864,10 @@ - + <THead> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'THead' <THead> contains <TBody> @@ -17876,10 +17876,10 @@ - + <THead> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'THead' <THead> contains <TFoot> @@ -17888,10 +17888,10 @@ - + <THead> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'THead' <THead> contains <Caption> @@ -17900,10 +17900,10 @@ - + <THead> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'THead' <THead> contains <Figure> @@ -17912,10 +17912,10 @@ - + <THead> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'THead' <THead> contains <Formula> @@ -17926,7 +17926,7 @@ - <THead> shall not contain content item + <THead> shall not contain content items hasContentItems == false <THead> contains content item(s) @@ -17936,10 +17936,10 @@ - + <TBody> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TBody' <TBody> contains <Document> @@ -17948,10 +17948,10 @@ - + <TBody> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TBody' <TBody> contains <DocumentFragment> @@ -17960,10 +17960,10 @@ - + <TBody> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TBody' <TBody> contains <Part> @@ -17972,10 +17972,10 @@ - + <TBody> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'TBody' <TBody> contains <Art> @@ -17984,10 +17984,10 @@ - + <TBody> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'TBody' <TBody> contains <Div> @@ -17996,10 +17996,10 @@ - + <TBody> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'TBody' <TBody> contains <Sect> @@ -18008,10 +18008,10 @@ - + <TBody> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'TBody' <TBody> contains <TOC> @@ -18020,10 +18020,10 @@ - + <TBody> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TBody' <TBody> contains <TOCI> @@ -18032,10 +18032,10 @@ - + <TBody> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TBody' <TBody> contains <Aside> @@ -18044,10 +18044,10 @@ - + <TBody> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TBody' <TBody> contains <BlockQuote> @@ -18056,10 +18056,10 @@ - + <TBody> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'TBody' <TBody> contains <P> @@ -18068,10 +18068,10 @@ - + <TBody> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'TBody' <TBody> contains <Note> @@ -18080,10 +18080,10 @@ - + <TBody> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'TBody' <TBody> contains <Code> @@ -18092,10 +18092,10 @@ - + <TBody> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'TBody' <TBody> contains <Hn> @@ -18104,10 +18104,10 @@ - + <TBody> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'TBody' <TBody> contains <H> @@ -18116,10 +18116,10 @@ - + <TBody> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TBody' <TBody> contains <Title> @@ -18128,10 +18128,10 @@ - + <TBody> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TBody' <TBody> contains <Sub> @@ -18140,10 +18140,10 @@ - + <TBody> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'TBody' <TBody> contains <Lbl> @@ -18152,10 +18152,10 @@ - + <TBody> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'TBody' <TBody> contains <Em> @@ -18164,10 +18164,10 @@ - + <TBody> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'TBody' <TBody> contains <Strong> @@ -18176,10 +18176,10 @@ - + <TBody> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'TBody' <TBody> contains <Span> @@ -18188,10 +18188,10 @@ - + <TBody> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'TBody' <TBody> contains <Quote> @@ -18200,10 +18200,10 @@ - + <TBody> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'TBody' <TBody> contains <Link> @@ -18212,10 +18212,10 @@ - + <TBody> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'TBody' <TBody> contains <Reference> @@ -18224,10 +18224,10 @@ - + <TBody> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'TBody' <TBody> contains <Annot> @@ -18236,10 +18236,10 @@ - + <TBody> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'TBody' <TBody> contains <Form> @@ -18248,10 +18248,10 @@ - + <TBody> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'TBody' <TBody> contains <Ruby> @@ -18260,10 +18260,10 @@ - + <TBody> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TBody' <TBody> contains <RB> @@ -18272,10 +18272,10 @@ - + <TBody> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TBody' <TBody> contains <RT> @@ -18284,10 +18284,10 @@ - + <TBody> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TBody' <TBody> contains <RP> @@ -18296,10 +18296,10 @@ - + <TBody> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'TBody' <TBody> contains <Warichu> @@ -18308,10 +18308,10 @@ - + <TBody> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TBody' <TBody> contains <WT> @@ -18320,10 +18320,10 @@ - + <TBody> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TBody' <TBody> contains <WP> @@ -18332,10 +18332,10 @@ - + <TBody> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'TBody' <TBody> contains <FENote> @@ -18344,10 +18344,10 @@ - + <TBody> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'TBody' <TBody> contains <Index> @@ -18356,10 +18356,10 @@ - + <TBody> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'TBody' <TBody> contains <L> @@ -18368,10 +18368,10 @@ - + <TBody> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TBody' <TBody> contains <LI> @@ -18380,10 +18380,10 @@ - + <TBody> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TBody' <TBody> contains <LBody> @@ -18392,10 +18392,10 @@ - + <TBody> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'TBody' <TBody> contains <BibEntry> @@ -18404,10 +18404,10 @@ - + <TBody> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'TBody' <TBody> contains <Table> @@ -18416,10 +18416,10 @@ - + <TBody> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TBody' <TBody> contains <TH> @@ -18428,10 +18428,10 @@ - + <TBody> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TBody' <TBody> contains <TD> @@ -18440,10 +18440,10 @@ - + <TBody> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TBody' <TBody> contains <THead> @@ -18455,7 +18455,7 @@ <TBody> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TBody' <TBody> contains <TBody> @@ -18464,10 +18464,10 @@ - + <TBody> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TBody' <TBody> contains <TFoot> @@ -18476,10 +18476,10 @@ - + <TBody> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TBody' <TBody> contains <Caption> @@ -18488,10 +18488,10 @@ - + <TBody> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'TBody' <TBody> contains <Figure> @@ -18500,10 +18500,10 @@ - + <TBody> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'TBody' <TBody> contains <Formula> @@ -18514,7 +18514,7 @@ - <TBody> shall not contain content item + <TBody> shall not contain content items hasContentItems == false <TBody> contains content item(s) @@ -18524,10 +18524,10 @@ - + <TFoot> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Document> @@ -18536,10 +18536,10 @@ - + <TFoot> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <DocumentFragment> @@ -18548,10 +18548,10 @@ - + <TFoot> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Part> @@ -18560,10 +18560,10 @@ - + <TFoot> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Art> @@ -18572,10 +18572,10 @@ - + <TFoot> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Div> @@ -18584,10 +18584,10 @@ - + <TFoot> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Sect> @@ -18596,10 +18596,10 @@ - + <TFoot> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TOC> @@ -18608,10 +18608,10 @@ - + <TFoot> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TOCI> @@ -18620,10 +18620,10 @@ - + <TFoot> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Aside> @@ -18632,10 +18632,10 @@ - + <TFoot> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <BlockQuote> @@ -18644,10 +18644,10 @@ - + <TFoot> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <P> @@ -18656,10 +18656,10 @@ - + <TFoot> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Note> @@ -18668,10 +18668,10 @@ - + <TFoot> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Code> @@ -18680,10 +18680,10 @@ - + <TFoot> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Hn> @@ -18692,10 +18692,10 @@ - + <TFoot> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <H> @@ -18704,10 +18704,10 @@ - + <TFoot> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Title> @@ -18716,10 +18716,10 @@ - + <TFoot> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Sub> @@ -18728,10 +18728,10 @@ - + <TFoot> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Lbl> @@ -18740,10 +18740,10 @@ - + <TFoot> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Em> @@ -18752,10 +18752,10 @@ - + <TFoot> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Strong> @@ -18764,10 +18764,10 @@ - + <TFoot> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Span> @@ -18776,10 +18776,10 @@ - + <TFoot> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Quote> @@ -18788,10 +18788,10 @@ - + <TFoot> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Link> @@ -18800,10 +18800,10 @@ - + <TFoot> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Reference> @@ -18812,10 +18812,10 @@ - + <TFoot> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Annot> @@ -18824,10 +18824,10 @@ - + <TFoot> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Form> @@ -18836,10 +18836,10 @@ - + <TFoot> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Ruby> @@ -18848,10 +18848,10 @@ - + <TFoot> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <RB> @@ -18860,10 +18860,10 @@ - + <TFoot> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <RT> @@ -18872,10 +18872,10 @@ - + <TFoot> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <RP> @@ -18884,10 +18884,10 @@ - + <TFoot> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Warichu> @@ -18896,10 +18896,10 @@ - + <TFoot> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <WT> @@ -18908,10 +18908,10 @@ - + <TFoot> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <WP> @@ -18920,10 +18920,10 @@ - + <TFoot> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <FENote> @@ -18932,10 +18932,10 @@ - + <TFoot> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Index> @@ -18944,10 +18944,10 @@ - + <TFoot> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <L> @@ -18956,10 +18956,10 @@ - + <TFoot> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <LI> @@ -18968,10 +18968,10 @@ - + <TFoot> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <LBody> @@ -18980,10 +18980,10 @@ - + <TFoot> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <BibEntry> @@ -18992,10 +18992,10 @@ - + <TFoot> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Table> @@ -19004,10 +19004,10 @@ - + <TFoot> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TH> @@ -19016,10 +19016,10 @@ - + <TFoot> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TD> @@ -19028,10 +19028,10 @@ - + <TFoot> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <THead> @@ -19040,10 +19040,10 @@ - + <TFoot> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TBody> @@ -19055,7 +19055,7 @@ <TFoot> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TFoot> @@ -19064,10 +19064,10 @@ - + <TFoot> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Caption> @@ -19076,10 +19076,10 @@ - + <TFoot> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Figure> @@ -19088,10 +19088,10 @@ - + <TFoot> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Formula> @@ -19102,7 +19102,7 @@ - <TFoot> shall not contain content item + <TFoot> shall not contain content items hasContentItems == false <TFoot> contains content item(s) @@ -19112,10 +19112,10 @@ - + <Caption> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Caption' <Caption> contains <Document> @@ -19124,10 +19124,10 @@ - + <Caption> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Caption' <Caption> contains <TOC> @@ -19136,10 +19136,10 @@ - + <Caption> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Caption' <Caption> contains <TOCI> @@ -19160,10 +19160,10 @@ - + <Caption> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Caption' <Caption> contains <Title> @@ -19172,10 +19172,10 @@ - + <Caption> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Caption' <Caption> contains <RB> @@ -19184,10 +19184,10 @@ - + <Caption> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Caption' <Caption> contains <RT> @@ -19196,10 +19196,10 @@ - + <Caption> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Caption' <Caption> contains <RP> @@ -19208,10 +19208,10 @@ - + <Caption> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Caption' <Caption> contains <WT> @@ -19220,10 +19220,10 @@ - + <Caption> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Caption' <Caption> contains <WP> @@ -19232,10 +19232,10 @@ - + <Caption> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Caption' <Caption> contains <LI> @@ -19244,10 +19244,10 @@ - + <Caption> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Caption' <Caption> contains <LBody> @@ -19256,10 +19256,10 @@ - + <Caption> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Caption' <Caption> contains <TR> @@ -19268,10 +19268,10 @@ - + <Caption> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Caption' <Caption> contains <TH> @@ -19280,10 +19280,10 @@ - + <Caption> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Caption' <Caption> contains <TD> @@ -19292,10 +19292,10 @@ - + <Caption> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Caption' <Caption> contains <THead> @@ -19304,10 +19304,10 @@ - + <Caption> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Caption' <Caption> contains <TBody> @@ -19316,10 +19316,10 @@ - + <Caption> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Caption' <Caption> contains <TFoot> @@ -19331,7 +19331,7 @@ <Caption> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Caption' <Caption> contains <Caption> @@ -19340,10 +19340,10 @@ - + <Figure> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Figure' <Figure> contains <Document> @@ -19352,10 +19352,10 @@ - + <Figure> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Figure' <Figure> contains <DocumentFragment> @@ -19364,10 +19364,10 @@ - + <Figure> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Figure' <Figure> contains <TOC> @@ -19376,10 +19376,10 @@ - + <Figure> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Figure' <Figure> contains <TOCI> @@ -19400,10 +19400,10 @@ - + <Figure> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Figure' <Figure> contains <Title> @@ -19412,10 +19412,10 @@ - + <Figure> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Figure' <Figure> contains <RB> @@ -19424,10 +19424,10 @@ - + <Figure> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Figure' <Figure> contains <RT> @@ -19436,10 +19436,10 @@ - + <Figure> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Figure' <Figure> contains <RP> @@ -19448,10 +19448,10 @@ - + <Figure> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Figure' <Figure> contains <WT> @@ -19460,10 +19460,10 @@ - + <Figure> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Figure' <Figure> contains <WP> @@ -19472,10 +19472,10 @@ - + <Figure> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Figure' <Figure> contains <LI> @@ -19484,10 +19484,10 @@ - + <Figure> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Figure' <Figure> contains <LBody> @@ -19496,10 +19496,10 @@ - + <Figure> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Figure' <Figure> contains <TR> @@ -19508,10 +19508,10 @@ - + <Figure> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Figure' <Figure> contains <TH> @@ -19520,10 +19520,10 @@ - + <Figure> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Figure' <Figure> contains <TD> @@ -19532,10 +19532,10 @@ - + <Figure> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Figure' <Figure> contains <THead> @@ -19544,10 +19544,10 @@ - + <Figure> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Figure' <Figure> contains <TBody> @@ -19556,10 +19556,10 @@ - + <Figure> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Figure' <Figure> contains <TFoot> @@ -19580,10 +19580,10 @@ - + <Formula> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Formula' <Formula> contains <Document> @@ -19592,10 +19592,10 @@ - + <Formula> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Formula' <Formula> contains <DocumentFragment> @@ -19604,10 +19604,10 @@ - + <Formula> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Formula' <Formula> contains <Art> @@ -19616,10 +19616,10 @@ - + <Formula> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Formula' <Formula> contains <Sect> @@ -19628,10 +19628,10 @@ - + <Formula> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Formula' <Formula> contains <TOC> @@ -19640,10 +19640,10 @@ - + <Formula> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Formula' <Formula> contains <TOCI> @@ -19664,10 +19664,10 @@ - + <Formula> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Formula' <Formula> contains <Title> @@ -19676,10 +19676,10 @@ - + <Formula> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Formula' <Formula> contains <RB> @@ -19688,10 +19688,10 @@ - + <Formula> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Formula' <Formula> contains <RT> @@ -19700,10 +19700,10 @@ - + <Formula> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Formula' <Formula> contains <RP> @@ -19712,10 +19712,10 @@ - + <Formula> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Formula' <Formula> contains <WT> @@ -19724,10 +19724,10 @@ - + <Formula> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Formula' <Formula> contains <WP> @@ -19736,10 +19736,10 @@ - + <Formula> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Formula' <Formula> contains <LI> @@ -19748,10 +19748,10 @@ - + <Formula> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Formula' <Formula> contains <LBody> @@ -19760,10 +19760,10 @@ - + <Formula> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Formula' <Formula> contains <TR> @@ -19772,10 +19772,10 @@ - + <Formula> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Formula' <Formula> contains <TH> @@ -19784,10 +19784,10 @@ - + <Formula> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Formula' <Formula> contains <TD> @@ -19796,10 +19796,10 @@ - + <Formula> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Formula' <Formula> contains <THead> @@ -19808,10 +19808,10 @@ - + <Formula> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Formula' <Formula> contains <TBody> @@ -19820,10 +19820,10 @@ - + <Formula> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Formula' <Formula> contains <TFoot> @@ -19868,6 +19868,58 @@ + + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists for %1 structure type + + valueS + + + + + + + + + Standard tags shall not be remapped to a non-standard type + remappedStandardType == null + + The standard structure type %1 is remapped to a non-standard type + + remappedStandardType + + + + + + + + + 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 + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 + containsParent == true + + A struct element does not contain the P entry + + + + + +
From 91c03e779b127a6f6e0ec253ca345176e2b2f21a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 27 Dec 2023 09:29:18 +0000 Subject: [PATCH 519/557] Update ISO-32005-Tagged profile --- PDF_UA/PDFUA-2-ISO32005.xml | 6456 ++++++++++++++++++----------------- 1 file changed, 3254 insertions(+), 3202 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 436b8fa1..c6c19c22 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -1109,9 +1109,9 @@ Every structure type should be mapped to a standard structure type - false + isNotMappedToStandardType == false - Structure type %1 is not mapped to the standard structure type + Non-standard structure type %1 is not mapped to a standard type valueS @@ -1125,17 +1125,17 @@ StructTreeRoot shall contain exactly one <Document> kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 1 - StructTreeRoot either either doesn't contain or contains more than one <Document> + StructTreeRoot either doesn't contain or contains more than one <Document> - + StructTreeRoot shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <DocumentFragment> @@ -1144,10 +1144,10 @@ - + StructTreeRoot shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Part> @@ -1156,10 +1156,10 @@ - + StructTreeRoot shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Art> @@ -1168,10 +1168,10 @@ - + StructTreeRoot shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Div> @@ -1180,10 +1180,10 @@ - + StructTreeRoot shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Sect> @@ -1192,10 +1192,10 @@ - + StructTreeRoot shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TOC> @@ -1204,10 +1204,10 @@ - + StructTreeRoot shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TOCI> @@ -1216,10 +1216,10 @@ - + StructTreeRoot shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Aside> @@ -1228,10 +1228,10 @@ - + StructTreeRoot shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <BlockQuote> @@ -1240,10 +1240,10 @@ - + StructTreeRoot shall not contain <NonStruct> - kidsStandardTypes.split('&').filter(elem => elem == 'NonStruct').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <NonStruct> @@ -1252,10 +1252,10 @@ - + StructTreeRoot shall not contain <Private> - kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Private> @@ -1264,10 +1264,10 @@ - + StructTreeRoot shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <P> @@ -1276,10 +1276,10 @@ - + StructTreeRoot shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Note> @@ -1288,10 +1288,10 @@ - + StructTreeRoot shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Code> @@ -1300,10 +1300,10 @@ - + StructTreeRoot shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Hn> @@ -1312,10 +1312,10 @@ - + StructTreeRoot shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <H> @@ -1324,10 +1324,10 @@ - + StructTreeRoot shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Title> @@ -1336,10 +1336,10 @@ - + StructTreeRoot shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Sub> @@ -1348,10 +1348,10 @@ - + StructTreeRoot shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Lbl> @@ -1360,10 +1360,10 @@ - + StructTreeRoot shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Em> @@ -1372,10 +1372,10 @@ - + StructTreeRoot shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Strong> @@ -1384,10 +1384,10 @@ - + StructTreeRoot shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Span> @@ -1396,10 +1396,10 @@ - + StructTreeRoot shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Quote> @@ -1408,10 +1408,10 @@ - + StructTreeRoot shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Link> @@ -1420,10 +1420,10 @@ - + StructTreeRoot shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Reference> @@ -1432,10 +1432,10 @@ - + StructTreeRoot shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Annot> @@ -1444,10 +1444,10 @@ - + StructTreeRoot shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Form> @@ -1456,10 +1456,10 @@ - + StructTreeRoot shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Ruby> @@ -1468,10 +1468,10 @@ - + StructTreeRoot shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <RB> @@ -1480,10 +1480,10 @@ - + StructTreeRoot shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <RT> @@ -1492,10 +1492,10 @@ - + StructTreeRoot shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <RP> @@ -1504,10 +1504,10 @@ - + StructTreeRoot shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Warichu> @@ -1516,10 +1516,10 @@ - + StructTreeRoot shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <WT> @@ -1528,10 +1528,10 @@ - + StructTreeRoot shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <WP> @@ -1540,10 +1540,10 @@ - + StructTreeRoot shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <FENote> @@ -1552,10 +1552,10 @@ - + StructTreeRoot shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Index> @@ -1564,10 +1564,10 @@ - + StructTreeRoot shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <L> @@ -1576,10 +1576,10 @@ - + StructTreeRoot shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <LI> @@ -1588,10 +1588,10 @@ - + StructTreeRoot shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <LBody> @@ -1600,10 +1600,10 @@ - + StructTreeRoot shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <BibEntry> @@ -1612,10 +1612,10 @@ - + StructTreeRoot shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Table> @@ -1624,10 +1624,10 @@ - + StructTreeRoot shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TR> @@ -1636,10 +1636,10 @@ - + StructTreeRoot shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TH> @@ -1648,10 +1648,10 @@ - + StructTreeRoot shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TD> @@ -1660,10 +1660,10 @@ - + StructTreeRoot shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <THead> @@ -1672,10 +1672,10 @@ - + StructTreeRoot shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TBody> @@ -1684,10 +1684,10 @@ - + StructTreeRoot shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <TFoot> @@ -1696,10 +1696,10 @@ - + StructTreeRoot shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Caption> @@ -1708,10 +1708,10 @@ - + StructTreeRoot shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Figure> @@ -1720,10 +1720,10 @@ - + StructTreeRoot shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Formula> @@ -1732,10 +1732,10 @@ - + StructTreeRoot shall not contain <Artifact> - kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + parentStandardType != 'StructTreeRoot' StructTreeRoot contains <Artifact> @@ -1744,9 +1744,9 @@ - + - StructTreeRoot shall not contain content item + StructTreeRoot shall not contain content items hasContentItems == false StructTreeRoot contains content item(s) @@ -1756,10 +1756,10 @@ - + <Document> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Document' <Document> contains <TOCI> @@ -1780,10 +1780,10 @@ - + <Document> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Document' <Document> contains <Sub> @@ -1792,10 +1792,10 @@ - + <Document> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Document' <Document> contains <Lbl> @@ -1804,10 +1804,10 @@ - + <Document> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Document' <Document> contains <Em> @@ -1816,10 +1816,10 @@ - + <Document> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Document' <Document> contains <Strong> @@ -1828,10 +1828,10 @@ - + <Document> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Document' <Document> contains <Span> @@ -1840,10 +1840,10 @@ - + <Document> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Document' <Document> contains <Quote> @@ -1852,10 +1852,10 @@ - + <Document> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Document' <Document> contains <Reference> @@ -1864,10 +1864,10 @@ - + <Document> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Document' <Document> contains <Ruby> @@ -1876,10 +1876,10 @@ - + <Document> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Document' <Document> contains <RB> @@ -1888,10 +1888,10 @@ - + <Document> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Document' <Document> contains <RT> @@ -1900,10 +1900,10 @@ - + <Document> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Document' <Document> contains <RP> @@ -1912,10 +1912,10 @@ - + <Document> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Document' <Document> contains <Warichu> @@ -1924,10 +1924,10 @@ - + <Document> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Document' <Document> contains <WT> @@ -1936,10 +1936,10 @@ - + <Document> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Document' <Document> contains <WP> @@ -1948,10 +1948,10 @@ - + <Document> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Document' <Document> contains <LI> @@ -1960,10 +1960,10 @@ - + <Document> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Document' <Document> contains <LBody> @@ -1972,10 +1972,10 @@ - + <Document> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Document' <Document> contains <BibEntry> @@ -1984,10 +1984,10 @@ - + <Document> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Document' <Document> contains <TR> @@ -1996,10 +1996,10 @@ - + <Document> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Document' <Document> contains <TH> @@ -2008,10 +2008,10 @@ - + <Document> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Document' <Document> contains <TD> @@ -2020,10 +2020,10 @@ - + <Document> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Document' <Document> contains <THead> @@ -2032,10 +2032,10 @@ - + <Document> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Document' <Document> contains <TBody> @@ -2044,10 +2044,10 @@ - + <Document> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Document' <Document> contains <TFoot> @@ -2056,10 +2056,10 @@ - + <Document> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Document' <Document> contains <Caption> @@ -2070,7 +2070,7 @@ - <Document> shall not contain content item + <Document> shall not contain content items hasContentItems == false <Document> contains content item(s) @@ -2080,10 +2080,10 @@ - + <DocumentFragment> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TOCI> @@ -2104,10 +2104,10 @@ - + <DocumentFragment> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Sub> @@ -2116,10 +2116,10 @@ - + <DocumentFragment> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Lbl> @@ -2128,10 +2128,10 @@ - + <DocumentFragment> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Em> @@ -2140,10 +2140,10 @@ - + <DocumentFragment> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Strong> @@ -2152,10 +2152,10 @@ - + <DocumentFragment> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Span> @@ -2164,10 +2164,10 @@ - + <DocumentFragment> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Quote> @@ -2176,10 +2176,10 @@ - + <DocumentFragment> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Reference> @@ -2188,10 +2188,10 @@ - + <DocumentFragment> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Ruby> @@ -2200,10 +2200,10 @@ - + <DocumentFragment> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <RB> @@ -2212,10 +2212,10 @@ - + <DocumentFragment> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <RT> @@ -2224,10 +2224,10 @@ - + <DocumentFragment> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <RP> @@ -2236,10 +2236,10 @@ - + <DocumentFragment> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Warichu> @@ -2248,10 +2248,10 @@ - + <DocumentFragment> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <WT> @@ -2260,10 +2260,10 @@ - + <DocumentFragment> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <WP> @@ -2272,10 +2272,10 @@ - + <DocumentFragment> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <LI> @@ -2284,10 +2284,10 @@ - + <DocumentFragment> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <LBody> @@ -2296,10 +2296,10 @@ - + <DocumentFragment> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <BibEntry> @@ -2308,10 +2308,10 @@ - + <DocumentFragment> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TR> @@ -2320,10 +2320,10 @@ - + <DocumentFragment> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TH> @@ -2332,10 +2332,10 @@ - + <DocumentFragment> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TD> @@ -2344,10 +2344,10 @@ - + <DocumentFragment> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <THead> @@ -2356,10 +2356,10 @@ - + <DocumentFragment> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TBody> @@ -2368,10 +2368,10 @@ - + <DocumentFragment> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <TFoot> @@ -2380,10 +2380,10 @@ - + <DocumentFragment> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'DocumentFragment' <DocumentFragment> contains <Caption> @@ -2394,7 +2394,7 @@ - <DocumentFragment> shall not contain content item + <DocumentFragment> shall not contain content items hasContentItems == false <DocumentFragment> contains content item(s) @@ -2404,10 +2404,10 @@ - + <Part> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Part' <Part> contains <Em> @@ -2416,10 +2416,10 @@ - + <Part> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Part' <Part> contains <Strong> @@ -2428,10 +2428,10 @@ - + <Part> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Part' <Part> contains <Span> @@ -2440,10 +2440,10 @@ - + <Part> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Part' <Part> contains <Quote> @@ -2452,10 +2452,10 @@ - + <Part> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Part' <Part> contains <Ruby> @@ -2464,10 +2464,10 @@ - + <Part> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Part' <Part> contains <RB> @@ -2476,10 +2476,10 @@ - + <Part> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Part' <Part> contains <RT> @@ -2488,10 +2488,10 @@ - + <Part> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Part' <Part> contains <RP> @@ -2500,10 +2500,10 @@ - + <Part> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Part' <Part> contains <Warichu> @@ -2512,10 +2512,10 @@ - + <Part> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Part' <Part> contains <WT> @@ -2524,10 +2524,10 @@ - + <Part> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Part' <Part> contains <WP> @@ -2536,10 +2536,10 @@ - + <Part> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Part' <Part> contains <LI> @@ -2548,10 +2548,10 @@ - + <Part> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Part' <Part> contains <LBody> @@ -2560,10 +2560,10 @@ - + <Part> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Part' <Part> contains <TR> @@ -2572,10 +2572,10 @@ - + <Part> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Part' <Part> contains <TH> @@ -2584,10 +2584,10 @@ - + <Part> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Part' <Part> contains <TD> @@ -2596,10 +2596,10 @@ - + <Part> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Part' <Part> contains <THead> @@ -2608,10 +2608,10 @@ - + <Part> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Part' <Part> contains <TBody> @@ -2620,10 +2620,10 @@ - + <Part> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Part' <Part> contains <TFoot> @@ -2634,7 +2634,7 @@ - <Part> shall not contain content item + <Part> shall not contain content items hasContentItems == false <Part> contains content item(s) @@ -2646,7 +2646,7 @@ - <Div> shall not contain content item + <Div> shall not contain content items hasContentItems == false <Div> contains content item(s) @@ -2656,10 +2656,10 @@ - + <Art> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Art' <Art> contains <Document> @@ -2671,7 +2671,7 @@ <Art> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Art' <Art> contains <Art> @@ -2680,10 +2680,10 @@ - + <Art> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Art' <Art> contains <TOCI> @@ -2704,10 +2704,10 @@ - + <Art> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Art' <Art> contains <Sub> @@ -2716,10 +2716,10 @@ - + <Art> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Art' <Art> contains <Em> @@ -2728,10 +2728,10 @@ - + <Art> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Art' <Art> contains <Strong> @@ -2740,10 +2740,10 @@ - + <Art> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Art' <Art> contains <Span> @@ -2752,10 +2752,10 @@ - + <Art> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Art' <Art> contains <Quote> @@ -2764,10 +2764,10 @@ - + <Art> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Art' <Art> contains <Reference> @@ -2776,10 +2776,10 @@ - + <Art> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Art' <Art> contains <Ruby> @@ -2788,10 +2788,10 @@ - + <Art> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Art' <Art> contains <RB> @@ -2800,10 +2800,10 @@ - + <Art> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Art' <Art> contains <RT> @@ -2812,10 +2812,10 @@ - + <Art> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Art' <Art> contains <RP> @@ -2824,10 +2824,10 @@ - + <Art> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Art' <Art> contains <Warichu> @@ -2836,10 +2836,10 @@ - + <Art> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Art' <Art> contains <WT> @@ -2848,10 +2848,10 @@ - + <Art> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Art' <Art> contains <WP> @@ -2860,10 +2860,10 @@ - + <Art> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Art' <Art> contains <LI> @@ -2872,10 +2872,10 @@ - + <Art> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Art' <Art> contains <LBody> @@ -2884,10 +2884,10 @@ - + <Art> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Art' <Art> contains <BibEntry> @@ -2896,10 +2896,10 @@ - + <Art> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Art' <Art> contains <TR> @@ -2908,10 +2908,10 @@ - + <Art> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Art' <Art> contains <TH> @@ -2920,10 +2920,10 @@ - + <Art> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Art' <Art> contains <TD> @@ -2932,10 +2932,10 @@ - + <Art> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Art' <Art> contains <THead> @@ -2944,10 +2944,10 @@ - + <Art> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Art' <Art> contains <TBody> @@ -2956,10 +2956,10 @@ - + <Art> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Art' <Art> contains <TFoot> @@ -2970,7 +2970,7 @@ - <Art> shall not contain content item + <Art> shall not contain content items hasContentItems == false <Art> contains content item(s) @@ -2980,10 +2980,10 @@ - + <Sect> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Sect' <Sect> contains <Document> @@ -2992,10 +2992,10 @@ - + <Sect> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Sect' <Sect> contains <TOCI> @@ -3016,10 +3016,10 @@ - + <Sect> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Sect' <Sect> contains <Sub> @@ -3028,10 +3028,10 @@ - + <Sect> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Sect' <Sect> contains <Em> @@ -3040,10 +3040,10 @@ - + <Sect> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Sect' <Sect> contains <Strong> @@ -3052,10 +3052,10 @@ - + <Sect> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Sect' <Sect> contains <Span> @@ -3064,10 +3064,10 @@ - + <Sect> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Sect' <Sect> contains <Quote> @@ -3076,10 +3076,10 @@ - + <Sect> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Sect' <Sect> contains <Reference> @@ -3088,10 +3088,10 @@ - + <Sect> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Sect' <Sect> contains <Ruby> @@ -3100,10 +3100,10 @@ - + <Sect> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Sect' <Sect> contains <RB> @@ -3112,10 +3112,10 @@ - + <Sect> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Sect' <Sect> contains <RT> @@ -3124,10 +3124,10 @@ - + <Sect> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Sect' <Sect> contains <RP> @@ -3136,10 +3136,10 @@ - + <Sect> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Sect' <Sect> contains <Warichu> @@ -3148,10 +3148,10 @@ - + <Sect> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Sect' <Sect> contains <WT> @@ -3160,10 +3160,10 @@ - + <Sect> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Sect' <Sect> contains <WP> @@ -3172,10 +3172,10 @@ - + <Sect> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Sect' <Sect> contains <LI> @@ -3184,10 +3184,10 @@ - + <Sect> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Sect' <Sect> contains <LBody> @@ -3196,10 +3196,10 @@ - + <Sect> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Sect' <Sect> contains <BibEntry> @@ -3208,10 +3208,10 @@ - + <Sect> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Sect' <Sect> contains <TR> @@ -3220,10 +3220,10 @@ - + <Sect> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Sect' <Sect> contains <TH> @@ -3232,10 +3232,10 @@ - + <Sect> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Sect' <Sect> contains <TD> @@ -3244,10 +3244,10 @@ - + <Sect> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Sect' <Sect> contains <THead> @@ -3256,10 +3256,10 @@ - + <Sect> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Sect' <Sect> contains <TBody> @@ -3268,10 +3268,10 @@ - + <Sect> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Sect' <Sect> contains <TFoot> @@ -3282,7 +3282,7 @@ - <Sect> shall not contain content item + <Sect> shall not contain content items hasContentItems == false <Sect> contains content item(s) @@ -3292,10 +3292,10 @@ - + <TOC> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TOC' <TOC> contains <Document> @@ -3304,10 +3304,10 @@ - + <TOC> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TOC' <TOC> contains <DocumentFragment> @@ -3316,10 +3316,10 @@ - + <TOC> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TOC' <TOC> contains <Part> @@ -3328,10 +3328,10 @@ - + <TOC> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'TOC' <TOC> contains <Art> @@ -3340,10 +3340,10 @@ - + <TOC> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'TOC' <TOC> contains <Div> @@ -3352,10 +3352,10 @@ - + <TOC> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'TOC' <TOC> contains <Sect> @@ -3364,10 +3364,10 @@ - + <TOC> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TOC' <TOC> contains <Aside> @@ -3376,10 +3376,10 @@ - + <TOC> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TOC' <TOC> contains <BlockQuote> @@ -3388,10 +3388,10 @@ - + <TOC> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'TOC' <TOC> contains <P> @@ -3400,10 +3400,10 @@ - + <TOC> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'TOC' <TOC> contains <Note> @@ -3412,10 +3412,10 @@ - + <TOC> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'TOC' <TOC> contains <Code> @@ -3424,10 +3424,10 @@ - + <TOC> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'TOC' <TOC> contains <Hn> @@ -3436,10 +3436,10 @@ - + <TOC> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'TOC' <TOC> contains <H> @@ -3448,10 +3448,10 @@ - + <TOC> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TOC' <TOC> contains <Title> @@ -3460,10 +3460,10 @@ - + <TOC> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TOC' <TOC> contains <Sub> @@ -3472,10 +3472,10 @@ - + <TOC> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'TOC' <TOC> contains <Lbl> @@ -3484,10 +3484,10 @@ - + <TOC> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'TOC' <TOC> contains <Em> @@ -3496,10 +3496,10 @@ - + <TOC> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'TOC' <TOC> contains <Strong> @@ -3508,10 +3508,10 @@ - + <TOC> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'TOC' <TOC> contains <Span> @@ -3520,10 +3520,10 @@ - + <TOC> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'TOC' <TOC> contains <Quote> @@ -3532,10 +3532,10 @@ - + <TOC> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'TOC' <TOC> contains <Link> @@ -3544,10 +3544,10 @@ - + <TOC> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'TOC' <TOC> contains <Reference> @@ -3556,10 +3556,10 @@ - + <TOC> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'TOC' <TOC> contains <Annot> @@ -3568,10 +3568,10 @@ - + <TOC> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'TOC' <TOC> contains <Form> @@ -3580,10 +3580,10 @@ - + <TOC> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'TOC' <TOC> contains <Ruby> @@ -3592,10 +3592,10 @@ - + <TOC> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TOC' <TOC> contains <RB> @@ -3604,10 +3604,10 @@ - + <TOC> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TOC' <TOC> contains <RT> @@ -3616,10 +3616,10 @@ - + <TOC> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TOC' <TOC> contains <RP> @@ -3628,10 +3628,10 @@ - + <TOC> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'TOC' <TOC> contains <Warichu> @@ -3640,10 +3640,10 @@ - + <TOC> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TOC' <TOC> contains <WT> @@ -3652,10 +3652,10 @@ - + <TOC> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TOC' <TOC> contains <WP> @@ -3664,10 +3664,10 @@ - + <TOC> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'TOC' <TOC> contains <FENote> @@ -3676,10 +3676,10 @@ - + <TOC> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'TOC' <TOC> contains <Index> @@ -3688,10 +3688,10 @@ - + <TOC> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'TOC' <TOC> contains <L> @@ -3700,10 +3700,10 @@ - + <TOC> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TOC' <TOC> contains <LI> @@ -3712,10 +3712,10 @@ - + <TOC> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TOC' <TOC> contains <LBody> @@ -3724,10 +3724,10 @@ - + <TOC> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'TOC' <TOC> contains <BibEntry> @@ -3736,10 +3736,10 @@ - + <TOC> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'TOC' <TOC> contains <Table> @@ -3748,10 +3748,10 @@ - + <TOC> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'TOC' <TOC> contains <TR> @@ -3760,10 +3760,10 @@ - + <TOC> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TOC' <TOC> contains <TH> @@ -3772,10 +3772,10 @@ - + <TOC> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TOC' <TOC> contains <TD> @@ -3784,10 +3784,10 @@ - + <TOC> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TOC' <TOC> contains <THead> @@ -3796,10 +3796,10 @@ - + <TOC> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TOC' <TOC> contains <TBody> @@ -3808,10 +3808,10 @@ - + <TOC> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TOC' <TOC> contains <TFoot> @@ -3832,10 +3832,10 @@ - + <TOC> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'TOC' <TOC> contains <Figure> @@ -3844,10 +3844,10 @@ - + <TOC> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'TOC' <TOC> contains <Formula> @@ -3858,7 +3858,7 @@ - <TOC> shall not contain content item + <TOC> shall not contain content items hasContentItems == false <TOC> contains content item(s) @@ -3868,10 +3868,10 @@ - + <TOCI> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Document> @@ -3880,10 +3880,10 @@ - + <TOCI> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <DocumentFragment> @@ -3892,10 +3892,10 @@ - + <TOCI> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Part> @@ -3904,10 +3904,10 @@ - + <TOCI> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Art> @@ -3916,10 +3916,10 @@ - + <TOCI> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Sect> @@ -3931,7 +3931,7 @@ <TOCI> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TOCI> @@ -3940,10 +3940,10 @@ - + <TOCI> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Aside> @@ -3952,10 +3952,10 @@ - + <TOCI> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <BlockQuote> @@ -3964,10 +3964,10 @@ - + <TOCI> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Note> @@ -3976,10 +3976,10 @@ - + <TOCI> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Code> @@ -3988,10 +3988,10 @@ - + <TOCI> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Hn> @@ -4000,10 +4000,10 @@ - + <TOCI> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <H> @@ -4012,10 +4012,10 @@ - + <TOCI> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Title> @@ -4024,10 +4024,10 @@ - + <TOCI> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Sub> @@ -4036,10 +4036,10 @@ - + <TOCI> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Em> @@ -4048,10 +4048,10 @@ - + <TOCI> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Strong> @@ -4060,10 +4060,10 @@ - + <TOCI> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Span> @@ -4072,10 +4072,10 @@ - + <TOCI> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Quote> @@ -4084,10 +4084,10 @@ - + <TOCI> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Link> @@ -4096,10 +4096,10 @@ - + <TOCI> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Annot> @@ -4108,10 +4108,10 @@ - + <TOCI> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Form> @@ -4120,10 +4120,10 @@ - + <TOCI> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Ruby> @@ -4132,10 +4132,10 @@ - + <TOCI> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <RB> @@ -4144,10 +4144,10 @@ - + <TOCI> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <RT> @@ -4156,10 +4156,10 @@ - + <TOCI> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <RP> @@ -4168,10 +4168,10 @@ - + <TOCI> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Warichu> @@ -4180,10 +4180,10 @@ - + <TOCI> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <WT> @@ -4192,10 +4192,10 @@ - + <TOCI> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <WP> @@ -4204,10 +4204,10 @@ - + <TOCI> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <FENote> @@ -4216,10 +4216,10 @@ - + <TOCI> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Index> @@ -4228,10 +4228,10 @@ - + <TOCI> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <L> @@ -4240,10 +4240,10 @@ - + <TOCI> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <LI> @@ -4252,10 +4252,10 @@ - + <TOCI> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <LBody> @@ -4264,10 +4264,10 @@ - + <TOCI> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <BibEntry> @@ -4276,10 +4276,10 @@ - + <TOCI> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Table> @@ -4288,10 +4288,10 @@ - + <TOCI> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TR> @@ -4300,10 +4300,10 @@ - + <TOCI> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TH> @@ -4312,10 +4312,10 @@ - + <TOCI> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TD> @@ -4324,10 +4324,10 @@ - + <TOCI> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <THead> @@ -4336,10 +4336,10 @@ - + <TOCI> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TBody> @@ -4348,10 +4348,10 @@ - + <TOCI> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <TFoot> @@ -4360,10 +4360,10 @@ - + <TOCI> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Caption> @@ -4372,10 +4372,10 @@ - + <TOCI> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Figure> @@ -4384,10 +4384,10 @@ - + <TOCI> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'TOCI' <TOCI> contains <Formula> @@ -4398,7 +4398,7 @@ - <TOCI> shall not contain content item + <TOCI> shall not contain content items hasContentItems == false <TOCI> contains content item(s) @@ -4408,10 +4408,10 @@ - + <Aside> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Aside' <Aside> contains <TOCI> @@ -4423,7 +4423,7 @@ <Aside> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Aside' <Aside> contains <Aside> @@ -4444,10 +4444,10 @@ - + <Aside> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Aside' <Aside> contains <Title> @@ -4456,10 +4456,10 @@ - + <Aside> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Aside' <Aside> contains <Sub> @@ -4468,10 +4468,10 @@ - + <Aside> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Aside' <Aside> contains <Em> @@ -4480,10 +4480,10 @@ - + <Aside> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Aside' <Aside> contains <Strong> @@ -4492,10 +4492,10 @@ - + <Aside> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Aside' <Aside> contains <Span> @@ -4504,10 +4504,10 @@ - + <Aside> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Aside' <Aside> contains <Quote> @@ -4516,10 +4516,10 @@ - + <Aside> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Aside' <Aside> contains <Ruby> @@ -4528,10 +4528,10 @@ - + <Aside> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Aside' <Aside> contains <RB> @@ -4540,10 +4540,10 @@ - + <Aside> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Aside' <Aside> contains <RT> @@ -4552,10 +4552,10 @@ - + <Aside> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Aside' <Aside> contains <RP> @@ -4564,10 +4564,10 @@ - + <Aside> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Aside' <Aside> contains <Warichu> @@ -4576,10 +4576,10 @@ - + <Aside> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Aside' <Aside> contains <WT> @@ -4588,10 +4588,10 @@ - + <Aside> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Aside' <Aside> contains <WP> @@ -4600,10 +4600,10 @@ - + <Aside> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Aside' <Aside> contains <LI> @@ -4612,10 +4612,10 @@ - + <Aside> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Aside' <Aside> contains <LBody> @@ -4624,10 +4624,10 @@ - + <Aside> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Aside' <Aside> contains <BibEntry> @@ -4636,10 +4636,10 @@ - + <Aside> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Aside' <Aside> contains <TR> @@ -4648,10 +4648,10 @@ - + <Aside> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Aside' <Aside> contains <TH> @@ -4660,10 +4660,10 @@ - + <Aside> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Aside' <Aside> contains <TD> @@ -4672,10 +4672,10 @@ - + <Aside> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Aside' <Aside> contains <THead> @@ -4684,10 +4684,10 @@ - + <Aside> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Aside' <Aside> contains <TBody> @@ -4696,10 +4696,10 @@ - + <Aside> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Aside' <Aside> contains <TFoot> @@ -4720,10 +4720,10 @@ - + <BlockQuote> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TOCI> @@ -4732,10 +4732,10 @@ - + <BlockQuote> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Aside> @@ -4756,10 +4756,10 @@ - + <BlockQuote> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Title> @@ -4768,10 +4768,10 @@ - + <BlockQuote> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Sub> @@ -4780,10 +4780,10 @@ - + <BlockQuote> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Em> @@ -4792,10 +4792,10 @@ - + <BlockQuote> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Strong> @@ -4804,10 +4804,10 @@ - + <BlockQuote> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Span> @@ -4816,10 +4816,10 @@ - + <BlockQuote> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Quote> @@ -4828,10 +4828,10 @@ - + <BlockQuote> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Ruby> @@ -4840,10 +4840,10 @@ - + <BlockQuote> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <RB> @@ -4852,10 +4852,10 @@ - + <BlockQuote> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <RT> @@ -4864,10 +4864,10 @@ - + <BlockQuote> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <RP> @@ -4876,10 +4876,10 @@ - + <BlockQuote> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <Warichu> @@ -4888,10 +4888,10 @@ - + <BlockQuote> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <WT> @@ -4900,10 +4900,10 @@ - + <BlockQuote> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <WP> @@ -4912,10 +4912,10 @@ - + <BlockQuote> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <LI> @@ -4924,10 +4924,10 @@ - + <BlockQuote> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <LBody> @@ -4936,10 +4936,10 @@ - + <BlockQuote> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <BibEntry> @@ -4948,10 +4948,10 @@ - + <BlockQuote> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TR> @@ -4960,10 +4960,10 @@ - + <BlockQuote> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TH> @@ -4972,10 +4972,10 @@ - + <BlockQuote> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TD> @@ -4984,10 +4984,10 @@ - + <BlockQuote> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <THead> @@ -4996,10 +4996,10 @@ - + <BlockQuote> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TBody> @@ -5008,10 +5008,10 @@ - + <BlockQuote> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'BlockQuote' <BlockQuote> contains <TFoot> @@ -5032,10 +5032,10 @@ - + <Title> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Title' <Title> contains <Document> @@ -5044,10 +5044,10 @@ - + <Title> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Title' <Title> contains <DocumentFragment> @@ -5056,10 +5056,10 @@ - + <Title> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Title' <Title> contains <Art> @@ -5068,10 +5068,10 @@ - + <Title> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Title' <Title> contains <Sect> @@ -5080,10 +5080,10 @@ - + <Title> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Title' <Title> contains <TOC> @@ -5092,10 +5092,10 @@ - + <Title> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Title' <Title> contains <TOCI> @@ -5104,10 +5104,10 @@ - + <Title> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Title' <Title> contains <BlockQuote> @@ -5116,10 +5116,10 @@ - + <Title> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Title' <Title> contains <Hn> @@ -5128,10 +5128,10 @@ - + <Title> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Title' <Title> contains <H> @@ -5143,7 +5143,7 @@ <Title> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Title' <Title> contains <Title> @@ -5152,10 +5152,10 @@ - + <Title> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Title' <Title> contains <Sub> @@ -5164,10 +5164,10 @@ - + <Title> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Title' <Title> contains <RB> @@ -5176,10 +5176,10 @@ - + <Title> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Title' <Title> contains <RT> @@ -5188,10 +5188,10 @@ - + <Title> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Title' <Title> contains <RP> @@ -5200,10 +5200,10 @@ - + <Title> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Title' <Title> contains <WT> @@ -5212,10 +5212,10 @@ - + <Title> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Title' <Title> contains <WP> @@ -5224,10 +5224,10 @@ - + <Title> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Title' <Title> contains <Index> @@ -5236,10 +5236,10 @@ - + <Title> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Title' <Title> contains <LI> @@ -5248,10 +5248,10 @@ - + <Title> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Title' <Title> contains <LBody> @@ -5260,10 +5260,10 @@ - + <Title> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Title' <Title> contains <TR> @@ -5272,10 +5272,10 @@ - + <Title> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Title' <Title> contains <TH> @@ -5284,10 +5284,10 @@ - + <Title> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Title' <Title> contains <TD> @@ -5296,10 +5296,10 @@ - + <Title> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Title' <Title> contains <THead> @@ -5308,10 +5308,10 @@ - + <Title> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Title' <Title> contains <TBody> @@ -5320,10 +5320,10 @@ - + <Title> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Title' <Title> contains <TFoot> @@ -5344,10 +5344,10 @@ - + <Sub> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Sub' <Sub> contains <Document> @@ -5356,10 +5356,10 @@ - + <Sub> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Sub' <Sub> contains <DocumentFragment> @@ -5368,10 +5368,10 @@ - + <Sub> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Sub' <Sub> contains <Part> @@ -5380,10 +5380,10 @@ - + <Sub> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Sub' <Sub> contains <Art> @@ -5392,10 +5392,10 @@ - + <Sub> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Sub' <Sub> contains <Div> @@ -5404,10 +5404,10 @@ - + <Sub> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Sub' <Sub> contains <Sect> @@ -5416,10 +5416,10 @@ - + <Sub> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Sub' <Sub> contains <TOC> @@ -5428,10 +5428,10 @@ - + <Sub> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Sub' <Sub> contains <TOCI> @@ -5440,10 +5440,10 @@ - + <Sub> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Sub' <Sub> contains <Aside> @@ -5452,10 +5452,10 @@ - + <Sub> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Sub' <Sub> contains <BlockQuote> @@ -5464,10 +5464,10 @@ - + <Sub> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Sub' <Sub> contains <P> @@ -5476,10 +5476,10 @@ - + <Sub> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Sub' <Sub> contains <Hn> @@ -5488,10 +5488,10 @@ - + <Sub> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Sub' <Sub> contains <H> @@ -5500,10 +5500,10 @@ - + <Sub> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Sub' <Sub> contains <Title> @@ -5515,7 +5515,7 @@ <Sub> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Sub' <Sub> contains <Sub> @@ -5524,10 +5524,10 @@ - + <Sub> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Sub' <Sub> contains <RB> @@ -5536,10 +5536,10 @@ - + <Sub> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Sub' <Sub> contains <RT> @@ -5548,10 +5548,10 @@ - + <Sub> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Sub' <Sub> contains <RP> @@ -5560,10 +5560,10 @@ - + <Sub> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Sub' <Sub> contains <WT> @@ -5572,10 +5572,10 @@ - + <Sub> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Sub' <Sub> contains <WP> @@ -5584,10 +5584,10 @@ - + <Sub> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Sub' <Sub> contains <Index> @@ -5596,10 +5596,10 @@ - + <Sub> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Sub' <Sub> contains <LI> @@ -5608,10 +5608,10 @@ - + <Sub> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Sub' <Sub> contains <LBody> @@ -5620,10 +5620,10 @@ - + <Sub> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Sub' <Sub> contains <Table> @@ -5632,10 +5632,10 @@ - + <Sub> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Sub' <Sub> contains <TR> @@ -5644,10 +5644,10 @@ - + <Sub> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Sub' <Sub> contains <TH> @@ -5656,10 +5656,10 @@ - + <Sub> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Sub' <Sub> contains <TD> @@ -5668,10 +5668,10 @@ - + <Sub> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Sub' <Sub> contains <THead> @@ -5680,10 +5680,10 @@ - + <Sub> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Sub' <Sub> contains <TBody> @@ -5692,10 +5692,10 @@ - + <Sub> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Sub' <Sub> contains <TFoot> @@ -5704,10 +5704,10 @@ - + <Sub> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Sub' <Sub> contains <Caption> @@ -5716,10 +5716,10 @@ - + <P> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'P' <P> contains <Document> @@ -5728,10 +5728,10 @@ - + <P> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'P' <P> contains <DocumentFragment> @@ -5740,10 +5740,10 @@ - + <P> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'P' <P> contains <Part> @@ -5752,10 +5752,10 @@ - + <P> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'P' <P> contains <Art> @@ -5764,10 +5764,10 @@ - + <P> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'P' <P> contains <Div> @@ -5776,10 +5776,10 @@ - + <P> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'P' <P> contains <Sect> @@ -5788,10 +5788,10 @@ - + <P> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'P' <P> contains <TOC> @@ -5800,10 +5800,10 @@ - + <P> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'P' <P> contains <TOCI> @@ -5812,10 +5812,10 @@ - + <P> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'P' <P> contains <Aside> @@ -5824,10 +5824,10 @@ - + <P> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'P' <P> contains <BlockQuote> @@ -5839,7 +5839,7 @@ <P> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'P' <P> contains <P> @@ -5848,10 +5848,10 @@ - + <P> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'P' <P> contains <Hn> @@ -5860,10 +5860,10 @@ - + <P> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'P' <P> contains <H> @@ -5872,10 +5872,10 @@ - + <P> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'P' <P> contains <Title> @@ -5884,10 +5884,10 @@ - + <P> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'P' <P> contains <RB> @@ -5896,10 +5896,10 @@ - + <P> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'P' <P> contains <RT> @@ -5908,10 +5908,10 @@ - + <P> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'P' <P> contains <RP> @@ -5920,10 +5920,10 @@ - + <P> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'P' <P> contains <WT> @@ -5932,10 +5932,10 @@ - + <P> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'P' <P> contains <WP> @@ -5944,10 +5944,10 @@ - + <P> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'P' <P> contains <Index> @@ -5956,10 +5956,10 @@ - + <P> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'P' <P> contains <LI> @@ -5968,10 +5968,10 @@ - + <P> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'P' <P> contains <LBody> @@ -5980,10 +5980,10 @@ - + <P> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'P' <P> contains <TR> @@ -5992,10 +5992,10 @@ - + <P> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'P' <P> contains <TH> @@ -6004,10 +6004,10 @@ - + <P> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'P' <P> contains <TD> @@ -6016,10 +6016,10 @@ - + <P> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'P' <P> contains <THead> @@ -6028,10 +6028,10 @@ - + <P> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'P' <P> contains <TBody> @@ -6040,10 +6040,10 @@ - + <P> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'P' <P> contains <TFoot> @@ -6052,10 +6052,10 @@ - + <P> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'P' <P> contains <Caption> @@ -6064,10 +6064,10 @@ - + <Note> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Note' <Note> contains <Document> @@ -6076,10 +6076,10 @@ - + <Note> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Note' <Note> contains <TOC> @@ -6088,10 +6088,10 @@ - + <Note> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Note' <Note> contains <TOCI> @@ -6100,10 +6100,10 @@ - + <Note> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Note' <Note> contains <Hn> @@ -6112,10 +6112,10 @@ - + <Note> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Note' <Note> contains <H> @@ -6124,10 +6124,10 @@ - + <Note> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Note' <Note> contains <Title> @@ -6136,10 +6136,10 @@ - + <Note> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Note' <Note> contains <RB> @@ -6148,10 +6148,10 @@ - + <Note> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Note' <Note> contains <RT> @@ -6160,10 +6160,10 @@ - + <Note> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Note' <Note> contains <RP> @@ -6172,10 +6172,10 @@ - + <Note> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Note' <Note> contains <WT> @@ -6184,10 +6184,10 @@ - + <Note> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Note' <Note> contains <WP> @@ -6196,10 +6196,10 @@ - + <Note> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Note' <Note> contains <LI> @@ -6208,10 +6208,10 @@ - + <Note> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Note' <Note> contains <LBody> @@ -6220,10 +6220,10 @@ - + <Note> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Note' <Note> contains <TR> @@ -6232,10 +6232,10 @@ - + <Note> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Note' <Note> contains <TH> @@ -6244,10 +6244,10 @@ - + <Note> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Note' <Note> contains <TD> @@ -6256,10 +6256,10 @@ - + <Note> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Note' <Note> contains <THead> @@ -6268,10 +6268,10 @@ - + <Note> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Note' <Note> contains <TBody> @@ -6280,10 +6280,10 @@ - + <Note> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Note' <Note> contains <TFoot> @@ -6292,10 +6292,10 @@ - + <Code> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Code' <Code> contains <Document> @@ -6304,10 +6304,10 @@ - + <Code> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Code' <Code> contains <Art> @@ -6316,10 +6316,10 @@ - + <Code> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Code' <Code> contains <Sect> @@ -6328,10 +6328,10 @@ - + <Code> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Code' <Code> contains <TOC> @@ -6340,10 +6340,10 @@ - + <Code> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Code' <Code> contains <TOCI> @@ -6352,10 +6352,10 @@ - + <Code> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Code' <Code> contains <Aside> @@ -6364,10 +6364,10 @@ - + <Code> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Code' <Code> contains <BlockQuote> @@ -6376,10 +6376,10 @@ - + <Code> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Code' <Code> contains <P> @@ -6391,7 +6391,7 @@ <Code> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Code' <Code> contains <Code> @@ -6400,10 +6400,10 @@ - + <Code> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Code' <Code> contains <Hn> @@ -6412,10 +6412,10 @@ - + <Code> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Code' <Code> contains <H> @@ -6424,10 +6424,10 @@ - + <Code> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Code' <Code> contains <Title> @@ -6436,10 +6436,10 @@ - + <Code> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Code' <Code> contains <Sub> @@ -6448,10 +6448,10 @@ - + <Code> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Code' <Code> contains <Lbl> @@ -6460,10 +6460,10 @@ - + <Code> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Code' <Code> contains <Quote> @@ -6472,10 +6472,10 @@ - + <Code> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Code' <Code> contains <Form> @@ -6484,10 +6484,10 @@ - + <Code> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Code' <Code> contains <Ruby> @@ -6496,10 +6496,10 @@ - + <Code> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Code' <Code> contains <RB> @@ -6508,10 +6508,10 @@ - + <Code> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Code' <Code> contains <RT> @@ -6520,10 +6520,10 @@ - + <Code> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Code' <Code> contains <RP> @@ -6532,10 +6532,10 @@ - + <Code> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Code' <Code> contains <Warichu> @@ -6544,10 +6544,10 @@ - + <Code> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Code' <Code> contains <WT> @@ -6556,10 +6556,10 @@ - + <Code> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Code' <Code> contains <WP> @@ -6568,10 +6568,10 @@ - + <Code> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Code' <Code> contains <Index> @@ -6580,10 +6580,10 @@ - + <Code> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Code' <Code> contains <L> @@ -6592,10 +6592,10 @@ - + <Code> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Code' <Code> contains <LI> @@ -6604,10 +6604,10 @@ - + <Code> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Code' <Code> contains <LBody> @@ -6616,10 +6616,10 @@ - + <Code> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Code' <Code> contains <Table> @@ -6628,10 +6628,10 @@ - + <Code> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Code' <Code> contains <TR> @@ -6640,10 +6640,10 @@ - + <Code> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Code' <Code> contains <TH> @@ -6652,10 +6652,10 @@ - + <Code> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Code' <Code> contains <TD> @@ -6664,10 +6664,10 @@ - + <Code> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Code' <Code> contains <THead> @@ -6676,10 +6676,10 @@ - + <Code> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Code' <Code> contains <TBody> @@ -6688,10 +6688,10 @@ - + <Code> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Code' <Code> contains <TFoot> @@ -6700,10 +6700,10 @@ - + <Code> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Code' <Code> contains <Caption> @@ -6712,10 +6712,10 @@ - + <Code> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'Code' <Code> contains <Figure> @@ -6724,10 +6724,10 @@ - + <Code> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'Code' <Code> contains <Formula> @@ -6736,10 +6736,10 @@ - + <Hn> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Document> @@ -6748,10 +6748,10 @@ - + <Hn> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <DocumentFragment> @@ -6760,10 +6760,10 @@ - + <Hn> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Part> @@ -6784,10 +6784,10 @@ - + <Hn> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Div> @@ -6808,10 +6808,10 @@ - + <Hn> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TOC> @@ -6820,10 +6820,10 @@ - + <Hn> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TOCI> @@ -6832,10 +6832,10 @@ - + <Hn> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Aside> @@ -6844,10 +6844,10 @@ - + <Hn> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <BlockQuote> @@ -6856,10 +6856,10 @@ - + <Hn> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <P> @@ -6871,7 +6871,7 @@ <Hn> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Hn> @@ -6880,10 +6880,10 @@ - + <Hn> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <H> @@ -6892,10 +6892,10 @@ - + <Hn> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Title> @@ -6904,10 +6904,10 @@ - + <Hn> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <RB> @@ -6916,10 +6916,10 @@ - + <Hn> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <RT> @@ -6928,10 +6928,10 @@ - + <Hn> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <RP> @@ -6940,10 +6940,10 @@ - + <Hn> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <WT> @@ -6952,10 +6952,10 @@ - + <Hn> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <WP> @@ -6964,10 +6964,10 @@ - + <Hn> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Index> @@ -6976,10 +6976,10 @@ - + <Hn> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <L> @@ -6988,10 +6988,10 @@ - + <Hn> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <LI> @@ -7000,10 +7000,10 @@ - + <Hn> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <LBody> @@ -7012,10 +7012,10 @@ - + <Hn> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Table> @@ -7024,10 +7024,10 @@ - + <Hn> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TR> @@ -7036,10 +7036,10 @@ - + <Hn> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TH> @@ -7048,10 +7048,10 @@ - + <Hn> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TD> @@ -7060,10 +7060,10 @@ - + <Hn> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <THead> @@ -7072,10 +7072,10 @@ - + <Hn> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TBody> @@ -7084,10 +7084,10 @@ - + <Hn> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <TFoot> @@ -7096,10 +7096,10 @@ - + <Hn> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + /^H[1-9][0-9]*$/.test(parentStandardType) == false <Hn> contains <Caption> @@ -7108,10 +7108,10 @@ - + <H> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'H' <H> contains <Document> @@ -7120,10 +7120,10 @@ - + <H> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'H' <H> contains <DocumentFragment> @@ -7132,10 +7132,10 @@ - + <H> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'H' <H> contains <Part> @@ -7156,10 +7156,10 @@ - + <H> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'H' <H> contains <Div> @@ -7180,10 +7180,10 @@ - + <H> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'H' <H> contains <TOC> @@ -7192,10 +7192,10 @@ - + <H> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'H' <H> contains <TOCI> @@ -7204,10 +7204,10 @@ - + <H> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'H' <H> contains <Aside> @@ -7216,10 +7216,10 @@ - + <H> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'H' <H> contains <BlockQuote> @@ -7228,10 +7228,10 @@ - + <H> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'H' <H> contains <P> @@ -7240,10 +7240,10 @@ - + <H> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'H' <H> contains <Hn> @@ -7255,7 +7255,7 @@ <H> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'H' <H> contains <H> @@ -7264,10 +7264,10 @@ - + <H> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'H' <H> contains <Title> @@ -7276,10 +7276,10 @@ - + <H> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'H' <H> contains <RB> @@ -7288,10 +7288,10 @@ - + <H> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'H' <H> contains <RT> @@ -7300,10 +7300,10 @@ - + <H> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'H' <H> contains <RP> @@ -7312,10 +7312,10 @@ - + <H> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'H' <H> contains <WT> @@ -7324,10 +7324,10 @@ - + <H> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'H' <H> contains <WP> @@ -7336,10 +7336,10 @@ - + <H> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'H' <H> contains <Index> @@ -7348,10 +7348,10 @@ - + <H> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'H' <H> contains <L> @@ -7360,10 +7360,10 @@ - + <H> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'H' <H> contains <LI> @@ -7372,10 +7372,10 @@ - + <H> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'H' <H> contains <LBody> @@ -7384,10 +7384,10 @@ - + <H> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'H' <H> contains <Table> @@ -7396,10 +7396,10 @@ - + <H> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'H' <H> contains <TR> @@ -7408,10 +7408,10 @@ - + <H> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'H' <H> contains <TH> @@ -7420,10 +7420,10 @@ - + <H> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'H' <H> contains <TD> @@ -7432,10 +7432,10 @@ - + <H> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'H' <H> contains <THead> @@ -7444,10 +7444,10 @@ - + <H> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'H' <H> contains <TBody> @@ -7456,10 +7456,10 @@ - + <H> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'H' <H> contains <TFoot> @@ -7468,10 +7468,10 @@ - + <H> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'H' <H> contains <Caption> @@ -7480,10 +7480,10 @@ - + <Lbl> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Document> @@ -7492,10 +7492,10 @@ - + <Lbl> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <DocumentFragment> @@ -7504,10 +7504,10 @@ - + <Lbl> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Part> @@ -7516,10 +7516,10 @@ - + <Lbl> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Art> @@ -7528,10 +7528,10 @@ - + <Lbl> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Div> @@ -7540,10 +7540,10 @@ - + <Lbl> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Sect> @@ -7552,10 +7552,10 @@ - + <Lbl> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TOC> @@ -7564,10 +7564,10 @@ - + <Lbl> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TOCI> @@ -7576,10 +7576,10 @@ - + <Lbl> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Aside> @@ -7588,10 +7588,10 @@ - + <Lbl> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <BlockQuote> @@ -7600,10 +7600,10 @@ - + <Lbl> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <P> @@ -7612,10 +7612,10 @@ - + <Lbl> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Hn> @@ -7624,10 +7624,10 @@ - + <Lbl> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <H> @@ -7636,10 +7636,10 @@ - + <Lbl> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Title> @@ -7651,7 +7651,7 @@ <Lbl> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Lbl> @@ -7660,10 +7660,10 @@ - + <Lbl> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <RB> @@ -7672,10 +7672,10 @@ - + <Lbl> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <RT> @@ -7684,10 +7684,10 @@ - + <Lbl> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <RP> @@ -7696,10 +7696,10 @@ - + <Lbl> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <WT> @@ -7708,10 +7708,10 @@ - + <Lbl> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <WP> @@ -7720,10 +7720,10 @@ - + <Lbl> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Index> @@ -7732,10 +7732,10 @@ - + <Lbl> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <L> @@ -7744,10 +7744,10 @@ - + <Lbl> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <LI> @@ -7756,10 +7756,10 @@ - + <Lbl> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <LBody> @@ -7768,10 +7768,10 @@ - + <Lbl> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Table> @@ -7780,10 +7780,10 @@ - + <Lbl> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TR> @@ -7792,10 +7792,10 @@ - + <Lbl> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TH> @@ -7804,10 +7804,10 @@ - + <Lbl> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TD> @@ -7816,10 +7816,10 @@ - + <Lbl> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <THead> @@ -7828,10 +7828,10 @@ - + <Lbl> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TBody> @@ -7840,10 +7840,10 @@ - + <Lbl> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <TFoot> @@ -7852,10 +7852,10 @@ - + <Lbl> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Lbl' <Lbl> contains <Caption> @@ -7864,10 +7864,10 @@ - + <Em> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Em' <Em> contains <Document> @@ -7876,10 +7876,10 @@ - + <Em> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Em' <Em> contains <DocumentFragment> @@ -7888,10 +7888,10 @@ - + <Em> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Em' <Em> contains <Part> @@ -7900,10 +7900,10 @@ - + <Em> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Em' <Em> contains <Art> @@ -7912,10 +7912,10 @@ - + <Em> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Em' <Em> contains <Div> @@ -7924,10 +7924,10 @@ - + <Em> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Em' <Em> contains <Sect> @@ -7936,10 +7936,10 @@ - + <Em> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Em' <Em> contains <TOC> @@ -7948,10 +7948,10 @@ - + <Em> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Em' <Em> contains <TOCI> @@ -7960,10 +7960,10 @@ - + <Em> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Em' <Em> contains <Aside> @@ -7972,10 +7972,10 @@ - + <Em> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Em' <Em> contains <BlockQuote> @@ -7984,10 +7984,10 @@ - + <Em> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Em' <Em> contains <P> @@ -7996,10 +7996,10 @@ - + <Em> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Em' <Em> contains <Hn> @@ -8008,10 +8008,10 @@ - + <Em> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Em' <Em> contains <H> @@ -8020,10 +8020,10 @@ - + <Em> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Em' <Em> contains <Title> @@ -8032,10 +8032,10 @@ - + <Em> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Em' <Em> contains <RB> @@ -8044,10 +8044,10 @@ - + <Em> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Em' <Em> contains <RT> @@ -8056,10 +8056,10 @@ - + <Em> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Em' <Em> contains <RP> @@ -8068,10 +8068,10 @@ - + <Em> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Em' <Em> contains <WT> @@ -8080,10 +8080,10 @@ - + <Em> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Em' <Em> contains <WP> @@ -8092,10 +8092,10 @@ - + <Em> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Em' <Em> contains <Index> @@ -8104,10 +8104,10 @@ - + <Em> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Em' <Em> contains <L> @@ -8116,10 +8116,10 @@ - + <Em> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Em' <Em> contains <LI> @@ -8128,10 +8128,10 @@ - + <Em> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Em' <Em> contains <LBody> @@ -8140,10 +8140,10 @@ - + <Em> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Em' <Em> contains <Table> @@ -8152,10 +8152,10 @@ - + <Em> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Em' <Em> contains <TR> @@ -8164,10 +8164,10 @@ - + <Em> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Em' <Em> contains <TH> @@ -8176,10 +8176,10 @@ - + <Em> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Em' <Em> contains <TD> @@ -8188,10 +8188,10 @@ - + <Em> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Em' <Em> contains <THead> @@ -8200,10 +8200,10 @@ - + <Em> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Em' <Em> contains <TBody> @@ -8212,10 +8212,10 @@ - + <Em> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Em' <Em> contains <TFoot> @@ -8224,10 +8224,10 @@ - + <Em> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Em' <Em> contains <Caption> @@ -8236,10 +8236,10 @@ - + <Strong> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Strong' <Strong> contains <Document> @@ -8248,10 +8248,10 @@ - + <Strong> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Strong' <Strong> contains <DocumentFragment> @@ -8260,10 +8260,10 @@ - + <Strong> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Strong' <Strong> contains <Part> @@ -8272,10 +8272,10 @@ - + <Strong> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Strong' <Strong> contains <Art> @@ -8284,10 +8284,10 @@ - + <Strong> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Strong' <Strong> contains <Div> @@ -8296,10 +8296,10 @@ - + <Strong> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Strong' <Strong> contains <Sect> @@ -8308,10 +8308,10 @@ - + <Strong> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Strong' <Strong> contains <TOC> @@ -8320,10 +8320,10 @@ - + <Strong> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Strong' <Strong> contains <TOCI> @@ -8332,10 +8332,10 @@ - + <Strong> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Strong' <Strong> contains <Aside> @@ -8344,10 +8344,10 @@ - + <Strong> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Strong' <Strong> contains <BlockQuote> @@ -8356,10 +8356,10 @@ - + <Strong> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Strong' <Strong> contains <P> @@ -8368,10 +8368,10 @@ - + <Strong> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Strong' <Strong> contains <Hn> @@ -8380,10 +8380,10 @@ - + <Strong> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Strong' <Strong> contains <H> @@ -8392,10 +8392,10 @@ - + <Strong> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Strong' <Strong> contains <Title> @@ -8404,10 +8404,10 @@ - + <Strong> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Strong' <Strong> contains <RB> @@ -8416,10 +8416,10 @@ - + <Strong> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Strong' <Strong> contains <RT> @@ -8428,10 +8428,10 @@ - + <Strong> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Strong' <Strong> contains <RP> @@ -8440,10 +8440,10 @@ - + <Strong> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Strong' <Strong> contains <WT> @@ -8452,10 +8452,10 @@ - + <Strong> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Strong' <Strong> contains <WP> @@ -8464,10 +8464,10 @@ - + <Strong> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Strong' <Strong> contains <Index> @@ -8476,10 +8476,10 @@ - + <Strong> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Strong' <Strong> contains <L> @@ -8488,10 +8488,10 @@ - + <Strong> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Strong' <Strong> contains <LI> @@ -8500,10 +8500,10 @@ - + <Strong> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Strong' <Strong> contains <LBody> @@ -8512,10 +8512,10 @@ - + <Strong> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Strong' <Strong> contains <Table> @@ -8524,10 +8524,10 @@ - + <Strong> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Strong' <Strong> contains <TR> @@ -8536,10 +8536,10 @@ - + <Strong> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Strong' <Strong> contains <TH> @@ -8548,10 +8548,10 @@ - + <Strong> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Strong' <Strong> contains <TD> @@ -8560,10 +8560,10 @@ - + <Strong> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Strong' <Strong> contains <THead> @@ -8572,10 +8572,10 @@ - + <Strong> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Strong' <Strong> contains <TBody> @@ -8584,10 +8584,10 @@ - + <Strong> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Strong' <Strong> contains <TFoot> @@ -8596,10 +8596,10 @@ - + <Strong> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Strong' <Strong> contains <Caption> @@ -8608,10 +8608,10 @@ - + <Span> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Span' <Span> contains <Document> @@ -8620,10 +8620,10 @@ - + <Span> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Span' <Span> contains <DocumentFragment> @@ -8632,10 +8632,10 @@ - + <Span> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Span' <Span> contains <Part> @@ -8644,10 +8644,10 @@ - + <Span> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Span' <Span> contains <Art> @@ -8656,10 +8656,10 @@ - + <Span> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Span' <Span> contains <Div> @@ -8668,10 +8668,10 @@ - + <Span> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Span' <Span> contains <Sect> @@ -8680,10 +8680,10 @@ - + <Span> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Span' <Span> contains <TOC> @@ -8692,10 +8692,10 @@ - + <Span> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Span' <Span> contains <TOCI> @@ -8704,10 +8704,10 @@ - + <Span> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Span' <Span> contains <Aside> @@ -8716,10 +8716,10 @@ - + <Span> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Span' <Span> contains <BlockQuote> @@ -8728,10 +8728,10 @@ - + <Span> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Span' <Span> contains <P> @@ -8740,10 +8740,10 @@ - + <Span> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Span' <Span> contains <Hn> @@ -8752,10 +8752,10 @@ - + <Span> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Span' <Span> contains <H> @@ -8764,10 +8764,10 @@ - + <Span> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Span' <Span> contains <Title> @@ -8776,10 +8776,10 @@ - + <Span> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Span' <Span> contains <RB> @@ -8788,10 +8788,10 @@ - + <Span> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Span' <Span> contains <RT> @@ -8800,10 +8800,10 @@ - + <Span> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Span' <Span> contains <RP> @@ -8812,10 +8812,10 @@ - + <Span> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Span' <Span> contains <WT> @@ -8824,10 +8824,10 @@ - + <Span> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Span' <Span> contains <WP> @@ -8836,10 +8836,10 @@ - + <Span> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Span' <Span> contains <Index> @@ -8848,10 +8848,10 @@ - + <Span> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Span' <Span> contains <L> @@ -8860,10 +8860,10 @@ - + <Span> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Span' <Span> contains <LI> @@ -8872,10 +8872,10 @@ - + <Span> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Span' <Span> contains <LBody> @@ -8884,10 +8884,10 @@ - + <Span> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Span' <Span> contains <Table> @@ -8896,10 +8896,10 @@ - + <Span> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Span' <Span> contains <TR> @@ -8908,10 +8908,10 @@ - + <Span> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Span' <Span> contains <TH> @@ -8920,10 +8920,10 @@ - + <Span> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Span' <Span> contains <TD> @@ -8932,10 +8932,10 @@ - + <Span> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Span' <Span> contains <THead> @@ -8944,10 +8944,10 @@ - + <Span> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Span' <Span> contains <TBody> @@ -8956,10 +8956,10 @@ - + <Span> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Span' <Span> contains <TFoot> @@ -8968,10 +8968,10 @@ - + <Span> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Span' <Span> contains <Caption> @@ -8980,10 +8980,10 @@ - + <Quote> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Quote' <Quote> contains <Document> @@ -8992,10 +8992,10 @@ - + <Quote> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Quote' <Quote> contains <DocumentFragment> @@ -9004,10 +9004,10 @@ - + <Quote> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Quote' <Quote> contains <Part> @@ -9016,10 +9016,10 @@ - + <Quote> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Quote' <Quote> contains <Art> @@ -9028,10 +9028,10 @@ - + <Quote> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Quote' <Quote> contains <Div> @@ -9040,10 +9040,10 @@ - + <Quote> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Quote' <Quote> contains <Sect> @@ -9052,10 +9052,10 @@ - + <Quote> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Quote' <Quote> contains <TOC> @@ -9064,10 +9064,10 @@ - + <Quote> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Quote' <Quote> contains <TOCI> @@ -9076,10 +9076,10 @@ - + <Quote> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Quote' <Quote> contains <Aside> @@ -9088,10 +9088,10 @@ - + <Quote> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Quote' <Quote> contains <BlockQuote> @@ -9100,10 +9100,10 @@ - + <Quote> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Quote' <Quote> contains <P> @@ -9112,10 +9112,10 @@ - + <Quote> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Quote' <Quote> contains <Hn> @@ -9124,10 +9124,10 @@ - + <Quote> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Quote' <Quote> contains <H> @@ -9136,10 +9136,10 @@ - + <Quote> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Quote' <Quote> contains <Title> @@ -9148,10 +9148,10 @@ - + <Quote> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Quote' <Quote> contains <RB> @@ -9160,10 +9160,10 @@ - + <Quote> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Quote' <Quote> contains <RT> @@ -9172,10 +9172,10 @@ - + <Quote> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Quote' <Quote> contains <RP> @@ -9184,10 +9184,10 @@ - + <Quote> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Quote' <Quote> contains <WT> @@ -9196,10 +9196,10 @@ - + <Quote> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Quote' <Quote> contains <WP> @@ -9208,10 +9208,10 @@ - + <Quote> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Quote' <Quote> contains <Index> @@ -9220,10 +9220,10 @@ - + <Quote> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Quote' <Quote> contains <L> @@ -9232,10 +9232,10 @@ - + <Quote> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Quote' <Quote> contains <LI> @@ -9244,10 +9244,10 @@ - + <Quote> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Quote' <Quote> contains <LBody> @@ -9256,10 +9256,10 @@ - + <Quote> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Quote' <Quote> contains <Table> @@ -9268,10 +9268,10 @@ - + <Quote> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Quote' <Quote> contains <TR> @@ -9280,10 +9280,10 @@ - + <Quote> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Quote' <Quote> contains <TH> @@ -9292,10 +9292,10 @@ - + <Quote> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Quote' <Quote> contains <TD> @@ -9304,10 +9304,10 @@ - + <Quote> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Quote' <Quote> contains <THead> @@ -9316,10 +9316,10 @@ - + <Quote> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Quote' <Quote> contains <TBody> @@ -9328,10 +9328,10 @@ - + <Quote> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Quote' <Quote> contains <TFoot> @@ -9340,10 +9340,10 @@ - + <Quote> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Quote' <Quote> contains <Caption> @@ -9352,10 +9352,10 @@ - + <Link> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Link' <Link> contains <Document> @@ -9364,10 +9364,10 @@ - + <Link> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Link' <Link> contains <TOC> @@ -9376,10 +9376,10 @@ - + <Link> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Link' <Link> contains <TOCI> @@ -9391,7 +9391,7 @@ <Link> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Link' <Link> contains <Link> @@ -9400,10 +9400,10 @@ - + <Link> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Link' <Link> contains <RB> @@ -9412,10 +9412,10 @@ - + <Link> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Link' <Link> contains <RT> @@ -9424,10 +9424,10 @@ - + <Link> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Link' <Link> contains <RP> @@ -9436,10 +9436,10 @@ - + <Link> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Link' <Link> contains <WT> @@ -9448,10 +9448,10 @@ - + <Link> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Link' <Link> contains <WP> @@ -9460,10 +9460,10 @@ - + <Link> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Link' <Link> contains <Index> @@ -9472,10 +9472,10 @@ - + <Link> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Link' <Link> contains <LI> @@ -9484,10 +9484,10 @@ - + <Link> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Link' <Link> contains <LBody> @@ -9496,10 +9496,10 @@ - + <Link> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Link' <Link> contains <TR> @@ -9508,10 +9508,10 @@ - + <Link> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Link' <Link> contains <TH> @@ -9520,10 +9520,10 @@ - + <Link> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Link' <Link> contains <TD> @@ -9532,10 +9532,10 @@ - + <Link> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Link' <Link> contains <THead> @@ -9544,10 +9544,10 @@ - + <Link> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Link' <Link> contains <TBody> @@ -9556,10 +9556,10 @@ - + <Link> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Link' <Link> contains <TFoot> @@ -9568,10 +9568,10 @@ - + <Reference> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Reference' <Reference> contains <Document> @@ -9580,10 +9580,10 @@ - + <Reference> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Reference' <Reference> contains <DocumentFragment> @@ -9592,10 +9592,10 @@ - + <Reference> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Reference' <Reference> contains <Part> @@ -9604,10 +9604,10 @@ - + <Reference> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Reference' <Reference> contains <Art> @@ -9616,10 +9616,10 @@ - + <Reference> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Reference' <Reference> contains <Div> @@ -9628,10 +9628,10 @@ - + <Reference> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Reference' <Reference> contains <Sect> @@ -9640,10 +9640,10 @@ - + <Reference> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Reference' <Reference> contains <TOC> @@ -9652,10 +9652,10 @@ - + <Reference> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Reference' <Reference> contains <TOCI> @@ -9664,10 +9664,10 @@ - + <Reference> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Reference' <Reference> contains <Aside> @@ -9676,10 +9676,10 @@ - + <Reference> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Reference' <Reference> contains <BlockQuote> @@ -9688,10 +9688,10 @@ - + <Reference> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Reference' <Reference> contains <P> @@ -9700,10 +9700,10 @@ - + <Reference> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Reference' <Reference> contains <Code> @@ -9712,10 +9712,10 @@ - + <Reference> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Reference' <Reference> contains <Hn> @@ -9724,10 +9724,10 @@ - + <Reference> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Reference' <Reference> contains <H> @@ -9736,10 +9736,10 @@ - + <Reference> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Reference' <Reference> contains <Title> @@ -9748,10 +9748,10 @@ - + <Reference> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Reference' <Reference> contains <Sub> @@ -9760,10 +9760,10 @@ - + <Reference> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Reference' <Reference> contains <Quote> @@ -9775,7 +9775,7 @@ <Reference> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Reference' <Reference> contains <Reference> @@ -9784,10 +9784,10 @@ - + <Reference> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Reference' <Reference> contains <Form> @@ -9796,10 +9796,10 @@ - + <Reference> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Reference' <Reference> contains <Ruby> @@ -9808,10 +9808,10 @@ - + <Reference> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Reference' <Reference> contains <RB> @@ -9820,10 +9820,10 @@ - + <Reference> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Reference' <Reference> contains <RT> @@ -9832,10 +9832,10 @@ - + <Reference> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Reference' <Reference> contains <RP> @@ -9844,10 +9844,10 @@ - + <Reference> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Reference' <Reference> contains <Warichu> @@ -9856,10 +9856,10 @@ - + <Reference> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Reference' <Reference> contains <WT> @@ -9868,10 +9868,10 @@ - + <Reference> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Reference' <Reference> contains <WP> @@ -9880,10 +9880,10 @@ - + <Reference> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Reference' <Reference> contains <Index> @@ -9892,10 +9892,10 @@ - + <Reference> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Reference' <Reference> contains <L> @@ -9904,10 +9904,10 @@ - + <Reference> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Reference' <Reference> contains <LI> @@ -9916,10 +9916,10 @@ - + <Reference> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Reference' <Reference> contains <LBody> @@ -9928,10 +9928,10 @@ - + <Reference> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Reference' <Reference> contains <Table> @@ -9940,10 +9940,10 @@ - + <Reference> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Reference' <Reference> contains <TR> @@ -9952,10 +9952,10 @@ - + <Reference> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Reference' <Reference> contains <TH> @@ -9964,10 +9964,10 @@ - + <Reference> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Reference' <Reference> contains <TD> @@ -9976,10 +9976,10 @@ - + <Reference> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Reference' <Reference> contains <THead> @@ -9988,10 +9988,10 @@ - + <Reference> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Reference' <Reference> contains <TBody> @@ -10000,10 +10000,10 @@ - + <Reference> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Reference' <Reference> contains <TFoot> @@ -10012,10 +10012,10 @@ - + <Reference> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Reference' <Reference> contains <Caption> @@ -10024,10 +10024,10 @@ - + <Reference> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'Reference' <Reference> contains <Formula> @@ -10036,10 +10036,10 @@ - + <Annot> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Annot' <Annot> contains <Document> @@ -10048,10 +10048,10 @@ - + <Annot> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Annot' <Annot> contains <TOC> @@ -10060,10 +10060,10 @@ - + <Annot> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Annot' <Annot> contains <TOCI> @@ -10072,10 +10072,10 @@ - + <Annot> shall not contain <Private> - kidsStandardTypes.split('&').filter(elem => elem == 'Private').length == 0 + parentStandardType != 'Annot' <Annot> contains <Private> @@ -10084,10 +10084,10 @@ - + <Annot> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Annot' <Annot> contains <RB> @@ -10096,10 +10096,10 @@ - + <Annot> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Annot' <Annot> contains <RT> @@ -10108,10 +10108,10 @@ - + <Annot> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Annot' <Annot> contains <RP> @@ -10120,10 +10120,10 @@ - + <Annot> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Annot' <Annot> contains <WT> @@ -10132,10 +10132,10 @@ - + <Annot> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Annot' <Annot> contains <WP> @@ -10144,10 +10144,10 @@ - + <Annot> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Annot' <Annot> contains <Index> @@ -10156,10 +10156,10 @@ - + <Annot> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Annot' <Annot> contains <LI> @@ -10168,10 +10168,10 @@ - + <Annot> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Annot' <Annot> contains <LBody> @@ -10180,10 +10180,10 @@ - + <Annot> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Annot' <Annot> contains <TR> @@ -10192,10 +10192,10 @@ - + <Annot> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Annot' <Annot> contains <TH> @@ -10204,10 +10204,10 @@ - + <Annot> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Annot' <Annot> contains <TD> @@ -10216,10 +10216,10 @@ - + <Annot> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Annot' <Annot> contains <THead> @@ -10228,10 +10228,10 @@ - + <Annot> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Annot' <Annot> contains <TBody> @@ -10240,10 +10240,10 @@ - + <Annot> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Annot' <Annot> contains <TFoot> @@ -10252,10 +10252,10 @@ - + <Form> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Form' <Form> contains <Document> @@ -10264,10 +10264,10 @@ - + <Form> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Form' <Form> contains <DocumentFragment> @@ -10276,10 +10276,10 @@ - + <Form> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Form' <Form> contains <Art> @@ -10288,10 +10288,10 @@ - + <Form> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Form' <Form> contains <Sect> @@ -10300,10 +10300,10 @@ - + <Form> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Form' <Form> contains <TOC> @@ -10312,10 +10312,10 @@ - + <Form> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Form' <Form> contains <TOCI> @@ -10324,10 +10324,10 @@ - + <Form> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Form' <Form> contains <Aside> @@ -10336,10 +10336,10 @@ - + <Form> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Form' <Form> contains <BlockQuote> @@ -10348,10 +10348,10 @@ - + <Form> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Form' <Form> contains <P> @@ -10360,10 +10360,10 @@ - + <Form> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Form' <Form> contains <Hn> @@ -10372,10 +10372,10 @@ - + <Form> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Form' <Form> contains <H> @@ -10384,10 +10384,10 @@ - + <Form> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Form' <Form> contains <Title> @@ -10396,10 +10396,10 @@ - + <Form> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Form' <Form> contains <Sub> @@ -10408,10 +10408,10 @@ - + <Form> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Form' <Form> contains <Em> @@ -10420,10 +10420,10 @@ - + <Form> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Form' <Form> contains <Strong> @@ -10432,10 +10432,10 @@ - + <Form> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Form' <Form> contains <Span> @@ -10444,10 +10444,10 @@ - + <Form> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Form' <Form> contains <Quote> @@ -10456,10 +10456,10 @@ - + <Form> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Form' <Form> contains <Link> @@ -10468,10 +10468,10 @@ - + <Form> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'Form' <Form> contains <Annot> @@ -10483,7 +10483,7 @@ <Form> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Form' <Form> contains <Form> @@ -10492,10 +10492,10 @@ - + <Form> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Form' <Form> contains <Ruby> @@ -10504,10 +10504,10 @@ - + <Form> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Form' <Form> contains <RB> @@ -10516,10 +10516,10 @@ - + <Form> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Form' <Form> contains <RT> @@ -10528,10 +10528,10 @@ - + <Form> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Form' <Form> contains <RP> @@ -10540,10 +10540,10 @@ - + <Form> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Form' <Form> contains <Warichu> @@ -10552,10 +10552,10 @@ - + <Form> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Form' <Form> contains <WT> @@ -10564,10 +10564,10 @@ - + <Form> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Form' <Form> contains <WP> @@ -10576,10 +10576,10 @@ - + <Form> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Form' <Form> contains <Index> @@ -10588,10 +10588,10 @@ - + <Form> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Form' <Form> contains <LI> @@ -10600,10 +10600,10 @@ - + <Form> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Form' <Form> contains <LBody> @@ -10612,10 +10612,10 @@ - + <Form> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Form' <Form> contains <TR> @@ -10624,10 +10624,10 @@ - + <Form> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Form' <Form> contains <TH> @@ -10636,10 +10636,10 @@ - + <Form> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Form' <Form> contains <TD> @@ -10648,10 +10648,10 @@ - + <Form> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Form' <Form> contains <THead> @@ -10660,10 +10660,10 @@ - + <Form> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Form' <Form> contains <TBody> @@ -10672,10 +10672,10 @@ - + <Form> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Form' <Form> contains <TFoot> @@ -10696,10 +10696,10 @@ - + <Ruby> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Document> @@ -10708,10 +10708,10 @@ - + <Ruby> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <DocumentFragment> @@ -10720,10 +10720,10 @@ - + <Ruby> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Part> @@ -10732,10 +10732,10 @@ - + <Ruby> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Art> @@ -10744,10 +10744,10 @@ - + <Ruby> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Div> @@ -10756,10 +10756,10 @@ - + <Ruby> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Sect> @@ -10768,10 +10768,10 @@ - + <Ruby> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TOC> @@ -10780,10 +10780,10 @@ - + <Ruby> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TOCI> @@ -10792,10 +10792,10 @@ - + <Ruby> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Aside> @@ -10804,10 +10804,10 @@ - + <Ruby> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <BlockQuote> @@ -10816,10 +10816,10 @@ - + <Ruby> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <P> @@ -10828,10 +10828,10 @@ - + <Ruby> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Note> @@ -10840,10 +10840,10 @@ - + <Ruby> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Code> @@ -10852,10 +10852,10 @@ - + <Ruby> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Hn> @@ -10864,10 +10864,10 @@ - + <Ruby> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <H> @@ -10876,10 +10876,10 @@ - + <Ruby> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Title> @@ -10888,10 +10888,10 @@ - + <Ruby> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Sub> @@ -10900,10 +10900,10 @@ - + <Ruby> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Lbl> @@ -10912,10 +10912,10 @@ - + <Ruby> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Em> @@ -10924,10 +10924,10 @@ - + <Ruby> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Strong> @@ -10936,10 +10936,10 @@ - + <Ruby> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Span> @@ -10948,10 +10948,10 @@ - + <Ruby> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Quote> @@ -10960,10 +10960,10 @@ - + <Ruby> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Link> @@ -10972,10 +10972,10 @@ - + <Ruby> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Reference> @@ -10984,10 +10984,10 @@ - + <Ruby> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Annot> @@ -10996,10 +10996,10 @@ - + <Ruby> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Form> @@ -11011,7 +11011,7 @@ <Ruby> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Ruby> @@ -11020,10 +11020,10 @@ - + <Ruby> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Warichu> @@ -11032,10 +11032,10 @@ - + <Ruby> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <WT> @@ -11044,10 +11044,10 @@ - + <Ruby> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <WP> @@ -11056,10 +11056,10 @@ - + <Ruby> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <FENote> @@ -11068,10 +11068,10 @@ - + <Ruby> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Index> @@ -11080,10 +11080,10 @@ - + <Ruby> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <L> @@ -11092,10 +11092,10 @@ - + <Ruby> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <LI> @@ -11104,10 +11104,10 @@ - + <Ruby> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <LBody> @@ -11116,10 +11116,10 @@ - + <Ruby> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <BibEntry> @@ -11128,10 +11128,10 @@ - + <Ruby> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Table> @@ -11140,10 +11140,10 @@ - + <Ruby> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TR> @@ -11152,10 +11152,10 @@ - + <Ruby> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TH> @@ -11164,10 +11164,10 @@ - + <Ruby> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TD> @@ -11176,10 +11176,10 @@ - + <Ruby> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <THead> @@ -11188,10 +11188,10 @@ - + <Ruby> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TBody> @@ -11200,10 +11200,10 @@ - + <Ruby> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <TFoot> @@ -11212,10 +11212,10 @@ - + <Ruby> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Caption> @@ -11224,10 +11224,10 @@ - + <Ruby> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Figure> @@ -11236,10 +11236,10 @@ - + <Ruby> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Formula> @@ -11248,10 +11248,10 @@ - + <Ruby> shall not contain <Artifact> - kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + parentStandardType != 'Ruby' <Ruby> contains <Artifact> @@ -11260,10 +11260,10 @@ - + <RB> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'RB' <RB> contains <Document> @@ -11272,10 +11272,10 @@ - + <RB> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'RB' <RB> contains <DocumentFragment> @@ -11284,10 +11284,10 @@ - + <RB> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'RB' <RB> contains <Part> @@ -11296,10 +11296,10 @@ - + <RB> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'RB' <RB> contains <Art> @@ -11308,10 +11308,10 @@ - + <RB> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'RB' <RB> contains <Div> @@ -11320,10 +11320,10 @@ - + <RB> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'RB' <RB> contains <Sect> @@ -11332,10 +11332,10 @@ - + <RB> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'RB' <RB> contains <TOC> @@ -11344,10 +11344,10 @@ - + <RB> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'RB' <RB> contains <TOCI> @@ -11356,10 +11356,10 @@ - + <RB> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'RB' <RB> contains <Aside> @@ -11368,10 +11368,10 @@ - + <RB> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'RB' <RB> contains <BlockQuote> @@ -11380,10 +11380,10 @@ - + <RB> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'RB' <RB> contains <P> @@ -11392,10 +11392,10 @@ - + <RB> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'RB' <RB> contains <Note> @@ -11404,10 +11404,10 @@ - + <RB> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'RB' <RB> contains <Code> @@ -11416,10 +11416,10 @@ - + <RB> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'RB' <RB> contains <Hn> @@ -11428,10 +11428,10 @@ - + <RB> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'RB' <RB> contains <H> @@ -11440,10 +11440,10 @@ - + <RB> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'RB' <RB> contains <Title> @@ -11452,10 +11452,10 @@ - + <RB> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'RB' <RB> contains <Lbl> @@ -11464,10 +11464,10 @@ - + <RB> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'RB' <RB> contains <Ruby> @@ -11479,7 +11479,7 @@ <RB> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'RB' <RB> contains <RB> @@ -11488,10 +11488,10 @@ - + <RB> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'RB' <RB> contains <RT> @@ -11500,10 +11500,10 @@ - + <RB> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'RB' <RB> contains <RP> @@ -11512,10 +11512,10 @@ - + <RB> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'RB' <RB> contains <Warichu> @@ -11524,10 +11524,10 @@ - + <RB> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'RB' <RB> contains <WT> @@ -11536,10 +11536,10 @@ - + <RB> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'RB' <RB> contains <WP> @@ -11548,10 +11548,10 @@ - + <RB> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'RB' <RB> contains <FENote> @@ -11560,10 +11560,10 @@ - + <RB> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'RB' <RB> contains <Index> @@ -11572,10 +11572,10 @@ - + <RB> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'RB' <RB> contains <L> @@ -11584,10 +11584,10 @@ - + <RB> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'RB' <RB> contains <LI> @@ -11596,10 +11596,10 @@ - + <RB> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'RB' <RB> contains <LBody> @@ -11608,10 +11608,10 @@ - + <RB> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'RB' <RB> contains <BibEntry> @@ -11620,10 +11620,10 @@ - + <RB> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'RB' <RB> contains <Table> @@ -11632,10 +11632,10 @@ - + <RB> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'RB' <RB> contains <TR> @@ -11644,10 +11644,10 @@ - + <RB> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'RB' <RB> contains <TH> @@ -11656,10 +11656,10 @@ - + <RB> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'RB' <RB> contains <TD> @@ -11668,10 +11668,10 @@ - + <RB> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'RB' <RB> contains <THead> @@ -11680,10 +11680,10 @@ - + <RB> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'RB' <RB> contains <TBody> @@ -11692,10 +11692,10 @@ - + <RB> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'RB' <RB> contains <TFoot> @@ -11704,10 +11704,10 @@ - + <RB> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'RB' <RB> contains <Caption> @@ -11716,10 +11716,10 @@ - + <RB> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'RB' <RB> contains <Figure> @@ -11728,10 +11728,10 @@ - + <RB> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'RB' <RB> contains <Formula> @@ -11740,10 +11740,10 @@ - + <RT> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'RT' <RT> contains <Document> @@ -11752,10 +11752,10 @@ - + <RT> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'RT' <RT> contains <DocumentFragment> @@ -11764,10 +11764,10 @@ - + <RT> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'RT' <RT> contains <Part> @@ -11776,10 +11776,10 @@ - + <RT> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'RT' <RT> contains <Art> @@ -11788,10 +11788,10 @@ - + <RT> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'RT' <RT> contains <Div> @@ -11800,10 +11800,10 @@ - + <RT> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'RT' <RT> contains <Sect> @@ -11812,10 +11812,10 @@ - + <RT> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'RT' <RT> contains <TOC> @@ -11824,10 +11824,10 @@ - + <RT> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'RT' <RT> contains <TOCI> @@ -11836,10 +11836,10 @@ - + <RT> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'RT' <RT> contains <Aside> @@ -11848,10 +11848,10 @@ - + <RT> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'RT' <RT> contains <BlockQuote> @@ -11860,10 +11860,10 @@ - + <RT> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'RT' <RT> contains <P> @@ -11872,10 +11872,10 @@ - + <RT> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'RT' <RT> contains <Note> @@ -11884,10 +11884,10 @@ - + <RT> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'RT' <RT> contains <Code> @@ -11896,10 +11896,10 @@ - + <RT> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'RT' <RT> contains <Hn> @@ -11908,10 +11908,10 @@ - + <RT> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'RT' <RT> contains <H> @@ -11920,10 +11920,10 @@ - + <RT> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'RT' <RT> contains <Title> @@ -11932,10 +11932,10 @@ - + <RT> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'RT' <RT> contains <Lbl> @@ -11944,10 +11944,10 @@ - + <RT> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'RT' <RT> contains <Ruby> @@ -11956,10 +11956,10 @@ - + <RT> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'RT' <RT> contains <RB> @@ -11971,7 +11971,7 @@ <RT> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'RT' <RT> contains <RT> @@ -11980,10 +11980,10 @@ - + <RT> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'RT' <RT> contains <RP> @@ -11992,10 +11992,10 @@ - + <RT> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'RT' <RT> contains <Warichu> @@ -12004,10 +12004,10 @@ - + <RT> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'RT' <RT> contains <WT> @@ -12016,10 +12016,10 @@ - + <RT> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'RT' <RT> contains <WP> @@ -12028,10 +12028,10 @@ - + <RT> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'RT' <RT> contains <FENote> @@ -12040,10 +12040,10 @@ - + <RT> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'RT' <RT> contains <Index> @@ -12052,10 +12052,10 @@ - + <RT> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'RT' <RT> contains <L> @@ -12064,10 +12064,10 @@ - + <RT> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'RT' <RT> contains <LI> @@ -12076,10 +12076,10 @@ - + <RT> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'RT' <RT> contains <LBody> @@ -12088,10 +12088,10 @@ - + <RT> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'RT' <RT> contains <BibEntry> @@ -12100,10 +12100,10 @@ - + <RT> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'RT' <RT> contains <Table> @@ -12112,10 +12112,10 @@ - + <RT> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'RT' <RT> contains <TR> @@ -12124,10 +12124,10 @@ - + <RT> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'RT' <RT> contains <TH> @@ -12136,10 +12136,10 @@ - + <RT> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'RT' <RT> contains <TD> @@ -12148,10 +12148,10 @@ - + <RT> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'RT' <RT> contains <THead> @@ -12160,10 +12160,10 @@ - + <RT> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'RT' <RT> contains <TBody> @@ -12172,10 +12172,10 @@ - + <RT> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'RT' <RT> contains <TFoot> @@ -12184,10 +12184,10 @@ - + <RT> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'RT' <RT> contains <Caption> @@ -12196,10 +12196,10 @@ - + <RT> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'RT' <RT> contains <Figure> @@ -12208,10 +12208,10 @@ - + <RT> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'RT' <RT> contains <Formula> @@ -12220,10 +12220,10 @@ - + <RP> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'RP' <RP> contains <Document> @@ -12232,10 +12232,10 @@ - + <RP> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'RP' <RP> contains <DocumentFragment> @@ -12244,10 +12244,10 @@ - + <RP> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'RP' <RP> contains <Part> @@ -12256,10 +12256,10 @@ - + <RP> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'RP' <RP> contains <Art> @@ -12268,10 +12268,10 @@ - + <RP> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'RP' <RP> contains <Div> @@ -12280,10 +12280,10 @@ - + <RP> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'RP' <RP> contains <Sect> @@ -12292,10 +12292,10 @@ - + <RP> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'RP' <RP> contains <TOC> @@ -12304,10 +12304,10 @@ - + <RP> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'RP' <RP> contains <TOCI> @@ -12316,10 +12316,10 @@ - + <RP> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'RP' <RP> contains <Aside> @@ -12328,10 +12328,10 @@ - + <RP> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'RP' <RP> contains <BlockQuote> @@ -12340,10 +12340,10 @@ - + <RP> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'RP' <RP> contains <P> @@ -12352,10 +12352,10 @@ - + <RP> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'RP' <RP> contains <Note> @@ -12364,10 +12364,10 @@ - + <RP> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'RP' <RP> contains <Code> @@ -12376,10 +12376,10 @@ - + <RP> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'RP' <RP> contains <Hn> @@ -12388,10 +12388,10 @@ - + <RP> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'RP' <RP> contains <H> @@ -12400,10 +12400,10 @@ - + <RP> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'RP' <RP> contains <Title> @@ -12412,10 +12412,10 @@ - + <RP> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'RP' <RP> contains <Lbl> @@ -12424,10 +12424,10 @@ - + <RP> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'RP' <RP> contains <Ruby> @@ -12436,10 +12436,10 @@ - + <RP> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'RP' <RP> contains <RB> @@ -12448,10 +12448,10 @@ - + <RP> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'RP' <RP> contains <RT> @@ -12463,7 +12463,7 @@ <RP> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'RP' <RP> contains <RP> @@ -12472,10 +12472,10 @@ - + <RP> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'RP' <RP> contains <Warichu> @@ -12484,10 +12484,10 @@ - + <RP> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'RP' <RP> contains <WT> @@ -12496,10 +12496,10 @@ - + <RP> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'RP' <RP> contains <WP> @@ -12508,10 +12508,10 @@ - + <RP> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'RP' <RP> contains <FENote> @@ -12520,10 +12520,10 @@ - + <RP> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'RP' <RP> contains <Index> @@ -12532,10 +12532,10 @@ - + <RP> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'RP' <RP> contains <L> @@ -12544,10 +12544,10 @@ - + <RP> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'RP' <RP> contains <LI> @@ -12556,10 +12556,10 @@ - + <RP> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'RP' <RP> contains <LBody> @@ -12568,10 +12568,10 @@ - + <RP> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'RP' <RP> contains <BibEntry> @@ -12580,10 +12580,10 @@ - + <RP> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'RP' <RP> contains <Table> @@ -12592,10 +12592,10 @@ - + <RP> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'RP' <RP> contains <TR> @@ -12604,10 +12604,10 @@ - + <RP> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'RP' <RP> contains <TH> @@ -12616,10 +12616,10 @@ - + <RP> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'RP' <RP> contains <TD> @@ -12628,10 +12628,10 @@ - + <RP> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'RP' <RP> contains <THead> @@ -12640,10 +12640,10 @@ - + <RP> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'RP' <RP> contains <TBody> @@ -12652,10 +12652,10 @@ - + <RP> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'RP' <RP> contains <TFoot> @@ -12664,10 +12664,10 @@ - + <RP> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'RP' <RP> contains <Caption> @@ -12676,10 +12676,10 @@ - + <RP> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'RP' <RP> contains <Figure> @@ -12688,10 +12688,10 @@ - + <RP> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'RP' <RP> contains <Formula> @@ -12700,10 +12700,10 @@ - + <Warichu> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Document> @@ -12712,10 +12712,10 @@ - + <Warichu> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <DocumentFragment> @@ -12724,10 +12724,10 @@ - + <Warichu> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Part> @@ -12736,10 +12736,10 @@ - + <Warichu> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Art> @@ -12748,10 +12748,10 @@ - + <Warichu> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Div> @@ -12760,10 +12760,10 @@ - + <Warichu> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Sect> @@ -12772,10 +12772,10 @@ - + <Warichu> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TOC> @@ -12784,10 +12784,10 @@ - + <Warichu> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TOCI> @@ -12796,10 +12796,10 @@ - + <Warichu> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Aside> @@ -12808,10 +12808,10 @@ - + <Warichu> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <BlockQuote> @@ -12820,10 +12820,10 @@ - + <Warichu> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <P> @@ -12832,10 +12832,10 @@ - + <Warichu> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Note> @@ -12844,10 +12844,10 @@ - + <Warichu> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Code> @@ -12856,10 +12856,10 @@ - + <Warichu> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Hn> @@ -12868,10 +12868,10 @@ - + <Warichu> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <H> @@ -12880,10 +12880,10 @@ - + <Warichu> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Title> @@ -12892,10 +12892,10 @@ - + <Warichu> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Sub> @@ -12904,10 +12904,10 @@ - + <Warichu> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Lbl> @@ -12916,10 +12916,10 @@ - + <Warichu> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Em> @@ -12928,10 +12928,10 @@ - + <Warichu> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Strong> @@ -12940,10 +12940,10 @@ - + <Warichu> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Span> @@ -12952,10 +12952,10 @@ - + <Warichu> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Quote> @@ -12964,10 +12964,10 @@ - + <Warichu> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Link> @@ -12976,10 +12976,10 @@ - + <Warichu> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Reference> @@ -12988,10 +12988,10 @@ - + <Warichu> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Annot> @@ -13000,10 +13000,10 @@ - + <Warichu> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Form> @@ -13012,10 +13012,10 @@ - + <Warichu> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Ruby> @@ -13024,10 +13024,10 @@ - + <Warichu> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <RB> @@ -13036,10 +13036,10 @@ - + <Warichu> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <RT> @@ -13048,10 +13048,10 @@ - + <Warichu> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <RP> @@ -13063,7 +13063,7 @@ <Warichu> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Warichu> @@ -13072,10 +13072,10 @@ - + <Warichu> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <FENote> @@ -13084,10 +13084,10 @@ - + <Warichu> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Index> @@ -13096,10 +13096,10 @@ - + <Warichu> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <L> @@ -13108,10 +13108,10 @@ - + <Warichu> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <LI> @@ -13120,10 +13120,10 @@ - + <Warichu> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <LBody> @@ -13132,10 +13132,10 @@ - + <Warichu> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <BibEntry> @@ -13144,10 +13144,10 @@ - + <Warichu> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Table> @@ -13156,10 +13156,10 @@ - + <Warichu> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TR> @@ -13168,10 +13168,10 @@ - + <Warichu> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TH> @@ -13180,10 +13180,10 @@ - + <Warichu> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TD> @@ -13192,10 +13192,10 @@ - + <Warichu> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <THead> @@ -13204,10 +13204,10 @@ - + <Warichu> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TBody> @@ -13216,10 +13216,10 @@ - + <Warichu> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <TFoot> @@ -13228,10 +13228,10 @@ - + <Warichu> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Caption> @@ -13240,10 +13240,10 @@ - + <Warichu> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Figure> @@ -13252,10 +13252,10 @@ - + <Warichu> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Formula> @@ -13264,10 +13264,10 @@ - + <Warichu> shall not contain <Artifact> - kidsStandardTypes.split('&').filter(elem => elem == 'Artifact').length == 0 + parentStandardType != 'Warichu' <Warichu> contains <Artifact> @@ -13276,10 +13276,10 @@ - + <WT> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'WT' <WT> contains <Document> @@ -13288,10 +13288,10 @@ - + <WT> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'WT' <WT> contains <DocumentFragment> @@ -13300,10 +13300,10 @@ - + <WT> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'WT' <WT> contains <Part> @@ -13312,10 +13312,10 @@ - + <WT> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'WT' <WT> contains <Art> @@ -13324,10 +13324,10 @@ - + <WT> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'WT' <WT> contains <Div> @@ -13336,10 +13336,10 @@ - + <WT> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'WT' <WT> contains <Sect> @@ -13348,10 +13348,10 @@ - + <WT> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'WT' <WT> contains <TOC> @@ -13360,10 +13360,10 @@ - + <WT> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'WT' <WT> contains <TOCI> @@ -13372,10 +13372,10 @@ - + <WT> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'WT' <WT> contains <Aside> @@ -13384,10 +13384,10 @@ - + <WT> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'WT' <WT> contains <BlockQuote> @@ -13396,10 +13396,10 @@ - + <WT> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'WT' <WT> contains <P> @@ -13408,10 +13408,10 @@ - + <WT> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'WT' <WT> contains <Note> @@ -13420,10 +13420,10 @@ - + <WT> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'WT' <WT> contains <Code> @@ -13432,10 +13432,10 @@ - + <WT> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'WT' <WT> contains <Hn> @@ -13444,10 +13444,10 @@ - + <WT> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'WT' <WT> contains <H> @@ -13456,10 +13456,10 @@ - + <WT> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'WT' <WT> contains <Title> @@ -13468,10 +13468,10 @@ - + <WT> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'WT' <WT> contains <Lbl> @@ -13480,10 +13480,10 @@ - + <WT> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'WT' <WT> contains <Ruby> @@ -13492,10 +13492,10 @@ - + <WT> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'WT' <WT> contains <RB> @@ -13504,10 +13504,10 @@ - + <WT> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'WT' <WT> contains <RT> @@ -13516,10 +13516,10 @@ - + <WT> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'WT' <WT> contains <RP> @@ -13528,10 +13528,10 @@ - + <WT> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'WT' <WT> contains <Warichu> @@ -13543,7 +13543,7 @@ <WT> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'WT' <WT> contains <WT> @@ -13552,10 +13552,10 @@ - + <WT> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'WT' <WT> contains <WP> @@ -13564,10 +13564,10 @@ - + <WT> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'WT' <WT> contains <FENote> @@ -13576,10 +13576,10 @@ - + <WT> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'WT' <WT> contains <Index> @@ -13588,10 +13588,10 @@ - + <WT> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'WT' <WT> contains <L> @@ -13600,10 +13600,10 @@ - + <WT> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'WT' <WT> contains <LI> @@ -13612,10 +13612,10 @@ - + <WT> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'WT' <WT> contains <LBody> @@ -13624,10 +13624,10 @@ - + <WT> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'WT' <WT> contains <BibEntry> @@ -13636,10 +13636,10 @@ - + <WT> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'WT' <WT> contains <Table> @@ -13648,10 +13648,10 @@ - + <WT> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'WT' <WT> contains <TR> @@ -13660,10 +13660,10 @@ - + <WT> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'WT' <WT> contains <TH> @@ -13672,10 +13672,10 @@ - + <WT> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'WT' <WT> contains <TD> @@ -13684,10 +13684,10 @@ - + <WT> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'WT' <WT> contains <THead> @@ -13696,10 +13696,10 @@ - + <WT> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'WT' <WT> contains <TBody> @@ -13708,10 +13708,10 @@ - + <WT> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'WT' <WT> contains <TFoot> @@ -13720,10 +13720,10 @@ - + <WT> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'WT' <WT> contains <Caption> @@ -13732,10 +13732,10 @@ - + <WT> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'WT' <WT> contains <Figure> @@ -13744,10 +13744,10 @@ - + <WT> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'WT' <WT> contains <Formula> @@ -13756,10 +13756,10 @@ - + <WP> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'WP' <WP> contains <Document> @@ -13768,10 +13768,10 @@ - + <WP> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'WP' <WP> contains <DocumentFragment> @@ -13780,10 +13780,10 @@ - + <WP> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'WP' <WP> contains <Part> @@ -13792,10 +13792,10 @@ - + <WP> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'WP' <WP> contains <Art> @@ -13804,10 +13804,10 @@ - + <WP> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'WP' <WP> contains <Div> @@ -13816,10 +13816,10 @@ - + <WP> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'WP' <WP> contains <Sect> @@ -13828,10 +13828,10 @@ - + <WP> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'WP' <WP> contains <TOC> @@ -13840,10 +13840,10 @@ - + <WP> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'WP' <WP> contains <TOCI> @@ -13852,10 +13852,10 @@ - + <WP> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'WP' <WP> contains <Aside> @@ -13864,10 +13864,10 @@ - + <WP> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'WP' <WP> contains <BlockQuote> @@ -13876,10 +13876,10 @@ - + <WP> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'WP' <WP> contains <P> @@ -13888,10 +13888,10 @@ - + <WP> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'WP' <WP> contains <Note> @@ -13900,10 +13900,10 @@ - + <WP> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'WP' <WP> contains <Code> @@ -13912,10 +13912,10 @@ - + <WP> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'WP' <WP> contains <Hn> @@ -13924,10 +13924,10 @@ - + <WP> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'WP' <WP> contains <H> @@ -13936,10 +13936,10 @@ - + <WP> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'WP' <WP> contains <Title> @@ -13948,10 +13948,10 @@ - + <WP> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'WP' <WP> contains <Lbl> @@ -13960,10 +13960,10 @@ - + <WP> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'WP' <WP> contains <Ruby> @@ -13972,10 +13972,10 @@ - + <WP> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'WP' <WP> contains <RB> @@ -13984,10 +13984,10 @@ - + <WP> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'WP' <WP> contains <RT> @@ -13996,10 +13996,10 @@ - + <WP> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'WP' <WP> contains <RP> @@ -14008,10 +14008,10 @@ - + <WP> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'WP' <WP> contains <Warichu> @@ -14020,10 +14020,10 @@ - + <WP> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'WP' <WP> contains <WT> @@ -14035,7 +14035,7 @@ <WP> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'WP' <WP> contains <WP> @@ -14044,10 +14044,10 @@ - + <WP> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'WP' <WP> contains <FENote> @@ -14056,10 +14056,10 @@ - + <WP> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'WP' <WP> contains <Index> @@ -14068,10 +14068,10 @@ - + <WP> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'WP' <WP> contains <L> @@ -14080,10 +14080,10 @@ - + <WP> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'WP' <WP> contains <LI> @@ -14092,10 +14092,10 @@ - + <WP> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'WP' <WP> contains <LBody> @@ -14104,10 +14104,10 @@ - + <WP> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'WP' <WP> contains <BibEntry> @@ -14116,10 +14116,10 @@ - + <WP> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'WP' <WP> contains <Table> @@ -14128,10 +14128,10 @@ - + <WP> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'WP' <WP> contains <TR> @@ -14140,10 +14140,10 @@ - + <WP> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'WP' <WP> contains <TH> @@ -14152,10 +14152,10 @@ - + <WP> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'WP' <WP> contains <TD> @@ -14164,10 +14164,10 @@ - + <WP> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'WP' <WP> contains <THead> @@ -14176,10 +14176,10 @@ - + <WP> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'WP' <WP> contains <TBody> @@ -14188,10 +14188,10 @@ - + <WP> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'WP' <WP> contains <TFoot> @@ -14200,10 +14200,10 @@ - + <WP> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'WP' <WP> contains <Caption> @@ -14212,10 +14212,10 @@ - + <WP> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'WP' <WP> contains <Figure> @@ -14224,10 +14224,10 @@ - + <WP> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'WP' <WP> contains <Formula> @@ -14236,10 +14236,10 @@ - + <FENote> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'FENote' <FENote> contains <Document> @@ -14248,10 +14248,10 @@ - + <FENote> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'FENote' <FENote> contains <TOC> @@ -14260,10 +14260,10 @@ - + <FENote> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'FENote' <FENote> contains <TOCI> @@ -14272,10 +14272,10 @@ - + <FENote> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'FENote' <FENote> contains <Hn> @@ -14284,10 +14284,10 @@ - + <FENote> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'FENote' <FENote> contains <H> @@ -14296,10 +14296,10 @@ - + <FENote> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'FENote' <FENote> contains <Title> @@ -14308,10 +14308,10 @@ - + <FENote> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'FENote' <FENote> contains <RB> @@ -14320,10 +14320,10 @@ - + <FENote> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'FENote' <FENote> contains <RT> @@ -14332,10 +14332,10 @@ - + <FENote> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'FENote' <FENote> contains <RP> @@ -14344,10 +14344,10 @@ - + <FENote> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'FENote' <FENote> contains <WT> @@ -14356,10 +14356,10 @@ - + <FENote> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'FENote' <FENote> contains <WP> @@ -14368,10 +14368,10 @@ - + <FENote> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'FENote' <FENote> contains <Index> @@ -14380,10 +14380,10 @@ - + <FENote> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'FENote' <FENote> contains <LI> @@ -14392,10 +14392,10 @@ - + <FENote> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'FENote' <FENote> contains <LBody> @@ -14404,10 +14404,10 @@ - + <FENote> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'FENote' <FENote> contains <BibEntry> @@ -14416,10 +14416,10 @@ - + <FENote> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'FENote' <FENote> contains <TR> @@ -14428,10 +14428,10 @@ - + <FENote> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'FENote' <FENote> contains <TH> @@ -14440,10 +14440,10 @@ - + <FENote> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'FENote' <FENote> contains <TD> @@ -14452,10 +14452,10 @@ - + <FENote> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'FENote' <FENote> contains <THead> @@ -14464,10 +14464,10 @@ - + <FENote> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'FENote' <FENote> contains <TBody> @@ -14476,10 +14476,10 @@ - + <FENote> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'FENote' <FENote> contains <TFoot> @@ -14488,10 +14488,10 @@ - + <Index> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Index' <Index> contains <Document> @@ -14500,10 +14500,10 @@ - + <Index> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Index' <Index> contains <DocumentFragment> @@ -14512,10 +14512,10 @@ - + <Index> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Index' <Index> contains <Art> @@ -14524,10 +14524,10 @@ - + <Index> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Index' <Index> contains <TOC> @@ -14536,10 +14536,10 @@ - + <Index> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Index' <Index> contains <TOCI> @@ -14548,10 +14548,10 @@ - + <Index> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Index' <Index> contains <Aside> @@ -14560,10 +14560,10 @@ - + <Index> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Index' <Index> contains <BlockQuote> @@ -14572,10 +14572,10 @@ - + <Index> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Index' <Index> contains <Code> @@ -14584,10 +14584,10 @@ - + <Index> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Index' <Index> contains <Title> @@ -14596,10 +14596,10 @@ - + <Index> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Index' <Index> contains <Sub> @@ -14608,10 +14608,10 @@ - + <Index> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Index' <Index> contains <Lbl> @@ -14620,10 +14620,10 @@ - + <Index> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Index' <Index> contains <Em> @@ -14632,10 +14632,10 @@ - + <Index> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Index' <Index> contains <Strong> @@ -14644,10 +14644,10 @@ - + <Index> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Index' <Index> contains <Span> @@ -14656,10 +14656,10 @@ - + <Index> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Index' <Index> contains <Quote> @@ -14668,10 +14668,10 @@ - + <Index> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Index' <Index> contains <Link> @@ -14680,10 +14680,10 @@ - + <Index> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Index' <Index> contains <Form> @@ -14692,10 +14692,10 @@ - + <Index> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Index' <Index> contains <Ruby> @@ -14704,10 +14704,10 @@ - + <Index> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Index' <Index> contains <RB> @@ -14716,10 +14716,10 @@ - + <Index> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Index' <Index> contains <RT> @@ -14728,10 +14728,10 @@ - + <Index> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Index' <Index> contains <RP> @@ -14740,10 +14740,10 @@ - + <Index> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Index' <Index> contains <Warichu> @@ -14752,10 +14752,10 @@ - + <Index> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Index' <Index> contains <WT> @@ -14764,10 +14764,10 @@ - + <Index> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Index' <Index> contains <WP> @@ -14779,7 +14779,7 @@ <Index> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Index' <Index> contains <Index> @@ -14788,10 +14788,10 @@ - + <Index> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Index' <Index> contains <LI> @@ -14800,10 +14800,10 @@ - + <Index> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Index' <Index> contains <LBody> @@ -14812,10 +14812,10 @@ - + <Index> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Index' <Index> contains <BibEntry> @@ -14824,10 +14824,10 @@ - + <Index> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Index' <Index> contains <TR> @@ -14836,10 +14836,10 @@ - + <Index> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Index' <Index> contains <TH> @@ -14848,10 +14848,10 @@ - + <Index> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Index' <Index> contains <TD> @@ -14860,10 +14860,10 @@ - + <Index> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Index' <Index> contains <THead> @@ -14872,10 +14872,10 @@ - + <Index> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Index' <Index> contains <TBody> @@ -14884,10 +14884,10 @@ - + <Index> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Index' <Index> contains <TFoot> @@ -14898,7 +14898,7 @@ - <Index> shall not contain content item + <Index> shall not contain content items hasContentItems == false <Index> contains content item(s) @@ -14908,10 +14908,10 @@ - + <L> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'L' <L> contains <Document> @@ -14920,10 +14920,10 @@ - + <L> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'L' <L> contains <DocumentFragment> @@ -14932,10 +14932,10 @@ - + <L> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'L' <L> contains <Part> @@ -14944,10 +14944,10 @@ - + <L> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'L' <L> contains <Art> @@ -14956,10 +14956,10 @@ - + <L> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'L' <L> contains <Div> @@ -14968,10 +14968,10 @@ - + <L> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'L' <L> contains <Sect> @@ -14980,10 +14980,10 @@ - + <L> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'L' <L> contains <TOC> @@ -14992,10 +14992,10 @@ - + <L> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'L' <L> contains <TOCI> @@ -15004,10 +15004,10 @@ - + <L> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'L' <L> contains <Aside> @@ -15016,10 +15016,10 @@ - + <L> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'L' <L> contains <BlockQuote> @@ -15028,10 +15028,10 @@ - + <L> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'L' <L> contains <P> @@ -15040,10 +15040,10 @@ - + <L> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'L' <L> contains <Note> @@ -15052,10 +15052,10 @@ - + <L> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'L' <L> contains <Code> @@ -15064,10 +15064,10 @@ - + <L> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'L' <L> contains <Hn> @@ -15076,10 +15076,10 @@ - + <L> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'L' <L> contains <H> @@ -15088,10 +15088,10 @@ - + <L> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'L' <L> contains <Title> @@ -15100,10 +15100,10 @@ - + <L> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'L' <L> contains <Sub> @@ -15112,10 +15112,10 @@ - + <L> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'L' <L> contains <Lbl> @@ -15124,10 +15124,10 @@ - + <L> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'L' <L> contains <Em> @@ -15136,10 +15136,10 @@ - + <L> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'L' <L> contains <Strong> @@ -15148,10 +15148,10 @@ - + <L> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'L' <L> contains <Span> @@ -15160,10 +15160,10 @@ - + <L> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'L' <L> contains <Quote> @@ -15172,10 +15172,10 @@ - + <L> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'L' <L> contains <Link> @@ -15184,10 +15184,10 @@ - + <L> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'L' <L> contains <Reference> @@ -15196,10 +15196,10 @@ - + <L> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'L' <L> contains <Annot> @@ -15208,10 +15208,10 @@ - + <L> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'L' <L> contains <Form> @@ -15220,10 +15220,10 @@ - + <L> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'L' <L> contains <Ruby> @@ -15232,10 +15232,10 @@ - + <L> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'L' <L> contains <RB> @@ -15244,10 +15244,10 @@ - + <L> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'L' <L> contains <RT> @@ -15256,10 +15256,10 @@ - + <L> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'L' <L> contains <RP> @@ -15268,10 +15268,10 @@ - + <L> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'L' <L> contains <Warichu> @@ -15280,10 +15280,10 @@ - + <L> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'L' <L> contains <WT> @@ -15292,10 +15292,10 @@ - + <L> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'L' <L> contains <WP> @@ -15304,10 +15304,10 @@ - + <L> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'L' <L> contains <FENote> @@ -15316,10 +15316,10 @@ - + <L> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'L' <L> contains <Index> @@ -15328,10 +15328,10 @@ - + <L> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'L' <L> contains <LBody> @@ -15340,10 +15340,10 @@ - + <L> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'L' <L> contains <BibEntry> @@ -15352,10 +15352,10 @@ - + <L> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'L' <L> contains <Table> @@ -15364,10 +15364,10 @@ - + <L> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'L' <L> contains <TR> @@ -15376,10 +15376,10 @@ - + <L> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'L' <L> contains <TH> @@ -15388,10 +15388,10 @@ - + <L> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'L' <L> contains <TD> @@ -15400,10 +15400,10 @@ - + <L> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'L' <L> contains <THead> @@ -15412,10 +15412,10 @@ - + <L> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'L' <L> contains <TBody> @@ -15424,10 +15424,10 @@ - + <L> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'L' <L> contains <TFoot> @@ -15448,10 +15448,10 @@ - + <L> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'L' <L> contains <Figure> @@ -15460,10 +15460,10 @@ - + <L> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'L' <L> contains <Formula> @@ -15474,7 +15474,7 @@ - <L> shall not contain content item + <L> shall not contain content items hasContentItems == false <L> contains content item(s) @@ -15484,10 +15484,10 @@ - + <LI> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'LI' <LI> contains <Document> @@ -15496,10 +15496,10 @@ - + <LI> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'LI' <LI> contains <DocumentFragment> @@ -15508,10 +15508,10 @@ - + <LI> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'LI' <LI> contains <Part> @@ -15520,10 +15520,10 @@ - + <LI> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'LI' <LI> contains <Art> @@ -15532,10 +15532,10 @@ - + <LI> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'LI' <LI> contains <Sect> @@ -15544,10 +15544,10 @@ - + <LI> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'LI' <LI> contains <TOC> @@ -15556,10 +15556,10 @@ - + <LI> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'LI' <LI> contains <TOCI> @@ -15568,10 +15568,10 @@ - + <LI> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'LI' <LI> contains <Aside> @@ -15580,10 +15580,10 @@ - + <LI> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'LI' <LI> contains <BlockQuote> @@ -15592,10 +15592,10 @@ - + <LI> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'LI' <LI> contains <P> @@ -15604,10 +15604,10 @@ - + <LI> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'LI' <LI> contains <Note> @@ -15616,10 +15616,10 @@ - + <LI> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'LI' <LI> contains <Code> @@ -15628,10 +15628,10 @@ - + <LI> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'LI' <LI> contains <Hn> @@ -15640,10 +15640,10 @@ - + <LI> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'LI' <LI> contains <H> @@ -15652,10 +15652,10 @@ - + <LI> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'LI' <LI> contains <Title> @@ -15664,10 +15664,10 @@ - + <LI> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'LI' <LI> contains <Sub> @@ -15676,10 +15676,10 @@ - + <LI> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'LI' <LI> contains <Em> @@ -15688,10 +15688,10 @@ - + <LI> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'LI' <LI> contains <Strong> @@ -15700,10 +15700,10 @@ - + <LI> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'LI' <LI> contains <Span> @@ -15712,10 +15712,10 @@ - + <LI> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'LI' <LI> contains <Quote> @@ -15724,10 +15724,10 @@ - + <LI> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'LI' <LI> contains <Link> @@ -15736,10 +15736,10 @@ - + <LI> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'LI' <LI> contains <Reference> @@ -15748,10 +15748,10 @@ - + <LI> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'LI' <LI> contains <Annot> @@ -15760,10 +15760,10 @@ - + <LI> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'LI' <LI> contains <Form> @@ -15772,10 +15772,10 @@ - + <LI> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'LI' <LI> contains <Ruby> @@ -15784,10 +15784,10 @@ - + <LI> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'LI' <LI> contains <RB> @@ -15796,10 +15796,10 @@ - + <LI> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'LI' <LI> contains <RT> @@ -15808,10 +15808,10 @@ - + <LI> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'LI' <LI> contains <RP> @@ -15820,10 +15820,10 @@ - + <LI> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'LI' <LI> contains <Warichu> @@ -15832,10 +15832,10 @@ - + <LI> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'LI' <LI> contains <WT> @@ -15844,10 +15844,10 @@ - + <LI> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'LI' <LI> contains <WP> @@ -15856,10 +15856,10 @@ - + <LI> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'LI' <LI> contains <FENote> @@ -15868,10 +15868,10 @@ - + <LI> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'LI' <LI> contains <Index> @@ -15880,10 +15880,10 @@ - + <LI> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'LI' <LI> contains <L> @@ -15895,7 +15895,7 @@ <LI> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'LI' <LI> contains <LI> @@ -15904,10 +15904,10 @@ - + <LI> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'LI' <LI> contains <BibEntry> @@ -15916,10 +15916,10 @@ - + <LI> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'LI' <LI> contains <Table> @@ -15928,10 +15928,10 @@ - + <LI> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'LI' <LI> contains <TR> @@ -15940,10 +15940,10 @@ - + <LI> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'LI' <LI> contains <TH> @@ -15952,10 +15952,10 @@ - + <LI> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'LI' <LI> contains <TD> @@ -15964,10 +15964,10 @@ - + <LI> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'LI' <LI> contains <THead> @@ -15976,10 +15976,10 @@ - + <LI> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'LI' <LI> contains <TBody> @@ -15988,10 +15988,10 @@ - + <LI> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'LI' <LI> contains <TFoot> @@ -16000,10 +16000,10 @@ - + <LI> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'LI' <LI> contains <Caption> @@ -16012,10 +16012,10 @@ - + <LI> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'LI' <LI> contains <Figure> @@ -16024,10 +16024,10 @@ - + <LI> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'LI' <LI> contains <Formula> @@ -16036,10 +16036,10 @@ - + <LBody> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'LBody' <LBody> contains <Document> @@ -16048,10 +16048,10 @@ - + <LBody> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'LBody' <LBody> contains <DocumentFragment> @@ -16060,10 +16060,10 @@ - + <LBody> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'LBody' <LBody> contains <TOC> @@ -16072,10 +16072,10 @@ - + <LBody> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'LBody' <LBody> contains <TOCI> @@ -16096,10 +16096,10 @@ - + <LBody> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'LBody' <LBody> contains <Title> @@ -16108,10 +16108,10 @@ - + <LBody> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'LBody' <LBody> contains <Lbl> @@ -16120,10 +16120,10 @@ - + <LBody> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'LBody' <LBody> contains <RB> @@ -16132,10 +16132,10 @@ - + <LBody> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'LBody' <LBody> contains <RT> @@ -16144,10 +16144,10 @@ - + <LBody> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'LBody' <LBody> contains <RP> @@ -16156,10 +16156,10 @@ - + <LBody> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'LBody' <LBody> contains <WT> @@ -16168,10 +16168,10 @@ - + <LBody> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'LBody' <LBody> contains <WP> @@ -16180,10 +16180,10 @@ - + <LBody> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'LBody' <LBody> contains <LI> @@ -16195,7 +16195,7 @@ <LBody> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'LBody' <LBody> contains <LBody> @@ -16204,10 +16204,10 @@ - + <LBody> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'LBody' <LBody> contains <TR> @@ -16216,10 +16216,10 @@ - + <LBody> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'LBody' <LBody> contains <TH> @@ -16228,10 +16228,10 @@ - + <LBody> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'LBody' <LBody> contains <TD> @@ -16240,10 +16240,10 @@ - + <LBody> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'LBody' <LBody> contains <THead> @@ -16252,10 +16252,10 @@ - + <LBody> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'LBody' <LBody> contains <TBody> @@ -16264,10 +16264,10 @@ - + <LBody> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'LBody' <LBody> contains <TFoot> @@ -16288,10 +16288,10 @@ - + <BibEntry> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Document> @@ -16300,10 +16300,10 @@ - + <BibEntry> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <DocumentFragment> @@ -16312,10 +16312,10 @@ - + <BibEntry> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Art> @@ -16324,10 +16324,10 @@ - + <BibEntry> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Sect> @@ -16336,10 +16336,10 @@ - + <BibEntry> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TOC> @@ -16348,10 +16348,10 @@ - + <BibEntry> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TOCI> @@ -16360,10 +16360,10 @@ - + <BibEntry> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Aside> @@ -16372,10 +16372,10 @@ - + <BibEntry> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <BlockQuote> @@ -16384,10 +16384,10 @@ - + <BibEntry> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Code> @@ -16396,10 +16396,10 @@ - + <BibEntry> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Hn> @@ -16408,10 +16408,10 @@ - + <BibEntry> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <H> @@ -16420,10 +16420,10 @@ - + <BibEntry> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Title> @@ -16432,10 +16432,10 @@ - + <BibEntry> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Sub> @@ -16444,10 +16444,10 @@ - + <BibEntry> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Quote> @@ -16456,10 +16456,10 @@ - + <BibEntry> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Form> @@ -16468,10 +16468,10 @@ - + <BibEntry> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Ruby> @@ -16480,10 +16480,10 @@ - + <BibEntry> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <RB> @@ -16492,10 +16492,10 @@ - + <BibEntry> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <RT> @@ -16504,10 +16504,10 @@ - + <BibEntry> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <RP> @@ -16516,10 +16516,10 @@ - + <BibEntry> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Warichu> @@ -16528,10 +16528,10 @@ - + <BibEntry> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <WT> @@ -16540,10 +16540,10 @@ - + <BibEntry> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <WP> @@ -16552,10 +16552,10 @@ - + <BibEntry> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Index> @@ -16564,10 +16564,10 @@ - + <BibEntry> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <L> @@ -16576,10 +16576,10 @@ - + <BibEntry> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <LI> @@ -16588,10 +16588,10 @@ - + <BibEntry> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <LBody> @@ -16603,7 +16603,7 @@ <BibEntry> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <BibEntry> @@ -16612,10 +16612,10 @@ - + <BibEntry> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Table> @@ -16624,10 +16624,10 @@ - + <BibEntry> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TR> @@ -16636,10 +16636,10 @@ - + <BibEntry> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TH> @@ -16648,10 +16648,10 @@ - + <BibEntry> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TD> @@ -16660,10 +16660,10 @@ - + <BibEntry> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <THead> @@ -16672,10 +16672,10 @@ - + <BibEntry> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TBody> @@ -16684,10 +16684,10 @@ - + <BibEntry> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <TFoot> @@ -16696,10 +16696,10 @@ - + <BibEntry> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Caption> @@ -16708,10 +16708,10 @@ - + <BibEntry> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'BibEntry' <BibEntry> contains <Formula> @@ -16720,10 +16720,10 @@ - + <Table> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Table' <Table> contains <Document> @@ -16732,10 +16732,10 @@ - + <Table> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Table' <Table> contains <DocumentFragment> @@ -16744,10 +16744,10 @@ - + <Table> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'Table' <Table> contains <Part> @@ -16756,10 +16756,10 @@ - + <Table> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Table' <Table> contains <Art> @@ -16768,10 +16768,10 @@ - + <Table> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'Table' <Table> contains <Div> @@ -16780,10 +16780,10 @@ - + <Table> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Table' <Table> contains <Sect> @@ -16792,10 +16792,10 @@ - + <Table> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Table' <Table> contains <TOC> @@ -16804,10 +16804,10 @@ - + <Table> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Table' <Table> contains <TOCI> @@ -16816,10 +16816,10 @@ - + <Table> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'Table' <Table> contains <Aside> @@ -16828,10 +16828,10 @@ - + <Table> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'Table' <Table> contains <BlockQuote> @@ -16840,10 +16840,10 @@ - + <Table> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'Table' <Table> contains <P> @@ -16852,10 +16852,10 @@ - + <Table> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'Table' <Table> contains <Note> @@ -16864,10 +16864,10 @@ - + <Table> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'Table' <Table> contains <Code> @@ -16876,10 +16876,10 @@ - + <Table> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'Table' <Table> contains <Hn> @@ -16888,10 +16888,10 @@ - + <Table> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'Table' <Table> contains <H> @@ -16900,10 +16900,10 @@ - + <Table> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Table' <Table> contains <Title> @@ -16912,10 +16912,10 @@ - + <Table> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'Table' <Table> contains <Sub> @@ -16924,10 +16924,10 @@ - + <Table> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'Table' <Table> contains <Lbl> @@ -16936,10 +16936,10 @@ - + <Table> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'Table' <Table> contains <Em> @@ -16948,10 +16948,10 @@ - + <Table> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'Table' <Table> contains <Strong> @@ -16960,10 +16960,10 @@ - + <Table> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'Table' <Table> contains <Span> @@ -16972,10 +16972,10 @@ - + <Table> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'Table' <Table> contains <Quote> @@ -16984,10 +16984,10 @@ - + <Table> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'Table' <Table> contains <Link> @@ -16996,10 +16996,10 @@ - + <Table> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'Table' <Table> contains <Reference> @@ -17008,10 +17008,10 @@ - + <Table> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'Table' <Table> contains <Annot> @@ -17020,10 +17020,10 @@ - + <Table> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'Table' <Table> contains <Form> @@ -17032,10 +17032,10 @@ - + <Table> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'Table' <Table> contains <Ruby> @@ -17044,10 +17044,10 @@ - + <Table> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Table' <Table> contains <RB> @@ -17056,10 +17056,10 @@ - + <Table> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Table' <Table> contains <RT> @@ -17068,10 +17068,10 @@ - + <Table> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Table' <Table> contains <RP> @@ -17080,10 +17080,10 @@ - + <Table> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'Table' <Table> contains <Warichu> @@ -17092,10 +17092,10 @@ - + <Table> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Table' <Table> contains <WT> @@ -17104,10 +17104,10 @@ - + <Table> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Table' <Table> contains <WP> @@ -17116,10 +17116,10 @@ - + <Table> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'Table' <Table> contains <FENote> @@ -17128,10 +17128,10 @@ - + <Table> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'Table' <Table> contains <Index> @@ -17140,10 +17140,10 @@ - + <Table> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'Table' <Table> contains <L> @@ -17152,10 +17152,10 @@ - + <Table> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Table' <Table> contains <LI> @@ -17164,10 +17164,10 @@ - + <Table> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Table' <Table> contains <LBody> @@ -17176,10 +17176,10 @@ - + <Table> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'Table' <Table> contains <BibEntry> @@ -17191,7 +17191,7 @@ <Table> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'Table' <Table> contains <Table> @@ -17200,10 +17200,10 @@ - + <Table> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Table' <Table> contains <TH> @@ -17212,10 +17212,10 @@ - + <Table> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Table' <Table> contains <TD> @@ -17260,10 +17260,10 @@ - + <Table> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'Table' <Table> contains <Figure> @@ -17272,10 +17272,10 @@ - + <Table> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'Table' <Table> contains <Formula> @@ -17286,7 +17286,7 @@ - <Table> shall not contain content item + <Table> shall not contain content items hasContentItems == false <Table> contains content item(s) @@ -17296,10 +17296,10 @@ - + <TR> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TR' <TR> contains <Document> @@ -17308,10 +17308,10 @@ - + <TR> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TR' <TR> contains <DocumentFragment> @@ -17320,10 +17320,10 @@ - + <TR> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TR' <TR> contains <Part> @@ -17332,10 +17332,10 @@ - + <TR> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'TR' <TR> contains <Art> @@ -17344,10 +17344,10 @@ - + <TR> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'TR' <TR> contains <Div> @@ -17356,10 +17356,10 @@ - + <TR> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'TR' <TR> contains <Sect> @@ -17368,10 +17368,10 @@ - + <TR> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'TR' <TR> contains <TOC> @@ -17380,10 +17380,10 @@ - + <TR> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TR' <TR> contains <TOCI> @@ -17392,10 +17392,10 @@ - + <TR> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TR' <TR> contains <Aside> @@ -17404,10 +17404,10 @@ - + <TR> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TR' <TR> contains <BlockQuote> @@ -17416,10 +17416,10 @@ - + <TR> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'TR' <TR> contains <P> @@ -17428,10 +17428,10 @@ - + <TR> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'TR' <TR> contains <Note> @@ -17440,10 +17440,10 @@ - + <TR> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'TR' <TR> contains <Code> @@ -17452,10 +17452,10 @@ - + <TR> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'TR' <TR> contains <Hn> @@ -17464,10 +17464,10 @@ - + <TR> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'TR' <TR> contains <H> @@ -17476,10 +17476,10 @@ - + <TR> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TR' <TR> contains <Title> @@ -17488,10 +17488,10 @@ - + <TR> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TR' <TR> contains <Sub> @@ -17500,10 +17500,10 @@ - + <TR> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'TR' <TR> contains <Lbl> @@ -17512,10 +17512,10 @@ - + <TR> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'TR' <TR> contains <Em> @@ -17524,10 +17524,10 @@ - + <TR> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'TR' <TR> contains <Strong> @@ -17536,10 +17536,10 @@ - + <TR> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'TR' <TR> contains <Span> @@ -17548,10 +17548,10 @@ - + <TR> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'TR' <TR> contains <Quote> @@ -17560,10 +17560,10 @@ - + <TR> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'TR' <TR> contains <Link> @@ -17572,10 +17572,10 @@ - + <TR> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'TR' <TR> contains <Reference> @@ -17584,10 +17584,10 @@ - + <TR> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'TR' <TR> contains <Annot> @@ -17596,10 +17596,10 @@ - + <TR> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'TR' <TR> contains <Form> @@ -17608,10 +17608,10 @@ - + <TR> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'TR' <TR> contains <Ruby> @@ -17620,10 +17620,10 @@ - + <TR> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TR' <TR> contains <RB> @@ -17632,10 +17632,10 @@ - + <TR> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TR' <TR> contains <RT> @@ -17644,10 +17644,10 @@ - + <TR> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TR' <TR> contains <RP> @@ -17656,10 +17656,10 @@ - + <TR> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'TR' <TR> contains <Warichu> @@ -17668,10 +17668,10 @@ - + <TR> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TR' <TR> contains <WT> @@ -17680,10 +17680,10 @@ - + <TR> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TR' <TR> contains <WP> @@ -17692,10 +17692,10 @@ - + <TR> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'TR' <TR> contains <FENote> @@ -17704,10 +17704,10 @@ - + <TR> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'TR' <TR> contains <Index> @@ -17716,10 +17716,10 @@ - + <TR> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'TR' <TR> contains <L> @@ -17728,10 +17728,10 @@ - + <TR> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TR' <TR> contains <LI> @@ -17740,10 +17740,10 @@ - + <TR> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TR' <TR> contains <LBody> @@ -17752,10 +17752,10 @@ - + <TR> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'TR' <TR> contains <BibEntry> @@ -17764,10 +17764,10 @@ - + <TR> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'TR' <TR> contains <Table> @@ -17779,7 +17779,7 @@ <TR> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'TR' <TR> contains <TR> @@ -17788,10 +17788,10 @@ - + <TR> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TR' <TR> contains <THead> @@ -17800,10 +17800,10 @@ - + <TR> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TR' <TR> contains <TBody> @@ -17812,10 +17812,10 @@ - + <TR> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TR' <TR> contains <TFoot> @@ -17824,10 +17824,10 @@ - + <TR> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TR' <TR> contains <Caption> @@ -17836,10 +17836,10 @@ - + <TR> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'TR' <TR> contains <Figure> @@ -17848,10 +17848,10 @@ - + <TR> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'TR' <TR> contains <Formula> @@ -17862,7 +17862,7 @@ - <TR> shall not contain content item + <TR> shall not contain content items hasContentItems == false <TR> contains content item(s) @@ -17872,10 +17872,10 @@ - + <TH> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TH' <TH> contains <Document> @@ -17884,10 +17884,10 @@ - + <TH> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TH' <TH> contains <DocumentFragment> @@ -17896,10 +17896,10 @@ - + <TH> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TH' <TH> contains <Part> @@ -17908,10 +17908,10 @@ - + <TH> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'TH' <TH> contains <TOC> @@ -17920,10 +17920,10 @@ - + <TH> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TH' <TH> contains <TOCI> @@ -17932,10 +17932,10 @@ - + <TH> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TH' <TH> contains <Aside> @@ -17944,10 +17944,10 @@ - + <TH> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TH' <TH> contains <BlockQuote> @@ -17968,10 +17968,10 @@ - + <TH> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TH' <TH> contains <Title> @@ -17980,10 +17980,10 @@ - + <TH> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TH' <TH> contains <Sub> @@ -17992,10 +17992,10 @@ - + <TH> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TH' <TH> contains <RB> @@ -18004,10 +18004,10 @@ - + <TH> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TH' <TH> contains <RT> @@ -18016,10 +18016,10 @@ - + <TH> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TH' <TH> contains <RP> @@ -18028,10 +18028,10 @@ - + <TH> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TH' <TH> contains <WT> @@ -18040,10 +18040,10 @@ - + <TH> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TH' <TH> contains <WP> @@ -18052,10 +18052,10 @@ - + <TH> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TH' <TH> contains <LI> @@ -18064,10 +18064,10 @@ - + <TH> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TH' <TH> contains <LBody> @@ -18076,10 +18076,10 @@ - + <TH> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'TH' <TH> contains <TR> @@ -18091,7 +18091,7 @@ <TH> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TH' <TH> contains <TH> @@ -18100,10 +18100,10 @@ - + <TH> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TH' <TH> contains <TD> @@ -18112,10 +18112,10 @@ - + <TH> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TH' <TH> contains <THead> @@ -18124,10 +18124,10 @@ - + <TH> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TH' <TH> contains <TBody> @@ -18136,10 +18136,10 @@ - + <TH> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TH' <TH> contains <TFoot> @@ -18148,10 +18148,10 @@ - + <TH> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TH' <TH> contains <Caption> @@ -18160,10 +18160,10 @@ - + <TD> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TD' <TD> contains <Document> @@ -18172,10 +18172,10 @@ - + <TD> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TD' <TD> contains <DocumentFragment> @@ -18184,10 +18184,10 @@ - + <TD> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TD' <TD> contains <Part> @@ -18196,10 +18196,10 @@ - + <TD> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'TD' <TD> contains <TOC> @@ -18208,10 +18208,10 @@ - + <TD> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TD' <TD> contains <TOCI> @@ -18220,10 +18220,10 @@ - + <TD> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TD' <TD> contains <Aside> @@ -18232,10 +18232,10 @@ - + <TD> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TD' <TD> contains <BlockQuote> @@ -18256,10 +18256,10 @@ - + <TD> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TD' <TD> contains <Title> @@ -18268,10 +18268,10 @@ - + <TD> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TD' <TD> contains <Sub> @@ -18280,10 +18280,10 @@ - + <TD> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TD' <TD> contains <RB> @@ -18292,10 +18292,10 @@ - + <TD> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TD' <TD> contains <RT> @@ -18304,10 +18304,10 @@ - + <TD> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TD' <TD> contains <RP> @@ -18316,10 +18316,10 @@ - + <TD> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TD' <TD> contains <WT> @@ -18328,10 +18328,10 @@ - + <TD> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TD' <TD> contains <WP> @@ -18340,10 +18340,10 @@ - + <TD> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TD' <TD> contains <LI> @@ -18352,10 +18352,10 @@ - + <TD> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TD' <TD> contains <LBody> @@ -18364,10 +18364,10 @@ - + <TD> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'TD' <TD> contains <TR> @@ -18376,10 +18376,10 @@ - + <TD> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TD' <TD> contains <TH> @@ -18391,7 +18391,7 @@ <TD> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TD' <TD> contains <TD> @@ -18400,10 +18400,10 @@ - + <TD> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TD' <TD> contains <THead> @@ -18412,10 +18412,10 @@ - + <TD> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TD' <TD> contains <TBody> @@ -18424,10 +18424,10 @@ - + <TD> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TD' <TD> contains <TFoot> @@ -18436,10 +18436,10 @@ - + <TD> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TD' <TD> contains <Caption> @@ -18448,10 +18448,10 @@ - + <THead> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'THead' <THead> contains <Document> @@ -18460,10 +18460,10 @@ - + <THead> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'THead' <THead> contains <DocumentFragment> @@ -18472,10 +18472,10 @@ - + <THead> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'THead' <THead> contains <Part> @@ -18484,10 +18484,10 @@ - + <THead> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'THead' <THead> contains <Art> @@ -18496,10 +18496,10 @@ - + <THead> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'THead' <THead> contains <Div> @@ -18508,10 +18508,10 @@ - + <THead> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'THead' <THead> contains <Sect> @@ -18520,10 +18520,10 @@ - + <THead> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'THead' <THead> contains <TOC> @@ -18532,10 +18532,10 @@ - + <THead> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'THead' <THead> contains <TOCI> @@ -18544,10 +18544,10 @@ - + <THead> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'THead' <THead> contains <Aside> @@ -18556,10 +18556,10 @@ - + <THead> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'THead' <THead> contains <BlockQuote> @@ -18568,10 +18568,10 @@ - + <THead> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'THead' <THead> contains <P> @@ -18580,10 +18580,10 @@ - + <THead> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'THead' <THead> contains <Note> @@ -18592,10 +18592,10 @@ - + <THead> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'THead' <THead> contains <Code> @@ -18604,10 +18604,10 @@ - + <THead> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'THead' <THead> contains <Hn> @@ -18616,10 +18616,10 @@ - + <THead> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'THead' <THead> contains <H> @@ -18628,10 +18628,10 @@ - + <THead> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'THead' <THead> contains <Title> @@ -18640,10 +18640,10 @@ - + <THead> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'THead' <THead> contains <Sub> @@ -18652,10 +18652,10 @@ - + <THead> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'THead' <THead> contains <Lbl> @@ -18664,10 +18664,10 @@ - + <THead> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'THead' <THead> contains <Em> @@ -18676,10 +18676,10 @@ - + <THead> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'THead' <THead> contains <Strong> @@ -18688,10 +18688,10 @@ - + <THead> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'THead' <THead> contains <Span> @@ -18700,10 +18700,10 @@ - + <THead> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'THead' <THead> contains <Quote> @@ -18712,10 +18712,10 @@ - + <THead> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'THead' <THead> contains <Link> @@ -18724,10 +18724,10 @@ - + <THead> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'THead' <THead> contains <Reference> @@ -18736,10 +18736,10 @@ - + <THead> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'THead' <THead> contains <Annot> @@ -18748,10 +18748,10 @@ - + <THead> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'THead' <THead> contains <Form> @@ -18760,10 +18760,10 @@ - + <THead> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'THead' <THead> contains <Ruby> @@ -18772,10 +18772,10 @@ - + <THead> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'THead' <THead> contains <RB> @@ -18784,10 +18784,10 @@ - + <THead> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'THead' <THead> contains <RT> @@ -18796,10 +18796,10 @@ - + <THead> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'THead' <THead> contains <RP> @@ -18808,10 +18808,10 @@ - + <THead> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'THead' <THead> contains <Warichu> @@ -18820,10 +18820,10 @@ - + <THead> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'THead' <THead> contains <WT> @@ -18832,10 +18832,10 @@ - + <THead> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'THead' <THead> contains <WP> @@ -18844,10 +18844,10 @@ - + <THead> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'THead' <THead> contains <FENote> @@ -18856,10 +18856,10 @@ - + <THead> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'THead' <THead> contains <Index> @@ -18868,10 +18868,10 @@ - + <THead> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'THead' <THead> contains <L> @@ -18880,10 +18880,10 @@ - + <THead> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'THead' <THead> contains <LI> @@ -18892,10 +18892,10 @@ - + <THead> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'THead' <THead> contains <LBody> @@ -18904,10 +18904,10 @@ - + <THead> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'THead' <THead> contains <BibEntry> @@ -18916,10 +18916,10 @@ - + <THead> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'THead' <THead> contains <Table> @@ -18928,10 +18928,10 @@ - + <THead> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'THead' <THead> contains <TH> @@ -18940,10 +18940,10 @@ - + <THead> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'THead' <THead> contains <TD> @@ -18955,7 +18955,7 @@ <THead> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'THead' <THead> contains <THead> @@ -18964,10 +18964,10 @@ - + <THead> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'THead' <THead> contains <TBody> @@ -18976,10 +18976,10 @@ - + <THead> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'THead' <THead> contains <TFoot> @@ -18988,10 +18988,10 @@ - + <THead> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'THead' <THead> contains <Caption> @@ -19000,10 +19000,10 @@ - + <THead> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'THead' <THead> contains <Figure> @@ -19012,10 +19012,10 @@ - + <THead> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'THead' <THead> contains <Formula> @@ -19026,7 +19026,7 @@ - <THead> shall not contain content item + <THead> shall not contain content items hasContentItems == false <THead> contains content item(s) @@ -19036,10 +19036,10 @@ - + <TBody> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TBody' <TBody> contains <Document> @@ -19048,10 +19048,10 @@ - + <TBody> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TBody' <TBody> contains <DocumentFragment> @@ -19060,10 +19060,10 @@ - + <TBody> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TBody' <TBody> contains <Part> @@ -19072,10 +19072,10 @@ - + <TBody> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'TBody' <TBody> contains <Art> @@ -19084,10 +19084,10 @@ - + <TBody> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'TBody' <TBody> contains <Div> @@ -19096,10 +19096,10 @@ - + <TBody> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'TBody' <TBody> contains <Sect> @@ -19108,10 +19108,10 @@ - + <TBody> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'TBody' <TBody> contains <TOC> @@ -19120,10 +19120,10 @@ - + <TBody> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TBody' <TBody> contains <TOCI> @@ -19132,10 +19132,10 @@ - + <TBody> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TBody' <TBody> contains <Aside> @@ -19144,10 +19144,10 @@ - + <TBody> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TBody' <TBody> contains <BlockQuote> @@ -19156,10 +19156,10 @@ - + <TBody> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'TBody' <TBody> contains <P> @@ -19168,10 +19168,10 @@ - + <TBody> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'TBody' <TBody> contains <Note> @@ -19180,10 +19180,10 @@ - + <TBody> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'TBody' <TBody> contains <Code> @@ -19192,10 +19192,10 @@ - + <TBody> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'TBody' <TBody> contains <Hn> @@ -19204,10 +19204,10 @@ - + <TBody> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'TBody' <TBody> contains <H> @@ -19216,10 +19216,10 @@ - + <TBody> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TBody' <TBody> contains <Title> @@ -19228,10 +19228,10 @@ - + <TBody> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TBody' <TBody> contains <Sub> @@ -19240,10 +19240,10 @@ - + <TBody> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'TBody' <TBody> contains <Lbl> @@ -19252,10 +19252,10 @@ - + <TBody> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'TBody' <TBody> contains <Em> @@ -19264,10 +19264,10 @@ - + <TBody> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'TBody' <TBody> contains <Strong> @@ -19276,10 +19276,10 @@ - + <TBody> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'TBody' <TBody> contains <Span> @@ -19288,10 +19288,10 @@ - + <TBody> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'TBody' <TBody> contains <Quote> @@ -19300,10 +19300,10 @@ - + <TBody> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'TBody' <TBody> contains <Link> @@ -19312,10 +19312,10 @@ - + <TBody> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'TBody' <TBody> contains <Reference> @@ -19324,10 +19324,10 @@ - + <TBody> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'TBody' <TBody> contains <Annot> @@ -19336,10 +19336,10 @@ - + <TBody> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'TBody' <TBody> contains <Form> @@ -19348,10 +19348,10 @@ - + <TBody> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'TBody' <TBody> contains <Ruby> @@ -19360,10 +19360,10 @@ - + <TBody> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TBody' <TBody> contains <RB> @@ -19372,10 +19372,10 @@ - + <TBody> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TBody' <TBody> contains <RT> @@ -19384,10 +19384,10 @@ - + <TBody> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TBody' <TBody> contains <RP> @@ -19396,10 +19396,10 @@ - + <TBody> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'TBody' <TBody> contains <Warichu> @@ -19408,10 +19408,10 @@ - + <TBody> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TBody' <TBody> contains <WT> @@ -19420,10 +19420,10 @@ - + <TBody> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TBody' <TBody> contains <WP> @@ -19432,10 +19432,10 @@ - + <TBody> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'TBody' <TBody> contains <FENote> @@ -19444,10 +19444,10 @@ - + <TBody> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'TBody' <TBody> contains <Index> @@ -19456,10 +19456,10 @@ - + <TBody> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'TBody' <TBody> contains <L> @@ -19468,10 +19468,10 @@ - + <TBody> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TBody' <TBody> contains <LI> @@ -19480,10 +19480,10 @@ - + <TBody> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TBody' <TBody> contains <LBody> @@ -19492,10 +19492,10 @@ - + <TBody> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'TBody' <TBody> contains <BibEntry> @@ -19504,10 +19504,10 @@ - + <TBody> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'TBody' <TBody> contains <Table> @@ -19516,10 +19516,10 @@ - + <TBody> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TBody' <TBody> contains <TH> @@ -19528,10 +19528,10 @@ - + <TBody> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TBody' <TBody> contains <TD> @@ -19540,10 +19540,10 @@ - + <TBody> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TBody' <TBody> contains <THead> @@ -19555,7 +19555,7 @@ <TBody> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TBody' <TBody> contains <TBody> @@ -19564,10 +19564,10 @@ - + <TBody> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TBody' <TBody> contains <TFoot> @@ -19576,10 +19576,10 @@ - + <TBody> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TBody' <TBody> contains <Caption> @@ -19588,10 +19588,10 @@ - + <TBody> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'TBody' <TBody> contains <Figure> @@ -19600,10 +19600,10 @@ - + <TBody> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'TBody' <TBody> contains <Formula> @@ -19614,7 +19614,7 @@ - <TBody> shall not contain content item + <TBody> shall not contain content items hasContentItems == false <TBody> contains content item(s) @@ -19624,10 +19624,10 @@ - + <TFoot> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Document> @@ -19636,10 +19636,10 @@ - + <TFoot> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <DocumentFragment> @@ -19648,10 +19648,10 @@ - + <TFoot> shall not contain <Part> - kidsStandardTypes.split('&').filter(elem => elem == 'Part').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Part> @@ -19660,10 +19660,10 @@ - + <TFoot> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Art> @@ -19672,10 +19672,10 @@ - + <TFoot> shall not contain <Div> - kidsStandardTypes.split('&').filter(elem => elem == 'Div').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Div> @@ -19684,10 +19684,10 @@ - + <TFoot> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Sect> @@ -19696,10 +19696,10 @@ - + <TFoot> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TOC> @@ -19708,10 +19708,10 @@ - + <TFoot> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TOCI> @@ -19720,10 +19720,10 @@ - + <TFoot> shall not contain <Aside> - kidsStandardTypes.split('&').filter(elem => elem == 'Aside').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Aside> @@ -19732,10 +19732,10 @@ - + <TFoot> shall not contain <BlockQuote> - kidsStandardTypes.split('&').filter(elem => elem == 'BlockQuote').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <BlockQuote> @@ -19744,10 +19744,10 @@ - + <TFoot> shall not contain <P> - kidsStandardTypes.split('&').filter(elem => elem == 'P').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <P> @@ -19756,10 +19756,10 @@ - + <TFoot> shall not contain <Note> - kidsStandardTypes.split('&').filter(elem => elem == 'Note').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Note> @@ -19768,10 +19768,10 @@ - + <TFoot> shall not contain <Code> - kidsStandardTypes.split('&').filter(elem => elem == 'Code').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Code> @@ -19780,10 +19780,10 @@ - + <TFoot> shall not contain <Hn> - kidsStandardTypes.split('&').filter(elem => /^H[1-9][0-9]*$/.test(elem)).length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Hn> @@ -19792,10 +19792,10 @@ - + <TFoot> shall not contain <H> - kidsStandardTypes.split('&').filter(elem => elem == 'H').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <H> @@ -19804,10 +19804,10 @@ - + <TFoot> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Title> @@ -19816,10 +19816,10 @@ - + <TFoot> shall not contain <Sub> - kidsStandardTypes.split('&').filter(elem => elem == 'Sub').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Sub> @@ -19828,10 +19828,10 @@ - + <TFoot> shall not contain <Lbl> - kidsStandardTypes.split('&').filter(elem => elem == 'Lbl').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Lbl> @@ -19840,10 +19840,10 @@ - + <TFoot> shall not contain <Em> - kidsStandardTypes.split('&').filter(elem => elem == 'Em').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Em> @@ -19852,10 +19852,10 @@ - + <TFoot> shall not contain <Strong> - kidsStandardTypes.split('&').filter(elem => elem == 'Strong').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Strong> @@ -19864,10 +19864,10 @@ - + <TFoot> shall not contain <Span> - kidsStandardTypes.split('&').filter(elem => elem == 'Span').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Span> @@ -19876,10 +19876,10 @@ - + <TFoot> shall not contain <Quote> - kidsStandardTypes.split('&').filter(elem => elem == 'Quote').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Quote> @@ -19888,10 +19888,10 @@ - + <TFoot> shall not contain <Link> - kidsStandardTypes.split('&').filter(elem => elem == 'Link').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Link> @@ -19900,10 +19900,10 @@ - + <TFoot> shall not contain <Reference> - kidsStandardTypes.split('&').filter(elem => elem == 'Reference').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Reference> @@ -19912,10 +19912,10 @@ - + <TFoot> shall not contain <Annot> - kidsStandardTypes.split('&').filter(elem => elem == 'Annot').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Annot> @@ -19924,10 +19924,10 @@ - + <TFoot> shall not contain <Form> - kidsStandardTypes.split('&').filter(elem => elem == 'Form').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Form> @@ -19936,10 +19936,10 @@ - + <TFoot> shall not contain <Ruby> - kidsStandardTypes.split('&').filter(elem => elem == 'Ruby').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Ruby> @@ -19948,10 +19948,10 @@ - + <TFoot> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <RB> @@ -19960,10 +19960,10 @@ - + <TFoot> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <RT> @@ -19972,10 +19972,10 @@ - + <TFoot> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <RP> @@ -19984,10 +19984,10 @@ - + <TFoot> shall not contain <Warichu> - kidsStandardTypes.split('&').filter(elem => elem == 'Warichu').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Warichu> @@ -19996,10 +19996,10 @@ - + <TFoot> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <WT> @@ -20008,10 +20008,10 @@ - + <TFoot> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <WP> @@ -20020,10 +20020,10 @@ - + <TFoot> shall not contain <FENote> - kidsStandardTypes.split('&').filter(elem => elem == 'FENote').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <FENote> @@ -20032,10 +20032,10 @@ - + <TFoot> shall not contain <Index> - kidsStandardTypes.split('&').filter(elem => elem == 'Index').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Index> @@ -20044,10 +20044,10 @@ - + <TFoot> shall not contain <L> - kidsStandardTypes.split('&').filter(elem => elem == 'L').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <L> @@ -20056,10 +20056,10 @@ - + <TFoot> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <LI> @@ -20068,10 +20068,10 @@ - + <TFoot> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <LBody> @@ -20080,10 +20080,10 @@ - + <TFoot> shall not contain <BibEntry> - kidsStandardTypes.split('&').filter(elem => elem == 'BibEntry').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <BibEntry> @@ -20092,10 +20092,10 @@ - + <TFoot> shall not contain <Table> - kidsStandardTypes.split('&').filter(elem => elem == 'Table').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Table> @@ -20104,10 +20104,10 @@ - + <TFoot> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TH> @@ -20116,10 +20116,10 @@ - + <TFoot> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TD> @@ -20128,10 +20128,10 @@ - + <TFoot> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <THead> @@ -20140,10 +20140,10 @@ - + <TFoot> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TBody> @@ -20155,7 +20155,7 @@ <TFoot> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <TFoot> @@ -20164,10 +20164,10 @@ - + <TFoot> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Caption> @@ -20176,10 +20176,10 @@ - + <TFoot> shall not contain <Figure> - kidsStandardTypes.split('&').filter(elem => elem == 'Figure').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Figure> @@ -20188,10 +20188,10 @@ - + <TFoot> shall not contain <Formula> - kidsStandardTypes.split('&').filter(elem => elem == 'Formula').length == 0 + parentStandardType != 'TFoot' <TFoot> contains <Formula> @@ -20202,7 +20202,7 @@ - <TFoot> shall not contain content item + <TFoot> shall not contain content items hasContentItems == false <TFoot> contains content item(s) @@ -20212,10 +20212,10 @@ - + <Caption> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Caption' <Caption> contains <Document> @@ -20224,10 +20224,10 @@ - + <Caption> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Caption' <Caption> contains <TOC> @@ -20236,10 +20236,10 @@ - + <Caption> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Caption' <Caption> contains <TOCI> @@ -20260,10 +20260,10 @@ - + <Caption> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Caption' <Caption> contains <Title> @@ -20272,10 +20272,10 @@ - + <Caption> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Caption' <Caption> contains <RB> @@ -20284,10 +20284,10 @@ - + <Caption> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Caption' <Caption> contains <RT> @@ -20296,10 +20296,10 @@ - + <Caption> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Caption' <Caption> contains <RP> @@ -20308,10 +20308,10 @@ - + <Caption> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Caption' <Caption> contains <WT> @@ -20320,10 +20320,10 @@ - + <Caption> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Caption' <Caption> contains <WP> @@ -20332,10 +20332,10 @@ - + <Caption> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Caption' <Caption> contains <LI> @@ -20344,10 +20344,10 @@ - + <Caption> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Caption' <Caption> contains <LBody> @@ -20356,10 +20356,10 @@ - + <Caption> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Caption' <Caption> contains <TR> @@ -20368,10 +20368,10 @@ - + <Caption> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Caption' <Caption> contains <TH> @@ -20380,10 +20380,10 @@ - + <Caption> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Caption' <Caption> contains <TD> @@ -20392,10 +20392,10 @@ - + <Caption> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Caption' <Caption> contains <THead> @@ -20404,10 +20404,10 @@ - + <Caption> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Caption' <Caption> contains <TBody> @@ -20416,10 +20416,10 @@ - + <Caption> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Caption' <Caption> contains <TFoot> @@ -20431,7 +20431,7 @@ <Caption> shall not contain <Caption> - kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length == 0 + parentStandardType != 'Caption' <Caption> contains <Caption> @@ -20440,10 +20440,10 @@ - + <Figure> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Figure' <Figure> contains <Document> @@ -20452,10 +20452,10 @@ - + <Figure> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Figure' <Figure> contains <DocumentFragment> @@ -20464,10 +20464,10 @@ - + <Figure> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Figure' <Figure> contains <TOC> @@ -20476,10 +20476,10 @@ - + <Figure> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Figure' <Figure> contains <TOCI> @@ -20500,10 +20500,10 @@ - + <Figure> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Figure' <Figure> contains <Title> @@ -20512,10 +20512,10 @@ - + <Figure> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Figure' <Figure> contains <RB> @@ -20524,10 +20524,10 @@ - + <Figure> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Figure' <Figure> contains <RT> @@ -20536,10 +20536,10 @@ - + <Figure> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Figure' <Figure> contains <RP> @@ -20548,10 +20548,10 @@ - + <Figure> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Figure' <Figure> contains <WT> @@ -20560,10 +20560,10 @@ - + <Figure> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Figure' <Figure> contains <WP> @@ -20572,10 +20572,10 @@ - + <Figure> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Figure' <Figure> contains <LI> @@ -20584,10 +20584,10 @@ - + <Figure> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Figure' <Figure> contains <LBody> @@ -20596,10 +20596,10 @@ - + <Figure> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Figure' <Figure> contains <TR> @@ -20608,10 +20608,10 @@ - + <Figure> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Figure' <Figure> contains <TH> @@ -20620,10 +20620,10 @@ - + <Figure> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Figure' <Figure> contains <TD> @@ -20632,10 +20632,10 @@ - + <Figure> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Figure' <Figure> contains <THead> @@ -20644,10 +20644,10 @@ - + <Figure> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Figure' <Figure> contains <TBody> @@ -20656,10 +20656,10 @@ - + <Figure> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Figure' <Figure> contains <TFoot> @@ -20680,10 +20680,10 @@ - + <Formula> shall not contain <Document> - kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 0 + parentStandardType != 'Formula' <Formula> contains <Document> @@ -20692,10 +20692,10 @@ - + <Formula> shall not contain <DocumentFragment> - kidsStandardTypes.split('&').filter(elem => elem == 'DocumentFragment').length == 0 + parentStandardType != 'Formula' <Formula> contains <DocumentFragment> @@ -20704,10 +20704,10 @@ - + <Formula> shall not contain <Art> - kidsStandardTypes.split('&').filter(elem => elem == 'Art').length == 0 + parentStandardType != 'Formula' <Formula> contains <Art> @@ -20716,10 +20716,10 @@ - + <Formula> shall not contain <Sect> - kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length == 0 + parentStandardType != 'Formula' <Formula> contains <Sect> @@ -20728,10 +20728,10 @@ - + <Formula> shall not contain <TOC> - kidsStandardTypes.split('&').filter(elem => elem == 'TOC').length == 0 + parentStandardType != 'Formula' <Formula> contains <TOC> @@ -20740,10 +20740,10 @@ - + <Formula> shall not contain <TOCI> - kidsStandardTypes.split('&').filter(elem => elem == 'TOCI').length == 0 + parentStandardType != 'Formula' <Formula> contains <TOCI> @@ -20764,10 +20764,10 @@ - + <Formula> shall not contain <Title> - kidsStandardTypes.split('&').filter(elem => elem == 'Title').length == 0 + parentStandardType != 'Formula' <Formula> contains <Title> @@ -20776,10 +20776,10 @@ - + <Formula> shall not contain <RB> - kidsStandardTypes.split('&').filter(elem => elem == 'RB').length == 0 + parentStandardType != 'Formula' <Formula> contains <RB> @@ -20788,10 +20788,10 @@ - + <Formula> shall not contain <RT> - kidsStandardTypes.split('&').filter(elem => elem == 'RT').length == 0 + parentStandardType != 'Formula' <Formula> contains <RT> @@ -20800,10 +20800,10 @@ - + <Formula> shall not contain <RP> - kidsStandardTypes.split('&').filter(elem => elem == 'RP').length == 0 + parentStandardType != 'Formula' <Formula> contains <RP> @@ -20812,10 +20812,10 @@ - + <Formula> shall not contain <WT> - kidsStandardTypes.split('&').filter(elem => elem == 'WT').length == 0 + parentStandardType != 'Formula' <Formula> contains <WT> @@ -20824,10 +20824,10 @@ - + <Formula> shall not contain <WP> - kidsStandardTypes.split('&').filter(elem => elem == 'WP').length == 0 + parentStandardType != 'Formula' <Formula> contains <WP> @@ -20836,10 +20836,10 @@ - + <Formula> shall not contain <LI> - kidsStandardTypes.split('&').filter(elem => elem == 'LI').length == 0 + parentStandardType != 'Formula' <Formula> contains <LI> @@ -20848,10 +20848,10 @@ - + <Formula> shall not contain <LBody> - kidsStandardTypes.split('&').filter(elem => elem == 'LBody').length == 0 + parentStandardType != 'Formula' <Formula> contains <LBody> @@ -20860,10 +20860,10 @@ - + <Formula> shall not contain <TR> - kidsStandardTypes.split('&').filter(elem => elem == 'TR').length == 0 + parentStandardType != 'Formula' <Formula> contains <TR> @@ -20872,10 +20872,10 @@ - + <Formula> shall not contain <TH> - kidsStandardTypes.split('&').filter(elem => elem == 'TH').length == 0 + parentStandardType != 'Formula' <Formula> contains <TH> @@ -20884,10 +20884,10 @@ - + <Formula> shall not contain <TD> - kidsStandardTypes.split('&').filter(elem => elem == 'TD').length == 0 + parentStandardType != 'Formula' <Formula> contains <TD> @@ -20896,10 +20896,10 @@ - + <Formula> shall not contain <THead> - kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 + parentStandardType != 'Formula' <Formula> contains <THead> @@ -20908,10 +20908,10 @@ - + <Formula> shall not contain <TBody> - kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length == 0 + parentStandardType != 'Formula' <Formula> contains <TBody> @@ -20920,10 +20920,10 @@ - + <Formula> shall not contain <TFoot> - kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 + parentStandardType != 'Formula' <Formula> contains <TFoot> @@ -20968,6 +20968,58 @@ + + + A circular mapping shall not exist + circularMappingExist != true + + A circular mapping exists for %1 structure type + + valueS + + + + + + + + + Standard tags shall not be remapped to a non-standard type + remappedStandardType == null + + The standard structure type %1 is remapped to a non-standard type + + remappedStandardType + + + + + + + + + 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 + StructTreeRoot_size == 1 + + StructTreeRoot entry is not present in the document catalog + + + + + + + + + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 + containsParent == true + + A struct element does not contain the P entry + + + + + + From e9ade882201e23dbd232fa3a8f7b49c23e61fc80 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 21 Dec 2023 12:55:00 +0300 Subject: [PATCH 520/557] Update rules about non standard structure types --- .../verapdf-profile-6-8-3-4-t01.xml | 2 +- .../verapdf-profile-6-7-3-4-t01.xml | 2 +- .../verapdf-profile-6-7-3-4-t03.xml | 25 ++++++++++++++ .../1/7.1 General/verapdf-profile-7-1-t05.xml | 2 +- .../1/7.1 General/verapdf-profile-7-1-t07.xml | 4 +-- .../verapdf-profile-8-2-4-t01.xml | 2 +- .../verapdf-profile-8-2-4-t04.xml | 33 +++++++++++++++++++ 7 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t03.xml create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml diff --git a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml index 202f9214..1cc5d1cd 100644 --- a/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml +++ b/PDF_A/1a/6.8 Logical Structure/6.8.3 Artifacts/6.8.3.4 Structure types/verapdf-profile-6-8-3-4-t01.xml @@ -11,7 +11,7 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml index 84d03e24..24e2f1ab 100644 --- a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t01.xml @@ -11,7 +11,7 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type diff --git a/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t03.xml b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t03.xml new file mode 100644 index 00000000..1260d8dd --- /dev/null +++ b/PDF_A/2a/6.7 Logical Structure/6.7.3 Artefacts/6.7.3.4 Structure types/verapdf-profile-6-7-3-4-t03.xml @@ -0,0 +1,25 @@ + + +
+ ISO 19005-2:2011 - 6.7.3 Artefacts - Remapped standard types + Standard tags shall not be remapped to a non-standard type +
+ + + + + Standard tags shall not be remapped to a non-standard type + remappedStandardType == null + + The standard structure type %1 is remapped to a non-standard type + + remappedStandardType + + + + + + + + +
diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml index e832f6b3..bd725821 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t05.xml @@ -15,7 +15,7 @@ as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml index 44aaa837..ee8d31a4 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t07.xml @@ -9,11 +9,11 @@ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped - isRemappedStandardType == false + remappedStandardType == null Standard type %1 is remapped - valueS + remappedStandardType diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml index 3621f868..ae9d5040 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml @@ -17,7 +17,7 @@ — the PDF 1.7 namespace; — the PDF 2.0 namespace; — the MathML namespace - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml new file mode 100644 index 00000000..f3d4ca55 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml @@ -0,0 +1,33 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.4 Structure types - Remapped standard types + 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 +
+ + + + + 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 + remappedStandardType == null + + The standard structure type %1 is remapped to a non-standard type + + remappedStandardType + + + + + + + + +
From 7da98278433e8deb7845603d4d00f03bb5a8e41d Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 27 Dec 2023 11:38:29 +0000 Subject: [PATCH 521/557] Update rules about non standard structure types --- PDF_A/PDFA-1A.xml | 6 +++--- PDF_A/PDFA-1B.xml | 2 +- PDF_A/PDFA-2A.xml | 20 +++++++++++++++++--- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 20 +++++++++++++++++--- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- PDF_A/PDFA-4.xml | 4 ++-- PDF_A/PDFA-4E.xml | 4 ++-- PDF_A/PDFA-4F.xml | 4 ++-- 11 files changed, 48 insertions(+), 20 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index 031351c1..c3e9d142 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1A validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level A
@@ -1652,7 +1652,7 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in PDF Reference 9.7.4, in the role map dictionary of the structure tree root - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type @@ -1682,7 +1682,7 @@ If the Lang entry is present in the document catalog dictionary or in a structure element dictionary or property list, its value shall be a language identifier as defined by RFC 1766, Tags for the Identification of Languages, as described in PDF Reference 9.8.1 unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z]{1,8})*$/.test(unicodeValue) - Value %1 of the Lang entry is not Language-Tag + Value %1 of the Lang entry is not a Language-Tag unicodeValue diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index 9b184f57..a4ce32ec 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-1B validation profile Validation rules against ISO 19005-1:2005, Cor.1:2007 and Cor.2:2011, Level B
diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 6a3643d0..73da7d31 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2A validation profile Validation rules against ISO 19005-2:2011, Level A
@@ -1719,7 +1719,7 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type @@ -1744,12 +1744,26 @@ + + + Standard tags shall not be remapped to a non-standard type + remappedStandardType == null + + The standard structure type %1 is remapped to a non-standard type + + remappedStandardType + + + + + + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Value %1 of the Lang entry is not Language-Tag + Value %1 of the Lang entry is not a Language-Tag unicodeValue diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index b95a663c..5d2ffc52 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2B validation profile Validation rules against ISO 19005-2:2011, Level B
diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index a8e34e41..939a54d6 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-2U validation profile Validation rules against ISO 19005-2:2011, Level U
diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 783e5289..167ea403 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3A validation profile Validation rules against ISO 19005-3:2012, Level A
@@ -1719,7 +1719,7 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type @@ -1744,12 +1744,26 @@ + + + Standard tags shall not be remapped to a non-standard type + remappedStandardType == null + + The standard structure type %1 is remapped to a non-standard type + + remappedStandardType + + + + + + 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-1:2008, 14.9.2. A language identifier shall either be the empty text string, to indicate that the language is unknown, or a Language-Tag as defined in RFC 3066, Tags for the Identification of Languages unicodeValue == '' || /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) - Value %1 of the Lang entry is not Language-Tag + Value %1 of the Lang entry is not a Language-Tag unicodeValue diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 08914949..f3ebe359 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3B validation profile Validation rules against ISO 19005-3:2012, Level B
diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index fce89bd8..7820417b 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1,6 +1,6 @@ -
+
PDF/A-3U validation profile Validation rules against ISO 19005-3:2012, Level U
diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index ada18960..abe2c0d9 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -1,6 +1,6 @@ -
+
PDF/A-4 validation profile Validation rules against ISO 19005-4:2020
@@ -890,7 +890,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicoide Area value + The ActualText entry contains a Private Unicode Area value diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index bfff1ee4..dfb3514f 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1,6 +1,6 @@ -
+
PDF/A-4E validation profile Validation rules against ISO 19005-4:2020, Level E
@@ -904,7 +904,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicoide Area value + The ActualText entry contains a Private Unicode Area value diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 2e2fb298..1c93c909 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -1,6 +1,6 @@ -
+
PDF/A-4F validation profile Validation rules against ISO 19005-4:2020, Level F
@@ -890,7 +890,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicoide Area value + The ActualText entry contains a Private Unicode Area value From 8e7f67d7072ef37915bda8c2e6f2abf2338bf8a7 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 27 Dec 2023 14:56:27 +0300 Subject: [PATCH 522/557] Update github actions for updating profiles --- .github/workflows/update-PDFA-profiles-workflow.yml | 1 + .github/workflows/update-PDFUA-profiles-workflow.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/update-PDFA-profiles-workflow.yml b/.github/workflows/update-PDFA-profiles-workflow.yml index e27285dc..50ad4453 100644 --- a/.github/workflows/update-PDFA-profiles-workflow.yml +++ b/.github/workflows/update-PDFA-profiles-workflow.yml @@ -35,6 +35,7 @@ jobs: curl -LO https://raw.githubusercontent.com/veraPDF/veraPDF-tools/master/profile-merger/profile-merger-1.0-SNAPSHOT.jar java -jar profile-merger-1.0-SNAPSHOT.jar pdfa rm profile-merger-1.0-SNAPSHOT.jar + git pull origin - name: Push PDF_A profiles uses: stefanzweifel/git-auto-commit-action@v5 with: diff --git a/.github/workflows/update-PDFUA-profiles-workflow.yml b/.github/workflows/update-PDFUA-profiles-workflow.yml index d86d152f..4f181410 100644 --- a/.github/workflows/update-PDFUA-profiles-workflow.yml +++ b/.github/workflows/update-PDFUA-profiles-workflow.yml @@ -28,6 +28,7 @@ jobs: curl -LO https://raw.githubusercontent.com/veraPDF/veraPDF-tools/master/profile-merger/profile-merger-1.0-SNAPSHOT.jar java -jar profile-merger-1.0-SNAPSHOT.jar pdfua rm profile-merger-1.0-SNAPSHOT.jar + git pull origin - name: Push PDF_UA profiles uses: stefanzweifel/git-auto-commit-action@v5 with: From aad8584ae6d0fbab8239d2ba8c15f3dfab35bb39 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 27 Dec 2023 15:04:42 +0300 Subject: [PATCH 523/557] Remove extra spaces --- .../verapdf-profile-6-2-11-7-2-t02.xml | 2 +- .../verapdf-profile-6-2-10-7-t01.xml | 2 +- .../verapdf-profile-8-4-5-8-t02.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml index 179ed98f..34bf98a2 100644 --- a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml +++ b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml @@ -9,7 +9,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml index b784c27f..00b3d2a5 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml @@ -11,7 +11,7 @@ If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE - toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) + toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml index 781089ec..8141d4bf 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml @@ -12,7 +12,7 @@ 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 toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && - toUnicode.indexOf("\uFEFF") == -1) + toUnicode.indexOf("\uFEFF") == -1) The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE From e9d308dfaa6bc99df7b6ee50b497b4b01db8b03a Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 27 Dec 2023 12:06:59 +0000 Subject: [PATCH 524/557] Remove extra spaces --- PDF_UA/PDFUA-1.xml | 6 +++--- PDF_UA/PDFUA-2-ISO32005.xml | 16 +++++++++++++++- PDF_UA/PDFUA-2.xml | 16 +++++++++++++++- PDF_UA/WCAG-2-2-Complete.xml | 6 +++--- PDF_UA/WCAG-2-2-Machine.xml | 6 +++--- 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 322e8f57..e1f769ff 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -113,7 +113,7 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type @@ -139,11 +139,11 @@ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped - isRemappedStandardType == false + remappedStandardType == null Standard type %1 is remapped - valueS + remappedStandardType diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index c6c19c22..2a6fec38 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -101,7 +101,7 @@ 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 - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type @@ -136,6 +136,20 @@ + + + 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 + remappedStandardType == null + + The standard structure type %1 is remapped to a non-standard type + + remappedStandardType + + + + + + 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 diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index ef6b42ea..081e1b65 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -101,7 +101,7 @@ 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 - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type @@ -136,6 +136,20 @@ + + + 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 + remappedStandardType == null + + The standard structure type %1 is remapped to a non-standard type + + remappedStandardType + + + + + + 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 diff --git a/PDF_UA/WCAG-2-2-Complete.xml b/PDF_UA/WCAG-2-2-Complete.xml index bf635799..ee03ae1b 100644 --- a/PDF_UA/WCAG-2-2-Complete.xml +++ b/PDF_UA/WCAG-2-2-Complete.xml @@ -55,7 +55,7 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type @@ -81,11 +81,11 @@ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped - isRemappedStandardType == false + remappedStandardType == null Standard type %1 is remapped - valueS + remappedStandardType diff --git a/PDF_UA/WCAG-2-2-Machine.xml b/PDF_UA/WCAG-2-2-Machine.xml index 00d6da74..49cab6b5 100644 --- a/PDF_UA/WCAG-2-2-Machine.xml +++ b/PDF_UA/WCAG-2-2-Machine.xml @@ -55,7 +55,7 @@ All non-standard structure types shall be mapped to the nearest functionally equivalent standard type, as defined in ISO 32000-1:2008, 14.8.4, in the role map dictionary of the structure tree root. This mapping may be indirect; within the role map a non-standard type can map directly to another non-standard type, but eventually the mapping shall terminate at a standard type - circularMappingExist == true + isNotMappedToStandardType == false Non-standard structure type %1 is not mapped to a standard type @@ -81,11 +81,11 @@ Standard tags defined in ISO 32000-1:2008, 14.8.4, shall not be remapped - isRemappedStandardType == false + remappedStandardType == null Standard type %1 is remapped - valueS + remappedStandardType From cfa04a630fa96c2aa51d288ddb5db403d53870a2 Mon Sep 17 00:00:00 2001 From: Maxim Date: Sat, 30 Dec 2023 18:07:37 +0300 Subject: [PATCH 525/557] Update WCAG rules 7.1-1 and 7.1-2 --- PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml | 6 +++--- PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml index da26652b..868bad18 100644 --- a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t01.xml @@ -9,11 +9,11 @@ Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || (parentStructureTag == null || isArtifact == true) + tag != 'Artifact' || (isTaggedContent == false || isArtifact == true) - Content marked as Artifact is present inside tagged content (tag %1) + Content marked as Artifact is present inside tagged content (parent struct element %1) - parentStructureTag + parentStructureElementObjectKey diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml index d892067c..8e630ded 100644 --- a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-1-t02.xml @@ -9,11 +9,11 @@ Tagged content should not present inside content marked as Artifact - (parentStructureTag == null || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + (isTaggedContent == false || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 - Tagged content (tag %1) is present inside content marked as Artifact + Tagged content (parent struct element %1) is present inside content marked as Artifact - parentStructureTag + parentStructureElementObjectKey From 0c9e260d592546367ddd56dd7f30740f48972118 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Sat, 30 Dec 2023 15:09:08 +0000 Subject: [PATCH 526/557] Update WCAG rules 7.1-1 and 7.1-2 --- PDF_UA/WCAG-2-2-Complete.xml | 12 ++++++------ PDF_UA/WCAG-2-2-Machine.xml | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/PDF_UA/WCAG-2-2-Complete.xml b/PDF_UA/WCAG-2-2-Complete.xml index ee03ae1b..30d4bfcb 100644 --- a/PDF_UA/WCAG-2-2-Complete.xml +++ b/PDF_UA/WCAG-2-2-Complete.xml @@ -9,11 +9,11 @@ Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || (parentStructureTag == null || isArtifact == true) + tag != 'Artifact' || (isTaggedContent == false || isArtifact == true) - Content marked as Artifact is present inside tagged content (tag %1) + Content marked as Artifact is present inside tagged content (parent struct element %1) - parentStructureTag + parentStructureElementObjectKey @@ -21,11 +21,11 @@ Tagged content should not present inside content marked as Artifact - (parentStructureTag == null || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + (isTaggedContent == false || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 - Tagged content (tag %1) is present inside content marked as Artifact + Tagged content (parent struct element %1) is present inside content marked as Artifact - parentStructureTag + parentStructureElementObjectKey diff --git a/PDF_UA/WCAG-2-2-Machine.xml b/PDF_UA/WCAG-2-2-Machine.xml index 49cab6b5..8456e9de 100644 --- a/PDF_UA/WCAG-2-2-Machine.xml +++ b/PDF_UA/WCAG-2-2-Machine.xml @@ -9,11 +9,11 @@ Content marked as Artifact should not present inside tagged content - tag != 'Artifact' || (parentStructureTag == null || isArtifact == true) + tag != 'Artifact' || (isTaggedContent == false || isArtifact == true) - Content marked as Artifact is present inside tagged content (tag %1) + Content marked as Artifact is present inside tagged content (parent struct element %1) - parentStructureTag + parentStructureElementObjectKey @@ -21,11 +21,11 @@ Tagged content should not present inside content marked as Artifact - (parentStructureTag == null || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 + (isTaggedContent == false || isArtifact == true) || parentsTags.split('&').filter(elem => elem == 'Artifact').length == 0 - Tagged content (tag %1) is present inside content marked as Artifact + Tagged content (parent struct element %1) is present inside content marked as Artifact - parentStructureTag + parentStructureElementObjectKey From 97e185efbc25ce7bd2d0e2701dee5a9d95d16825 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 17 Jan 2024 12:57:05 +0300 Subject: [PATCH 527/557] PDF/UA-2. Fix clause of rule 8.6-1 --- PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml b/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml index a7cde446..0f495a8c 100644 --- a/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml +++ b/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml @@ -7,7 +7,7 @@ - + Text strings intended to be human readable shall not use the Unicode PUA containsPUA == false From 790910c4025b00088e2014890eaa2197175832ac Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Wed, 17 Jan 2024 09:58:40 +0000 Subject: [PATCH 528/557] PDF/UA-2. Fix clause of rule 8.6-1 --- PDF_UA/PDFUA-2-ISO32005.xml | 12 ++++++++++++ PDF_UA/PDFUA-2.xml | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 2a6fec38..76603f91 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -692,6 +692,18 @@ + + + Text strings intended to be human readable shall not use the Unicode PUA + containsPUA == false + + Text string intended to be human readable uses Unicode PUA + + + + + + 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 diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 081e1b65..8ce5ccf1 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -692,6 +692,18 @@ + + + Text strings intended to be human readable shall not use the Unicode PUA + containsPUA == false + + Text string intended to be human readable uses Unicode PUA + + + + + + 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 From fdf9fb826b9c35305a8a4399f81ca57e76f6bf42 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 22 Jan 2024 11:21:14 +0300 Subject: [PATCH 529/557] Update rules error messages. 6.1.13-11(PDF/A-2), 8.10.1-2(PDF/UA-2). Update trigger-increment-workflow.yml --- .github/workflows/trigger-increment-workflow.yml | 2 ++ .../6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml | 2 +- .../2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/trigger-increment-workflow.yml b/.github/workflows/trigger-increment-workflow.yml index 08b518e4..9cf87fd6 100644 --- a/.github/workflows/trigger-increment-workflow.yml +++ b/.github/workflows/trigger-increment-workflow.yml @@ -6,6 +6,8 @@ on: [ integration ] paths: - 'PDF_UA/**' + - '!PDF_UA/1/**' + - '!PDF_UA/2/**' jobs: trigger_build: diff --git a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml index 93ccd999..68c9bf51 100644 --- a/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml +++ b/PDF_A/2b/6.1 File structure/6.1.13 Implementation limits/verapdf-profile-6-1-13-t11.xml @@ -13,7 +13,7 @@ in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2) Math.abs(top - bottom) Math.abs(right - left) diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml index 081b1d00..6c7db698 100644 --- a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml +++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml @@ -11,7 +11,7 @@ A Form structure element shall contain at most one widget annotation widgetAnnotsCount <= 1 - A Form structure element contains %1 annotations + A Form structure element contains %1 widget annotations widgetAnnotsCount From 50dbe33aa971492784732a72575a4c898df2f304 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 23 Jan 2024 09:49:40 +0000 Subject: [PATCH 530/557] Update rules error messages. 6.1.13-11(PDF/A-2), 8.10.1-2(PDF/UA-2). Update trigger-increment-workflow.yml --- PDF_UA/PDFUA-2-ISO32005.xml | 2 +- PDF_UA/PDFUA-2.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 76603f91..0e13875a 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -1028,7 +1028,7 @@ A Form structure element shall contain at most one widget annotation widgetAnnotsCount <= 1 - A Form structure element contains %1 annotations + A Form structure element contains %1 widget annotations widgetAnnotsCount diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 8ce5ccf1..4d10a67a 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -1028,7 +1028,7 @@ A Form structure element shall contain at most one widget annotation widgetAnnotsCount <= 1 - A Form structure element contains %1 annotations + A Form structure element contains %1 widget annotations widgetAnnotsCount From 32561a04ebf95fabfe5b1be0b33c75bcecdb5d2f Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 23 Jan 2024 09:51:10 +0000 Subject: [PATCH 531/557] Update rules error messages. 6.1.13-11(PDF/A-2), 8.10.1-2(PDF/UA-2). Update trigger-increment-workflow.yml --- PDF_A/PDFA-2A.xml | 2 +- PDF_A/PDFA-2B.xml | 2 +- PDF_A/PDFA-2U.xml | 2 +- PDF_A/PDFA-3A.xml | 2 +- PDF_A/PDFA-3B.xml | 2 +- PDF_A/PDFA-3U.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 73da7d31..75e19aae 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -327,7 +327,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2) Math.abs(top - bottom) Math.abs(right - left) diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 5d2ffc52..0f7a8c14 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -327,7 +327,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2) Math.abs(top - bottom) Math.abs(right - left) diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 939a54d6..61345d89 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -327,7 +327,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2) Math.abs(top - bottom) Math.abs(right - left) diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 167ea403..aa0b489b 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -327,7 +327,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2) Math.abs(top - bottom) Math.abs(right - left) diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index f3ebe359..d1844859 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -327,7 +327,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2) Math.abs(top - bottom) Math.abs(right - left) diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 7820417b..87060e8b 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -327,7 +327,7 @@ The size of any of the page boundaries described in ISO 32000-1:2008, 14.11.2 shall not be less than 3 units in either direction, nor shall it be greater than 14 400 units in either direction Math.abs(top - bottom) >= 3 && Math.abs(top - bottom) <= 14400 && Math.abs(right - left) >= 3 && Math.abs(right - left) <= 14400 - One of the page boundaries is out of range (3-14400) in one of the directions (height = %1, width = %2) + One of the page boundaries is out of range (valid range: 3 - 14400, height = %1, width = %2) Math.abs(top - bottom) Math.abs(right - left) From efda11f8b7276b2fb69210d74cd301a49c0b440a Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 12 Jan 2024 22:28:42 +0300 Subject: [PATCH 532/557] PDF/UA-2. Add tags --- PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml | 2 +- PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml | 2 +- PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml | 2 +- PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml | 2 +- PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml | 2 +- .../2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml | 2 +- .../2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml | 2 +- .../2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml | 2 +- .../8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml | 2 +- .../8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml | 2 +- .../8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml | 2 +- .../8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml | 2 +- .../8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml | 2 +- .../8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml | 2 +- .../verapdf-profile-8-14-1-t01.xml | 2 +- .../8.2.1 General/verapdf-profile-8-2-1-t01.xml | 2 +- .../8.2.1 General/verapdf-profile-8-2-1-t02.xml | 2 +- .../8.2.2 Real content/verapdf-profile-8-2-2-t01.xml | 2 +- .../8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml | 2 +- .../8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml | 2 +- .../8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml | 2 +- .../8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml | 2 +- .../verapdf-profile-8-2-5-12-t01.xml | 2 +- .../verapdf-profile-8-2-5-14-t01.xml | 2 +- .../verapdf-profile-8-2-5-14-t02.xml | 2 +- .../verapdf-profile-8-2-5-14-t03.xml | 2 +- .../verapdf-profile-8-2-5-2-t01.xml | 2 +- .../verapdf-profile-8-2-5-2-t02.xml | 2 +- .../verapdf-profile-8-2-5-20-t01.xml | 2 +- .../verapdf-profile-8-2-5-20-t02.xml | 2 +- .../verapdf-profile-8-2-5-20-t03.xml | 2 +- .../verapdf-profile-8-2-5-23-t01.xml | 2 +- .../8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml | 2 +- .../verapdf-profile-8-2-5-25-t01.xml | 2 +- .../verapdf-profile-8-2-5-25-t02.xml | 2 +- .../verapdf-profile-8-2-5-26-t01.xml | 2 +- .../verapdf-profile-8-2-5-26-t02.xml | 2 +- .../verapdf-profile-8-2-5-26-t03.xml | 2 +- .../verapdf-profile-8-2-5-26-t04.xml | 2 +- .../verapdf-profile-8-2-5-26-t05.xml | 2 +- .../verapdf-profile-8-2-5-26-t06.xml | 2 +- .../8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml | 2 +- .../verapdf-profile-8-2-5-28-2-t01.xml | 2 +- .../8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml | 2 +- .../verapdf-profile-8-2-5-8-t01.xml | 2 +- .../verapdf-profile-8-4-3-t01.xml | 2 +- .../verapdf-profile-8-4-3-t02.xml | 2 +- .../verapdf-profile-8-4-3-t03.xml | 2 +- .../verapdf-profile-8-4-4-t01.xml | 2 +- .../verapdf-profile-8-4-4-t02.xml | 2 +- .../8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml | 2 +- .../8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml | 2 +- .../8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml | 2 +- .../8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml | 2 +- .../8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml | 2 +- .../8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml | 2 +- .../8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml | 2 +- .../8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml | 2 +- .../8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml | 2 +- .../8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml | 2 +- .../8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml | 2 +- .../8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml | 2 +- .../verapdf-profile-8-4-5-8-t01.xml | 2 +- .../verapdf-profile-8-4-5-8-t02.xml | 2 +- .../verapdf-profile-8-4-5-9-t01.xml | 2 +- .../8.5.1 General/verapdf-profile-8-5-1-t01.xml | 2 +- PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml | 2 +- PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml | 2 +- PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml | 2 +- .../8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml | 2 +- .../8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml | 2 +- .../8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml | 2 +- .../verapdf-profile-8-9-2-2-t01.xml | 2 +- .../verapdf-profile-8-9-2-2-t02.xml | 2 +- .../8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml | 2 +- .../8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml | 2 +- .../verapdf-profile-8-9-2-4-10-t01.xml | 2 +- .../8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml | 2 +- .../8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml | 2 +- .../8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml | 2 +- .../8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml | 2 +- .../verapdf-profile-8-9-2-4-14-t01.xml | 2 +- .../8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml | 2 +- .../8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml | 2 +- .../verapdf-profile-8-9-2-4-19-t01.xml | 2 +- .../verapdf-profile-8-9-2-4-19-t02.xml | 2 +- .../8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml | 2 +- .../8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml | 2 +- .../8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml | 2 +- .../8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml | 2 +- .../8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml | 2 +- 91 files changed, 91 insertions(+), 91 deletions(-) diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml index 82310772..2fa3cf2e 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml @@ -6,7 +6,7 @@
- + The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema UAIdentification_size == 1 diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml index c718dc33..d166ea8a 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml @@ -7,7 +7,7 @@
- + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml index 429745b0..5d4ceeb6 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml @@ -6,7 +6,7 @@
- + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid partPrefix == null || partPrefix == "pdfuaid" diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml index 1670e9c8..a5a9ae9c 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml @@ -6,7 +6,7 @@
- + Property rev of the PDF/UA Identification Schema shall have namespace prefix pdfuaid revPrefix == null || revPrefix == "pdfuaid" diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml index db8ba9d3..86cddbf1 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml @@ -6,7 +6,7 @@
- + The value of pdfuaid:rev shall be the four digit year /^\d{4}$/.test(rev) diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml index bd8d6712..ea36f403 100644 --- a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml +++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml @@ -7,7 +7,7 @@
- + Each widget annotation shall be enclosed by a Form structure element unless the widget annotation is an artifact diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml index 6c7db698..099d2ea1 100644 --- a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml +++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml @@ -6,7 +6,7 @@
- + A Form structure element shall contain at most one widget annotation widgetAnnotsCount <= 1 diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml index 5b24397f..401427cb 100644 --- a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml +++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml @@ -6,7 +6,7 @@
- + XFA forms shall not be present containsXFA == false diff --git a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml index ca69d0de..3ab7e915 100644 --- a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml +++ b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml @@ -7,7 +7,7 @@
- + If a label for a widget annotation is not present, a Contents entry shall be provided to supply description and context for the widget diff --git a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml index 084975dd..070f309c 100644 --- a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml +++ b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml @@ -7,7 +7,7 @@
- + If an additional action (AA) entry is present in a widget annotation dictionary, the respective widget's Contents entry shall be present diff --git a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml index 5a470103..7c95632c 100644 --- a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml +++ b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml @@ -7,7 +7,7 @@
- + For text fields, when an RV entry is present a V entry shall also be present, and they shall be textually equivalent diff --git a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml index d8cc5453..c32baf34 100644 --- a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml +++ b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml @@ -7,7 +7,7 @@
- + If a portion of the appearance of a signature is represented by a graphic, alternative text shall be provided for that graphic diff --git a/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml b/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml index 054943e6..dd4e0599 100644 --- a/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml +++ b/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml @@ -7,7 +7,7 @@
- + The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary shall contain a dc:title entry diff --git a/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml b/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml index 9cad758b..a35d7640 100644 --- a/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml +++ b/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml b/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml index 4875ba62..58ffe2a0 100644 --- a/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml +++ b/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml @@ -7,7 +7,7 @@
- + The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document diff --git a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml index d3081321..af87a7af 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml index 54902c92..a1b1eabc 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml @@ -6,7 +6,7 @@
- + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true diff --git a/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml index f77c764a..01da480c 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml @@ -6,7 +6,7 @@
- + Content that is not considered real shall be an artifact isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml index ae9d5040..7f45146a 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml @@ -10,7 +10,7 @@
- + 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: diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml index 9b79733a..3fd92b8e 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml @@ -6,7 +6,7 @@
- + A circular mapping shall not exist circularMappingExist != true diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml index 5512e0d2..12e3c609 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml @@ -6,7 +6,7 @@
- + Structure types shall not be role mapped to other structure types in the same namespace roleMapToSameNamespaceTag == null diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml index f3d4ca55..eec9403d 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml @@ -10,7 +10,7 @@
- + 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: diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml index db909b7a..f7d92d16 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml @@ -6,7 +6,7 @@
- + Conforming files shall not use the H structure type false diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml index 4cc939f3..826e933b 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml index ca3da3c4..08abc837 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml @@ -8,7 +8,7 @@
- + Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry as specified in 8.8 on the referring structure element to reference the diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml index 3f11818b..68f9f04b 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml @@ -6,7 +6,7 @@
- + The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None' diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml index be6814c8..47597882 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml index cc3ad0ff..00cc0de9 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml index 548e77ce..114563ab 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml @@ -7,7 +7,7 @@
- + A link annotation and its associated content shall be enclosed in either a Link or Reference structure element diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml index 492fe100..c0046fa5 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml @@ -7,7 +7,7 @@
- + Link annotations that target different locations shall be in separate Link or Reference structure elements diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml index 6925851c..e3c59bad 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml @@ -7,7 +7,7 @@
- + Multiple link annotations shall be included in a single Link or Reference structure element if they target the same location and are semantically perceived to be a single link diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml index 7130b8f8..d9a2378a 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml index a13d7c71..4cc9a9e4 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml index 3731accb..b5099b5f 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml index 2caa3c16..e35c70fa 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml index 377465a9..f33e608d 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml @@ -6,7 +6,7 @@
- + Tables shall be regular. Table cell shall not have intersection with other cells hasIntersection != true diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml index 81042786..b1703451 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml @@ -8,7 +8,7 @@
- + 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml index 43a9e739..c81d96da 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml @@ -7,7 +7,7 @@
- + Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans) diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml index 6a5e7b75..e18a1839 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml @@ -7,7 +7,7 @@
- + Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans) diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml index 320a79f7..4b6159a3 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml @@ -8,7 +8,7 @@
- + 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml index 243049a7..4270e0ab 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml @@ -8,7 +8,7 @@
- + 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml index 3ea7ca41..6362cc4d 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml @@ -6,7 +6,7 @@
- + When present, the Caption element shall be the first or the last child of the structure element kidsStandardTypes.indexOf('&Caption&') < 0 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml index 4a728a5c..6984a47b 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml @@ -8,7 +8,7 @@
- + 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; diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml index 50c3a804..952b062c 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml @@ -6,7 +6,7 @@
- + The math structure type shall occur only as a child of a Formula structure element parentStandardType == 'Formula' || parentStandardType == 'MathML' diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml index 58f4a748..3f45345a 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml @@ -7,7 +7,7 @@
- + 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 a child structure element contained within diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml index 01dabd42..c45ed8b0 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml @@ -6,7 +6,7 @@
- + In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present unicodePUA == false || actualTextPresent == true || altPresent == true diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml index ff7040d0..93038cd7 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml @@ -6,7 +6,7 @@
- + The ActualText entry shall not contain any PUA values containsPUA == false diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml index 93f812c7..aa1b2a96 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml @@ -6,7 +6,7 @@
- + The Alt entry shall not contain any PUA values containsPUA == false diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml index 38b250c1..f08fdd85 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml index b91b7e10..c7aae156 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml @@ -9,7 +9,7 @@
- + 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, diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml index 82d5fc56..96e8a267 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml @@ -12,7 +12,7 @@
- + 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: diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml index fcd026f3..9068aa1d 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml index 3dd25111..7f68c3fd 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml @@ -7,7 +7,7 @@
- + All CMaps used within a file that conforms to PDF/UA-2, 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml index 8be21cb3..00770380 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml index b30ebd33..5387034e 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml @@ -6,7 +6,7 @@
- + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116 CMapName == "Identity-H" || CMapName == "Identity-V" || CMapName == "GB-EUC-H" || CMapName == "GB-EUC-V" || diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml index 571477de..ce6bda66 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml index f6f7931b..5afaf11a 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml @@ -10,7 +10,7 @@
- + 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml index 87655d74..259e223f 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml index 07a6c7c9..0523b1ab 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml @@ -8,7 +8,7 @@
- + 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml index a4b7067a..74763d8a 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml @@ -11,7 +11,7 @@
- + 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml index 52c1af72..c480eeb1 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml @@ -6,7 +6,7 @@
- + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary isSymbolic == false || Encoding == null diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml index ba155906..484c3d10 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml index cba7b3c4..3bcd8ee4 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml @@ -7,7 +7,7 @@
- + 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 ISO 14289-2, 8.4.5.8 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml index 8141d4bf..7c06b4fb 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml index 39ceb8d2..2ec9f5ff 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml @@ -7,7 +7,7 @@
- + A file in conformance with PDF/UA-2 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 diff --git a/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml b/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml index 3159cab2..dfcc4d08 100644 --- a/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml +++ b/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml @@ -7,7 +7,7 @@
- + Real content that does not possess the semantics of text objects and does not have an alternate textual representation shall be enclosed within Figure or Formula structure elements as appropriate diff --git a/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml b/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml index 0f495a8c..52a34510 100644 --- a/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml +++ b/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml @@ -6,7 +6,7 @@
- + Text strings intended to be human readable shall not use the Unicode PUA containsPUA == false diff --git a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml index e97b720d..d1823ea3 100644 --- a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml +++ b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml @@ -11,7 +11,7 @@
- + 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 diff --git a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml index 4a695104..87f90c10 100644 --- a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml +++ b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml @@ -6,7 +6,7 @@
- + The AS key shall not appear in any optional content configuration dictionary AS == null diff --git a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml index 097fcddb..9f30bd34 100644 --- a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml +++ b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml @@ -6,7 +6,7 @@
- + All destinations whose target lies within the current document shall be structure destinations isStructDestination == true diff --git a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml index 90e71f76..ba1f6fd2 100644 --- a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml +++ b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml @@ -6,7 +6,7 @@
- + All destinations whose target lies within the current document shall be structure destinations containsStructDestination == true diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml index c2da5fad..1fe4af3e 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml @@ -7,7 +7,7 @@
- + Annotations shall be included in the structure tree unless explicitly excluded by the following subclauses diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml index 48a3ad3a..f863834f 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml @@ -7,7 +7,7 @@
- + Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, Table 167 diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml index 7363264c..dd8a3e09 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml index ca5f8307..4fd3cdbb 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml @@ -6,7 +6,7 @@
- + Markup annotations shall be enclosed within Annot structure elements structParentStandardType == 'Annot' diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml index 875d5fb1..b8ce7016 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml @@ -6,7 +6,7 @@
- + When both RC and Contents entries are present for markup annotation, they shall be textually equivalent containsRC == false || Contents == null || RC == Contents diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml index 6121681e..d9d319a4 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml @@ -7,7 +7,7 @@
- + When a file attachment annotation references a file specification dictionary, the file specification dictionary shall include an AFRelationship entry diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml index 383293ee..02a17dfb 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml @@ -6,7 +6,7 @@
- + Sound annotation cannot be used when conforming to PDF/UA-2 false diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml index 0cc71beb..7f18e605 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml @@ -6,7 +6,7 @@
- + Movie annotation cannot be used when conforming to PDF/UA-2 false diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml index 04827451..7b8f25e3 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml @@ -6,7 +6,7 @@
- + Screen annotations shall include a Contents entry Contents != null diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml index 6c5b05b0..0b6dec28 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml @@ -6,7 +6,7 @@
- + A widget annotation of zero height and width shall be an artifact width != 0 || height != 0 || structParentType == null || isArtifact == true diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml index 7d0a2d4a..0b6aa7e4 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml @@ -6,7 +6,7 @@
- + A printer's mark annotation shall be an artifact structParentType == null || isArtifact == true diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml index ed1cd928..ff4cee2a 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml @@ -6,7 +6,7 @@
- + Trap network annotations shall not be used in files conforming to PDF/UA-2 false diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml index d9329c5b..6a5a2f0f 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml @@ -6,7 +6,7 @@
- + When used as real content, Watermark annotations shall be enclosed within Annot structure elements structParentType == null || isArtifact == true || structParentStandardType == 'Annot' diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml index 0a614360..e0bb764b 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml @@ -6,7 +6,7 @@
- + 3D annotation shall include alternate description in respective Contents entry Contents != null diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml index e9e6bd84..5e8d24bd 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml @@ -6,7 +6,7 @@
- + RichMedia annotation shall include alternate description in respective Contents entry Contents != null diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml index 03693c0d..f3786c58 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml index 52bc87d0..399106a1 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml @@ -6,7 +6,7 @@
- + A Contents entry describing the author’s intent shall be provided for Ink annotation Contents != null diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml index 097169ab..93133824 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml @@ -6,7 +6,7 @@
- + Popup annotations shall not be present in the structure tree structParentType == null || isArtifact == true diff --git a/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml index d6b388f1..77456463 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml @@ -7,7 +7,7 @@
- + 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 diff --git a/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml index be302f2c..706a73cb 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml @@ -7,7 +7,7 @@
- + 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 From cff7804cd8c8ba5c6fa2c1fcc11b2caeb5885bff Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 23 Jan 2024 09:59:15 +0000 Subject: [PATCH 533/557] PDF/UA-2. Add tags --- PDF_UA/PDFUA-2-ISO32005.xml | 182 ++++++++++++++++++------------------ PDF_UA/PDFUA-2.xml | 182 ++++++++++++++++++------------------ 2 files changed, 182 insertions(+), 182 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 0e13875a..15cb4522 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -6,7 +6,7 @@
- + The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema UAIdentification_size == 1 @@ -16,7 +16,7 @@ - + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms part == 2 @@ -28,7 +28,7 @@ - + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid partPrefix == null || partPrefix == "pdfuaid" @@ -40,7 +40,7 @@ - + Property rev of the PDF/UA Identification Schema shall have namespace prefix pdfuaid revPrefix == null || revPrefix == "pdfuaid" @@ -52,7 +52,7 @@ - + The value of pdfuaid:rev shall be the four digit year /^\d{4}$/.test(rev) @@ -64,7 +64,7 @@ - + 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 StructTreeRoot_size == 1 @@ -76,7 +76,7 @@ - + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true @@ -88,7 +88,7 @@ - + Content that is not considered real shall be an artifact isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 @@ -98,7 +98,7 @@ - + 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 isNotMappedToStandardType == false @@ -112,7 +112,7 @@ - + A circular mapping shall not exist circularMappingExist != true @@ -124,7 +124,7 @@ - + Structure types shall not be role mapped to other structure types in the same namespace roleMapToSameNamespaceTag == null @@ -136,7 +136,7 @@ - + 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 remappedStandardType == null @@ -150,7 +150,7 @@ - + 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 kidsStandardTypes == 'Document' @@ -167,7 +167,7 @@ - + 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 kidsStandardTypes != 'Document' || firstChildStandardTypeNamespaceURL == 'http://iso.org/pdf2/ssn' @@ -184,7 +184,7 @@ - + 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 a child structure element contained within containsRef == true @@ -194,7 +194,7 @@ - + Conforming files shall not use the H structure type false @@ -204,7 +204,7 @@ - + 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 false @@ -214,7 +214,7 @@ - + Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry as specified in 8.8 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 orphanRefs == null @@ -226,7 +226,7 @@ - + The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None' @@ -238,7 +238,7 @@ - + A link annotation and its associated content shall be enclosed in either a Link or Reference structure element structParentStandardType == 'Link' || structParentStandardType == 'Reference' @@ -251,7 +251,7 @@ - + Link annotations that target different locations shall be in separate Link or Reference structure elements differentTargetAnnotObjectKey == null @@ -265,7 +265,7 @@ - + Multiple link annotations shall be included in a single Link or Reference structure element if they target the same location and are semantically perceived to be a single link sameTargetAnnotObjectKey == null @@ -278,7 +278,7 @@ - + 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 kidsStandardTypes == 'RB&RT' || kidsStandardTypes == 'RB&RP&RT&RP' @@ -290,7 +290,7 @@ - + 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 kidsStandardTypes == 'WP&WT&WP' @@ -302,7 +302,7 @@ - + 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 containsLabels == false || ListNumbering != 'None' @@ -314,7 +314,7 @@ - + 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 hasContentItems == false @@ -324,7 +324,7 @@ - + Tables shall be regular. Table cell shall not have intersection with other cells hasIntersection != true @@ -334,7 +334,7 @@ - + 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 numberOfColumnWithWrongRowSpan == null @@ -346,7 +346,7 @@ - + Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans) numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null @@ -358,7 +358,7 @@ - + Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans) numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null @@ -372,7 +372,7 @@ - + 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 hasConnectedHeader != false || unknownHeaders != '' @@ -385,7 +385,7 @@ - + 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 hasConnectedHeader != false || unknownHeaders == '' @@ -400,7 +400,7 @@ - + When present, the Caption element shall be the first or the last child of the structure element kidsStandardTypes.indexOf('&Caption&') < 0 @@ -413,7 +413,7 @@ - + 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 Alt != null || ActualText != null @@ -425,7 +425,7 @@ - + The math structure type shall occur only as a child of a Formula structure element parentStandardType == 'Formula' || parentStandardType == 'MathML' @@ -437,7 +437,7 @@ - + In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present unicodePUA == false || actualTextPresent == true || altPresent == true @@ -447,7 +447,7 @@ - + The ActualText entry shall not contain any PUA values containsPUA == false @@ -457,7 +457,7 @@ - + The Alt entry shall not contain any PUA values containsPUA == false @@ -467,7 +467,7 @@ - + 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 Lang_size > 0 @@ -477,7 +477,7 @@ - + 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 /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) @@ -492,7 +492,7 @@ - + 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 cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) @@ -509,7 +509,7 @@ - + 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 Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 @@ -521,7 +521,7 @@ - + All CMaps used within a file that conforms to PDF/UA-2, 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 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" || embeddedFile_size == 1 @@ -535,7 +535,7 @@ - + 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 WMode == dictWMode @@ -548,7 +548,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116 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" @@ -562,7 +562,7 @@ - + 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 Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -574,7 +574,7 @@ - + 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 renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -587,7 +587,7 @@ - + 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 renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 @@ -600,7 +600,7 @@ - + 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 isSymbolic == true || cmap31Present == true || cmap10Present == true @@ -610,7 +610,7 @@ - + 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 isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) @@ -624,7 +624,7 @@ - + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary isSymbolic == false || Encoding == null @@ -634,7 +634,7 @@ - + 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 isSymbolic == false || cmap30Present == true || cmap10Present == true @@ -644,7 +644,7 @@ - + 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 ISO 14289-2, 8.4.5.8 toUnicode != null @@ -657,7 +657,7 @@ - + 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 toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) @@ -667,7 +667,7 @@ - + A file in conformance with PDF/UA-2 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 name != ".notdef" @@ -679,7 +679,7 @@ - + Real content that does not possess the semantics of text objects and does not have an alternate textual representation shall be enclosed within Figure or Formula structure elements as appropriate itemType == 'text' || isTaggedContent == false || ActualText != null || isArtifact == true || isFigure == true || isFormula == true @@ -692,7 +692,7 @@ - + Text strings intended to be human readable shall not use the Unicode PUA containsPUA == false @@ -704,7 +704,7 @@ - + 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 gContainsConfigs == false || (Name != null && Name.length() > 0) @@ -717,7 +717,7 @@ - + The AS key shall not appear in any optional content configuration dictionary AS == null @@ -727,7 +727,7 @@ - + All destinations whose target lies within the current document shall be structure destinations isStructDestination == true @@ -740,7 +740,7 @@ - + All destinations whose target lies within the current document shall be structure destinations containsStructDestination == true @@ -753,7 +753,7 @@ - + Annotations shall be included in the structure tree unless explicitly excluded by the following subclauses (structParentType != null && isArtifact == false) || (Subtype == "Popup") || (Subtype == "PrinterMark") || (Subtype == "Widget" && width == 0 && height == 0) || ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) @@ -769,7 +769,7 @@ - + Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, Table 167 structParentType == null || isArtifact == true || (F & 1) == 0 @@ -785,7 +785,7 @@ - + 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 structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 1) @@ -802,7 +802,7 @@ - + Markup annotations shall be enclosed within Annot structure elements structParentStandardType == 'Annot' @@ -815,7 +815,7 @@ - + When both RC and Contents entries are present for markup annotation, they shall be textually equivalent containsRC == false || Contents == null || RC == Contents @@ -828,7 +828,7 @@ - + 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 Name != null || Contents != null @@ -840,7 +840,7 @@ - + A Contents entry describing the author’s intent shall be provided for Ink annotation Contents != null @@ -850,7 +850,7 @@ - + Popup annotations shall not be present in the structure tree structParentType == null || isArtifact == true @@ -865,7 +865,7 @@ - + When a file attachment annotation references a file specification dictionary, the file specification dictionary shall include an AFRelationship entry containsFS == false || AFRelationship != null @@ -878,7 +878,7 @@ - + Sound annotation cannot be used when conforming to PDF/UA-2 false @@ -888,7 +888,7 @@ - + Movie annotation cannot be used when conforming to PDF/UA-2 false @@ -898,7 +898,7 @@ - + Screen annotations shall include a Contents entry Contents != null @@ -908,7 +908,7 @@ - + A widget annotation of zero height and width shall be an artifact width != 0 || height != 0 || structParentType == null || isArtifact == true @@ -923,7 +923,7 @@ - + A printer's mark annotation shall be an artifact structParentType == null || isArtifact == true @@ -938,7 +938,7 @@ - + Trap network annotations shall not be used in files conforming to PDF/UA-2 false @@ -948,7 +948,7 @@ - + When used as real content, Watermark annotations shall be enclosed within Annot structure elements structParentType == null || isArtifact == true || structParentStandardType == 'Annot' @@ -961,7 +961,7 @@ - + 3D annotation shall include alternate description in respective Contents entry Contents != null @@ -973,7 +973,7 @@ - + RichMedia annotation shall include alternate description in respective Contents entry Contents != null @@ -985,7 +985,7 @@ - + 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 annots_size == 0 || Tabs == 'A' || Tabs == 'W' || Tabs == 'S' @@ -997,7 +997,7 @@ - + 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 Contents == null || Alt == null || Contents == Alt @@ -1010,7 +1010,7 @@ - + Each widget annotation shall be enclosed by a Form structure element unless the widget annotation is an artifact structParentType == null || structParentStandardType == 'Form' || isArtifact == true @@ -1023,7 +1023,7 @@ - + A Form structure element shall contain at most one widget annotation widgetAnnotsCount <= 1 @@ -1035,7 +1035,7 @@ - + XFA forms shall not be present containsXFA == false @@ -1047,7 +1047,7 @@ - + If a label for a widget annotation is not present, a Contents entry shall be provided to supply description and context for the widget containsLbl == true || Contents != null @@ -1057,7 +1057,7 @@ - + If an additional action (AA) entry is present in a widget annotation dictionary, the respective widget's Contents entry shall be present containsAA == false || Contents != null @@ -1069,7 +1069,7 @@ - + For text fields, when an RV entry is present a V entry shall also be present, and they shall be textually equivalent containsRV == false || (V != null && RV == V) @@ -1085,7 +1085,7 @@ - + If a portion of the appearance of a signature is represented by a graphic, alternative text shall be provided for that graphic isSignature == false || Alt != null @@ -1095,7 +1095,7 @@ - + The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary shall contain a dc:title entry dc_title != null @@ -1107,7 +1107,7 @@ - + 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 DisplayDocTitle == true @@ -1122,7 +1122,7 @@ - + The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document containsDesc == true || presentInEmbeddedFiles == false diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 4d10a67a..e2f97663 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -6,7 +6,7 @@
- + The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema UAIdentification_size == 1 @@ -16,7 +16,7 @@ - + The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms part == 2 @@ -28,7 +28,7 @@ - + Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid partPrefix == null || partPrefix == "pdfuaid" @@ -40,7 +40,7 @@ - + Property rev of the PDF/UA Identification Schema shall have namespace prefix pdfuaid revPrefix == null || revPrefix == "pdfuaid" @@ -52,7 +52,7 @@ - + The value of pdfuaid:rev shall be the four digit year /^\d{4}$/.test(rev) @@ -64,7 +64,7 @@ - + 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 StructTreeRoot_size == 1 @@ -76,7 +76,7 @@ - + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true @@ -88,7 +88,7 @@ - + Content that is not considered real shall be an artifact isTaggedContent == true || parentsTags.split('&').filter(elem => elem == 'Artifact').length > 0 @@ -98,7 +98,7 @@ - + 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 isNotMappedToStandardType == false @@ -112,7 +112,7 @@ - + A circular mapping shall not exist circularMappingExist != true @@ -124,7 +124,7 @@ - + Structure types shall not be role mapped to other structure types in the same namespace roleMapToSameNamespaceTag == null @@ -136,7 +136,7 @@ - + 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 remappedStandardType == null @@ -150,7 +150,7 @@ - + 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 kidsStandardTypes == 'Document' @@ -167,7 +167,7 @@ - + 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 kidsStandardTypes != 'Document' || firstChildStandardTypeNamespaceURL == 'http://iso.org/pdf2/ssn' @@ -184,7 +184,7 @@ - + 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 a child structure element contained within containsRef == true @@ -194,7 +194,7 @@ - + Conforming files shall not use the H structure type false @@ -204,7 +204,7 @@ - + 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 false @@ -214,7 +214,7 @@ - + Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry as specified in 8.8 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 orphanRefs == null @@ -226,7 +226,7 @@ - + The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None' @@ -238,7 +238,7 @@ - + A link annotation and its associated content shall be enclosed in either a Link or Reference structure element structParentStandardType == 'Link' || structParentStandardType == 'Reference' @@ -251,7 +251,7 @@ - + Link annotations that target different locations shall be in separate Link or Reference structure elements differentTargetAnnotObjectKey == null @@ -265,7 +265,7 @@ - + Multiple link annotations shall be included in a single Link or Reference structure element if they target the same location and are semantically perceived to be a single link sameTargetAnnotObjectKey == null @@ -278,7 +278,7 @@ - + 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 kidsStandardTypes == 'RB&RT' || kidsStandardTypes == 'RB&RP&RT&RP' @@ -290,7 +290,7 @@ - + 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 kidsStandardTypes == 'WP&WT&WP' @@ -302,7 +302,7 @@ - + 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 containsLabels == false || ListNumbering != 'None' @@ -314,7 +314,7 @@ - + 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 hasContentItems == false @@ -324,7 +324,7 @@ - + Tables shall be regular. Table cell shall not have intersection with other cells hasIntersection != true @@ -334,7 +334,7 @@ - + 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 numberOfColumnWithWrongRowSpan == null @@ -346,7 +346,7 @@ - + Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans) numberOfRowWithWrongColumnSpan == null || wrongColumnSpan != null @@ -358,7 +358,7 @@ - + Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans) numberOfRowWithWrongColumnSpan == null || wrongColumnSpan == null @@ -372,7 +372,7 @@ - + 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 hasConnectedHeader != false || unknownHeaders != '' @@ -385,7 +385,7 @@ - + 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 hasConnectedHeader != false || unknownHeaders == '' @@ -400,7 +400,7 @@ - + When present, the Caption element shall be the first or the last child of the structure element kidsStandardTypes.indexOf('&Caption&') < 0 @@ -413,7 +413,7 @@ - + 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 Alt != null || ActualText != null @@ -425,7 +425,7 @@ - + The math structure type shall occur only as a child of a Formula structure element parentStandardType == 'Formula' || parentStandardType == 'MathML' @@ -437,7 +437,7 @@ - + In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present unicodePUA == false || actualTextPresent == true || altPresent == true @@ -447,7 +447,7 @@ - + The ActualText entry shall not contain any PUA values containsPUA == false @@ -457,7 +457,7 @@ - + The Alt entry shall not contain any PUA values containsPUA == false @@ -467,7 +467,7 @@ - + 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 Lang_size > 0 @@ -477,7 +477,7 @@ - + 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 /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/.test(unicodeValue) @@ -492,7 +492,7 @@ - + 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 cmapName == "Identity-H" || cmapName == "Identity-V" || (CIDFontOrdering != null && CIDFontOrdering == CMapOrdering && CIDFontRegistry != null && CIDFontRegistry == CMapRegistry && CIDFontSupplement != null && CMapSupplement != null && CIDFontSupplement <= CMapSupplement) @@ -509,7 +509,7 @@ - + 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 Subtype != "CIDFontType2" || CIDToGIDMap != null || fontFile_size == 0 @@ -521,7 +521,7 @@ - + All CMaps used within a file that conforms to PDF/UA-2, 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 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" || embeddedFile_size == 1 @@ -535,7 +535,7 @@ - + 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 WMode == dictWMode @@ -548,7 +548,7 @@ - + A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116 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" @@ -562,7 +562,7 @@ - + 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 Subtype == "Type3" || Subtype == "Type0" || renderingMode == 3 || fontFile_size == 1 @@ -574,7 +574,7 @@ - + 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 renderingMode == 3 || isGlyphPresent == null || isGlyphPresent == true @@ -587,7 +587,7 @@ - + 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 renderingMode == 3 || widthFromFontProgram == null || widthFromDictionary == null || Math.abs(widthFromFontProgram - widthFromDictionary) <= 1 @@ -600,7 +600,7 @@ - + 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 isSymbolic == true || cmap31Present == true || cmap10Present == true @@ -610,7 +610,7 @@ - + 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 isSymbolic == true || ((Encoding == "MacRomanEncoding" || Encoding == "WinAnsiEncoding") && (containsDifferences == false || differencesAreUnicodeCompliant == true)) @@ -624,7 +624,7 @@ - + Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary isSymbolic == false || Encoding == null @@ -634,7 +634,7 @@ - + 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 isSymbolic == false || cmap30Present == true || cmap10Present == true @@ -644,7 +644,7 @@ - + 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 ISO 14289-2, 8.4.5.8 toUnicode != null @@ -657,7 +657,7 @@ - + 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 toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) @@ -667,7 +667,7 @@ - + A file in conformance with PDF/UA-2 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 name != ".notdef" @@ -679,7 +679,7 @@ - + Real content that does not possess the semantics of text objects and does not have an alternate textual representation shall be enclosed within Figure or Formula structure elements as appropriate itemType == 'text' || isTaggedContent == false || ActualText != null || isArtifact == true || isFigure == true || isFormula == true @@ -692,7 +692,7 @@ - + Text strings intended to be human readable shall not use the Unicode PUA containsPUA == false @@ -704,7 +704,7 @@ - + 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 gContainsConfigs == false || (Name != null && Name.length() > 0) @@ -717,7 +717,7 @@ - + The AS key shall not appear in any optional content configuration dictionary AS == null @@ -727,7 +727,7 @@ - + All destinations whose target lies within the current document shall be structure destinations isStructDestination == true @@ -740,7 +740,7 @@ - + All destinations whose target lies within the current document shall be structure destinations containsStructDestination == true @@ -753,7 +753,7 @@ - + Annotations shall be included in the structure tree unless explicitly excluded by the following subclauses (structParentType != null && isArtifact == false) || (Subtype == "Popup") || (Subtype == "PrinterMark") || (Subtype == "Widget" && width == 0 && height == 0) || ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) @@ -769,7 +769,7 @@ - + Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, Table 167 structParentType == null || isArtifact == true || (F & 1) == 0 @@ -785,7 +785,7 @@ - + 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 structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 1) @@ -802,7 +802,7 @@ - + Markup annotations shall be enclosed within Annot structure elements structParentStandardType == 'Annot' @@ -815,7 +815,7 @@ - + When both RC and Contents entries are present for markup annotation, they shall be textually equivalent containsRC == false || Contents == null || RC == Contents @@ -828,7 +828,7 @@ - + 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 Name != null || Contents != null @@ -840,7 +840,7 @@ - + A Contents entry describing the author’s intent shall be provided for Ink annotation Contents != null @@ -850,7 +850,7 @@ - + Popup annotations shall not be present in the structure tree structParentType == null || isArtifact == true @@ -865,7 +865,7 @@ - + When a file attachment annotation references a file specification dictionary, the file specification dictionary shall include an AFRelationship entry containsFS == false || AFRelationship != null @@ -878,7 +878,7 @@ - + Sound annotation cannot be used when conforming to PDF/UA-2 false @@ -888,7 +888,7 @@ - + Movie annotation cannot be used when conforming to PDF/UA-2 false @@ -898,7 +898,7 @@ - + Screen annotations shall include a Contents entry Contents != null @@ -908,7 +908,7 @@ - + A widget annotation of zero height and width shall be an artifact width != 0 || height != 0 || structParentType == null || isArtifact == true @@ -923,7 +923,7 @@ - + A printer's mark annotation shall be an artifact structParentType == null || isArtifact == true @@ -938,7 +938,7 @@ - + Trap network annotations shall not be used in files conforming to PDF/UA-2 false @@ -948,7 +948,7 @@ - + When used as real content, Watermark annotations shall be enclosed within Annot structure elements structParentType == null || isArtifact == true || structParentStandardType == 'Annot' @@ -961,7 +961,7 @@ - + 3D annotation shall include alternate description in respective Contents entry Contents != null @@ -973,7 +973,7 @@ - + RichMedia annotation shall include alternate description in respective Contents entry Contents != null @@ -985,7 +985,7 @@ - + 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 annots_size == 0 || Tabs == 'A' || Tabs == 'W' || Tabs == 'S' @@ -997,7 +997,7 @@ - + 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 Contents == null || Alt == null || Contents == Alt @@ -1010,7 +1010,7 @@ - + Each widget annotation shall be enclosed by a Form structure element unless the widget annotation is an artifact structParentType == null || structParentStandardType == 'Form' || isArtifact == true @@ -1023,7 +1023,7 @@ - + A Form structure element shall contain at most one widget annotation widgetAnnotsCount <= 1 @@ -1035,7 +1035,7 @@ - + XFA forms shall not be present containsXFA == false @@ -1047,7 +1047,7 @@ - + If a label for a widget annotation is not present, a Contents entry shall be provided to supply description and context for the widget containsLbl == true || Contents != null @@ -1057,7 +1057,7 @@ - + If an additional action (AA) entry is present in a widget annotation dictionary, the respective widget's Contents entry shall be present containsAA == false || Contents != null @@ -1069,7 +1069,7 @@ - + For text fields, when an RV entry is present a V entry shall also be present, and they shall be textually equivalent containsRV == false || (V != null && RV == V) @@ -1085,7 +1085,7 @@ - + If a portion of the appearance of a signature is represented by a graphic, alternative text shall be provided for that graphic isSignature == false || Alt != null @@ -1095,7 +1095,7 @@ - + The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary shall contain a dc:title entry dc_title != null @@ -1107,7 +1107,7 @@ - + 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 DisplayDocTitle == true @@ -1122,7 +1122,7 @@ - + The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document containsDesc == true || presentInEmbeddedFiles == false From e6ea5d0cf13f34e47fd81723d530341fbe9d9c4e Mon Sep 17 00:00:00 2001 From: Maxim Date: Sat, 13 Jan 2024 20:51:41 +0300 Subject: [PATCH 534/557] ISO 32005 profile. Add tags --- PDF_UA/ISO-32005-Tagged.xml | 3318 +++++++++++++++++------------------ 1 file changed, 1659 insertions(+), 1659 deletions(-) diff --git a/PDF_UA/ISO-32005-Tagged.xml b/PDF_UA/ISO-32005-Tagged.xml index 3ac64161..5315a015 100644 --- a/PDF_UA/ISO-32005-Tagged.xml +++ b/PDF_UA/ISO-32005-Tagged.xml @@ -6,7 +6,7 @@
- + Every structure type should be mapped to a standard structure type isNotMappedToStandardType == false @@ -20,7 +20,7 @@ - + StructTreeRoot shall contain exactly one <Document> kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 1 @@ -32,7 +32,7 @@ - + StructTreeRoot shall not contain <DocumentFragment> parentStandardType != 'StructTreeRoot' @@ -44,7 +44,7 @@ - + StructTreeRoot shall not contain <Part> parentStandardType != 'StructTreeRoot' @@ -56,7 +56,7 @@ - + StructTreeRoot shall not contain <Art> parentStandardType != 'StructTreeRoot' @@ -68,7 +68,7 @@ - + StructTreeRoot shall not contain <Div> parentStandardType != 'StructTreeRoot' @@ -80,7 +80,7 @@ - + StructTreeRoot shall not contain <Sect> parentStandardType != 'StructTreeRoot' @@ -92,7 +92,7 @@ - + StructTreeRoot shall not contain <TOC> parentStandardType != 'StructTreeRoot' @@ -104,7 +104,7 @@ - + StructTreeRoot shall not contain <TOCI> parentStandardType != 'StructTreeRoot' @@ -116,7 +116,7 @@ - + StructTreeRoot shall not contain <Aside> parentStandardType != 'StructTreeRoot' @@ -128,7 +128,7 @@ - + StructTreeRoot shall not contain <BlockQuote> parentStandardType != 'StructTreeRoot' @@ -140,7 +140,7 @@ - + StructTreeRoot shall not contain <NonStruct> parentStandardType != 'StructTreeRoot' @@ -152,7 +152,7 @@ - + StructTreeRoot shall not contain <Private> parentStandardType != 'StructTreeRoot' @@ -164,7 +164,7 @@ - + StructTreeRoot shall not contain <P> parentStandardType != 'StructTreeRoot' @@ -176,7 +176,7 @@ - + StructTreeRoot shall not contain <Note> parentStandardType != 'StructTreeRoot' @@ -188,7 +188,7 @@ - + StructTreeRoot shall not contain <Code> parentStandardType != 'StructTreeRoot' @@ -200,7 +200,7 @@ - + StructTreeRoot shall not contain <Hn> parentStandardType != 'StructTreeRoot' @@ -212,7 +212,7 @@ - + StructTreeRoot shall not contain <H> parentStandardType != 'StructTreeRoot' @@ -224,7 +224,7 @@ - + StructTreeRoot shall not contain <Title> parentStandardType != 'StructTreeRoot' @@ -236,7 +236,7 @@ - + StructTreeRoot shall not contain <Sub> parentStandardType != 'StructTreeRoot' @@ -248,7 +248,7 @@ - + StructTreeRoot shall not contain <Lbl> parentStandardType != 'StructTreeRoot' @@ -260,7 +260,7 @@ - + StructTreeRoot shall not contain <Em> parentStandardType != 'StructTreeRoot' @@ -272,7 +272,7 @@ - + StructTreeRoot shall not contain <Strong> parentStandardType != 'StructTreeRoot' @@ -284,7 +284,7 @@ - + StructTreeRoot shall not contain <Span> parentStandardType != 'StructTreeRoot' @@ -296,7 +296,7 @@ - + StructTreeRoot shall not contain <Quote> parentStandardType != 'StructTreeRoot' @@ -308,7 +308,7 @@ - + StructTreeRoot shall not contain <Link> parentStandardType != 'StructTreeRoot' @@ -320,7 +320,7 @@ - + StructTreeRoot shall not contain <Reference> parentStandardType != 'StructTreeRoot' @@ -332,7 +332,7 @@ - + StructTreeRoot shall not contain <Annot> parentStandardType != 'StructTreeRoot' @@ -344,7 +344,7 @@ - + StructTreeRoot shall not contain <Form> parentStandardType != 'StructTreeRoot' @@ -356,7 +356,7 @@ - + StructTreeRoot shall not contain <Ruby> parentStandardType != 'StructTreeRoot' @@ -368,7 +368,7 @@ - + StructTreeRoot shall not contain <RB> parentStandardType != 'StructTreeRoot' @@ -380,7 +380,7 @@ - + StructTreeRoot shall not contain <RT> parentStandardType != 'StructTreeRoot' @@ -392,7 +392,7 @@ - + StructTreeRoot shall not contain <RP> parentStandardType != 'StructTreeRoot' @@ -404,7 +404,7 @@ - + StructTreeRoot shall not contain <Warichu> parentStandardType != 'StructTreeRoot' @@ -416,7 +416,7 @@ - + StructTreeRoot shall not contain <WT> parentStandardType != 'StructTreeRoot' @@ -428,7 +428,7 @@ - + StructTreeRoot shall not contain <WP> parentStandardType != 'StructTreeRoot' @@ -440,7 +440,7 @@ - + StructTreeRoot shall not contain <FENote> parentStandardType != 'StructTreeRoot' @@ -452,7 +452,7 @@ - + StructTreeRoot shall not contain <Index> parentStandardType != 'StructTreeRoot' @@ -464,7 +464,7 @@ - + StructTreeRoot shall not contain <L> parentStandardType != 'StructTreeRoot' @@ -476,7 +476,7 @@ - + StructTreeRoot shall not contain <LI> parentStandardType != 'StructTreeRoot' @@ -488,7 +488,7 @@ - + StructTreeRoot shall not contain <LBody> parentStandardType != 'StructTreeRoot' @@ -500,7 +500,7 @@ - + StructTreeRoot shall not contain <BibEntry> parentStandardType != 'StructTreeRoot' @@ -512,7 +512,7 @@ - + StructTreeRoot shall not contain <Table> parentStandardType != 'StructTreeRoot' @@ -524,7 +524,7 @@ - + StructTreeRoot shall not contain <TR> parentStandardType != 'StructTreeRoot' @@ -536,7 +536,7 @@ - + StructTreeRoot shall not contain <TH> parentStandardType != 'StructTreeRoot' @@ -548,7 +548,7 @@ - + StructTreeRoot shall not contain <TD> parentStandardType != 'StructTreeRoot' @@ -560,7 +560,7 @@ - + StructTreeRoot shall not contain <THead> parentStandardType != 'StructTreeRoot' @@ -572,7 +572,7 @@ - + StructTreeRoot shall not contain <TBody> parentStandardType != 'StructTreeRoot' @@ -584,7 +584,7 @@ - + StructTreeRoot shall not contain <TFoot> parentStandardType != 'StructTreeRoot' @@ -596,7 +596,7 @@ - + StructTreeRoot shall not contain <Caption> parentStandardType != 'StructTreeRoot' @@ -608,7 +608,7 @@ - + StructTreeRoot shall not contain <Figure> parentStandardType != 'StructTreeRoot' @@ -620,7 +620,7 @@ - + StructTreeRoot shall not contain <Formula> parentStandardType != 'StructTreeRoot' @@ -632,7 +632,7 @@ - + StructTreeRoot shall not contain <Artifact> parentStandardType != 'StructTreeRoot' @@ -644,7 +644,7 @@ - + StructTreeRoot shall not contain content items hasContentItems == false @@ -656,7 +656,7 @@ - + <Document> shall not contain <TOCI> parentStandardType != 'Document' @@ -668,7 +668,7 @@ - + <Document> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -680,7 +680,7 @@ - + <Document> shall not contain <Sub> parentStandardType != 'Document' @@ -692,7 +692,7 @@ - + <Document> shall not contain <Lbl> parentStandardType != 'Document' @@ -704,7 +704,7 @@ - + <Document> shall not contain <Em> parentStandardType != 'Document' @@ -716,7 +716,7 @@ - + <Document> shall not contain <Strong> parentStandardType != 'Document' @@ -728,7 +728,7 @@ - + <Document> shall not contain <Span> parentStandardType != 'Document' @@ -740,7 +740,7 @@ - + <Document> shall not contain <Quote> parentStandardType != 'Document' @@ -752,7 +752,7 @@ - + <Document> shall not contain <Reference> parentStandardType != 'Document' @@ -764,7 +764,7 @@ - + <Document> shall not contain <Ruby> parentStandardType != 'Document' @@ -776,7 +776,7 @@ - + <Document> shall not contain <RB> parentStandardType != 'Document' @@ -788,7 +788,7 @@ - + <Document> shall not contain <RT> parentStandardType != 'Document' @@ -800,7 +800,7 @@ - + <Document> shall not contain <RP> parentStandardType != 'Document' @@ -812,7 +812,7 @@ - + <Document> shall not contain <Warichu> parentStandardType != 'Document' @@ -824,7 +824,7 @@ - + <Document> shall not contain <WT> parentStandardType != 'Document' @@ -836,7 +836,7 @@ - + <Document> shall not contain <WP> parentStandardType != 'Document' @@ -848,7 +848,7 @@ - + <Document> shall not contain <LI> parentStandardType != 'Document' @@ -860,7 +860,7 @@ - + <Document> shall not contain <LBody> parentStandardType != 'Document' @@ -872,7 +872,7 @@ - + <Document> shall not contain <BibEntry> parentStandardType != 'Document' @@ -884,7 +884,7 @@ - + <Document> shall not contain <TR> parentStandardType != 'Document' @@ -896,7 +896,7 @@ - + <Document> shall not contain <TH> parentStandardType != 'Document' @@ -908,7 +908,7 @@ - + <Document> shall not contain <TD> parentStandardType != 'Document' @@ -920,7 +920,7 @@ - + <Document> shall not contain <THead> parentStandardType != 'Document' @@ -932,7 +932,7 @@ - + <Document> shall not contain <TBody> parentStandardType != 'Document' @@ -944,7 +944,7 @@ - + <Document> shall not contain <TFoot> parentStandardType != 'Document' @@ -956,7 +956,7 @@ - + <Document> shall not contain <Caption> parentStandardType != 'Document' @@ -968,7 +968,7 @@ - + <Document> shall not contain content items hasContentItems == false @@ -980,7 +980,7 @@ - + <DocumentFragment> shall not contain <TOCI> parentStandardType != 'DocumentFragment' @@ -992,7 +992,7 @@ - + <DocumentFragment> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -1004,7 +1004,7 @@ - + <DocumentFragment> shall not contain <Sub> parentStandardType != 'DocumentFragment' @@ -1016,7 +1016,7 @@ - + <DocumentFragment> shall not contain <Lbl> parentStandardType != 'DocumentFragment' @@ -1028,7 +1028,7 @@ - + <DocumentFragment> shall not contain <Em> parentStandardType != 'DocumentFragment' @@ -1040,7 +1040,7 @@ - + <DocumentFragment> shall not contain <Strong> parentStandardType != 'DocumentFragment' @@ -1052,7 +1052,7 @@ - + <DocumentFragment> shall not contain <Span> parentStandardType != 'DocumentFragment' @@ -1064,7 +1064,7 @@ - + <DocumentFragment> shall not contain <Quote> parentStandardType != 'DocumentFragment' @@ -1076,7 +1076,7 @@ - + <DocumentFragment> shall not contain <Reference> parentStandardType != 'DocumentFragment' @@ -1088,7 +1088,7 @@ - + <DocumentFragment> shall not contain <Ruby> parentStandardType != 'DocumentFragment' @@ -1100,7 +1100,7 @@ - + <DocumentFragment> shall not contain <RB> parentStandardType != 'DocumentFragment' @@ -1112,7 +1112,7 @@ - + <DocumentFragment> shall not contain <RT> parentStandardType != 'DocumentFragment' @@ -1124,7 +1124,7 @@ - + <DocumentFragment> shall not contain <RP> parentStandardType != 'DocumentFragment' @@ -1136,7 +1136,7 @@ - + <DocumentFragment> shall not contain <Warichu> parentStandardType != 'DocumentFragment' @@ -1148,7 +1148,7 @@ - + <DocumentFragment> shall not contain <WT> parentStandardType != 'DocumentFragment' @@ -1160,7 +1160,7 @@ - + <DocumentFragment> shall not contain <WP> parentStandardType != 'DocumentFragment' @@ -1172,7 +1172,7 @@ - + <DocumentFragment> shall not contain <LI> parentStandardType != 'DocumentFragment' @@ -1184,7 +1184,7 @@ - + <DocumentFragment> shall not contain <LBody> parentStandardType != 'DocumentFragment' @@ -1196,7 +1196,7 @@ - + <DocumentFragment> shall not contain <BibEntry> parentStandardType != 'DocumentFragment' @@ -1208,7 +1208,7 @@ - + <DocumentFragment> shall not contain <TR> parentStandardType != 'DocumentFragment' @@ -1220,7 +1220,7 @@ - + <DocumentFragment> shall not contain <TH> parentStandardType != 'DocumentFragment' @@ -1232,7 +1232,7 @@ - + <DocumentFragment> shall not contain <TD> parentStandardType != 'DocumentFragment' @@ -1244,7 +1244,7 @@ - + <DocumentFragment> shall not contain <THead> parentStandardType != 'DocumentFragment' @@ -1256,7 +1256,7 @@ - + <DocumentFragment> shall not contain <TBody> parentStandardType != 'DocumentFragment' @@ -1268,7 +1268,7 @@ - + <DocumentFragment> shall not contain <TFoot> parentStandardType != 'DocumentFragment' @@ -1280,7 +1280,7 @@ - + <DocumentFragment> shall not contain <Caption> parentStandardType != 'DocumentFragment' @@ -1292,7 +1292,7 @@ - + <DocumentFragment> shall not contain content items hasContentItems == false @@ -1304,7 +1304,7 @@ - + <Part> shall not contain <Em> parentStandardType != 'Part' @@ -1316,7 +1316,7 @@ - + <Part> shall not contain <Strong> parentStandardType != 'Part' @@ -1328,7 +1328,7 @@ - + <Part> shall not contain <Span> parentStandardType != 'Part' @@ -1340,7 +1340,7 @@ - + <Part> shall not contain <Quote> parentStandardType != 'Part' @@ -1352,7 +1352,7 @@ - + <Part> shall not contain <Ruby> parentStandardType != 'Part' @@ -1364,7 +1364,7 @@ - + <Part> shall not contain <RB> parentStandardType != 'Part' @@ -1376,7 +1376,7 @@ - + <Part> shall not contain <RT> parentStandardType != 'Part' @@ -1388,7 +1388,7 @@ - + <Part> shall not contain <RP> parentStandardType != 'Part' @@ -1400,7 +1400,7 @@ - + <Part> shall not contain <Warichu> parentStandardType != 'Part' @@ -1412,7 +1412,7 @@ - + <Part> shall not contain <WT> parentStandardType != 'Part' @@ -1424,7 +1424,7 @@ - + <Part> shall not contain <WP> parentStandardType != 'Part' @@ -1436,7 +1436,7 @@ - + <Part> shall not contain <LI> parentStandardType != 'Part' @@ -1448,7 +1448,7 @@ - + <Part> shall not contain <LBody> parentStandardType != 'Part' @@ -1460,7 +1460,7 @@ - + <Part> shall not contain <TR> parentStandardType != 'Part' @@ -1472,7 +1472,7 @@ - + <Part> shall not contain <TH> parentStandardType != 'Part' @@ -1484,7 +1484,7 @@ - + <Part> shall not contain <TD> parentStandardType != 'Part' @@ -1496,7 +1496,7 @@ - + <Part> shall not contain <THead> parentStandardType != 'Part' @@ -1508,7 +1508,7 @@ - + <Part> shall not contain <TBody> parentStandardType != 'Part' @@ -1520,7 +1520,7 @@ - + <Part> shall not contain <TFoot> parentStandardType != 'Part' @@ -1532,7 +1532,7 @@ - + <Part> shall not contain content items hasContentItems == false @@ -1544,7 +1544,7 @@ - + <Div> shall not contain content items hasContentItems == false @@ -1556,7 +1556,7 @@ - + <Art> shall not contain <Document> parentStandardType != 'Art' @@ -1568,7 +1568,7 @@ - + <Art> shall not contain <Art> parentStandardType != 'Art' @@ -1580,7 +1580,7 @@ - + <Art> shall not contain <TOCI> parentStandardType != 'Art' @@ -1592,7 +1592,7 @@ - + <Art> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -1604,7 +1604,7 @@ - + <Art> shall not contain <Sub> parentStandardType != 'Art' @@ -1616,7 +1616,7 @@ - + <Art> shall not contain <Em> parentStandardType != 'Art' @@ -1628,7 +1628,7 @@ - + <Art> shall not contain <Strong> parentStandardType != 'Art' @@ -1640,7 +1640,7 @@ - + <Art> shall not contain <Span> parentStandardType != 'Art' @@ -1652,7 +1652,7 @@ - + <Art> shall not contain <Quote> parentStandardType != 'Art' @@ -1664,7 +1664,7 @@ - + <Art> shall not contain <Reference> parentStandardType != 'Art' @@ -1676,7 +1676,7 @@ - + <Art> shall not contain <Ruby> parentStandardType != 'Art' @@ -1688,7 +1688,7 @@ - + <Art> shall not contain <RB> parentStandardType != 'Art' @@ -1700,7 +1700,7 @@ - + <Art> shall not contain <RT> parentStandardType != 'Art' @@ -1712,7 +1712,7 @@ - + <Art> shall not contain <RP> parentStandardType != 'Art' @@ -1724,7 +1724,7 @@ - + <Art> shall not contain <Warichu> parentStandardType != 'Art' @@ -1736,7 +1736,7 @@ - + <Art> shall not contain <WT> parentStandardType != 'Art' @@ -1748,7 +1748,7 @@ - + <Art> shall not contain <WP> parentStandardType != 'Art' @@ -1760,7 +1760,7 @@ - + <Art> shall not contain <LI> parentStandardType != 'Art' @@ -1772,7 +1772,7 @@ - + <Art> shall not contain <LBody> parentStandardType != 'Art' @@ -1784,7 +1784,7 @@ - + <Art> shall not contain <BibEntry> parentStandardType != 'Art' @@ -1796,7 +1796,7 @@ - + <Art> shall not contain <TR> parentStandardType != 'Art' @@ -1808,7 +1808,7 @@ - + <Art> shall not contain <TH> parentStandardType != 'Art' @@ -1820,7 +1820,7 @@ - + <Art> shall not contain <TD> parentStandardType != 'Art' @@ -1832,7 +1832,7 @@ - + <Art> shall not contain <THead> parentStandardType != 'Art' @@ -1844,7 +1844,7 @@ - + <Art> shall not contain <TBody> parentStandardType != 'Art' @@ -1856,7 +1856,7 @@ - + <Art> shall not contain <TFoot> parentStandardType != 'Art' @@ -1868,7 +1868,7 @@ - + <Art> shall not contain content items hasContentItems == false @@ -1880,7 +1880,7 @@ - + <Sect> shall not contain <Document> parentStandardType != 'Sect' @@ -1892,7 +1892,7 @@ - + <Sect> shall not contain <TOCI> parentStandardType != 'Sect' @@ -1904,7 +1904,7 @@ - + <Sect> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -1916,7 +1916,7 @@ - + <Sect> shall not contain <Sub> parentStandardType != 'Sect' @@ -1928,7 +1928,7 @@ - + <Sect> shall not contain <Em> parentStandardType != 'Sect' @@ -1940,7 +1940,7 @@ - + <Sect> shall not contain <Strong> parentStandardType != 'Sect' @@ -1952,7 +1952,7 @@ - + <Sect> shall not contain <Span> parentStandardType != 'Sect' @@ -1964,7 +1964,7 @@ - + <Sect> shall not contain <Quote> parentStandardType != 'Sect' @@ -1976,7 +1976,7 @@ - + <Sect> shall not contain <Reference> parentStandardType != 'Sect' @@ -1988,7 +1988,7 @@ - + <Sect> shall not contain <Ruby> parentStandardType != 'Sect' @@ -2000,7 +2000,7 @@ - + <Sect> shall not contain <RB> parentStandardType != 'Sect' @@ -2012,7 +2012,7 @@ - + <Sect> shall not contain <RT> parentStandardType != 'Sect' @@ -2024,7 +2024,7 @@ - + <Sect> shall not contain <RP> parentStandardType != 'Sect' @@ -2036,7 +2036,7 @@ - + <Sect> shall not contain <Warichu> parentStandardType != 'Sect' @@ -2048,7 +2048,7 @@ - + <Sect> shall not contain <WT> parentStandardType != 'Sect' @@ -2060,7 +2060,7 @@ - + <Sect> shall not contain <WP> parentStandardType != 'Sect' @@ -2072,7 +2072,7 @@ - + <Sect> shall not contain <LI> parentStandardType != 'Sect' @@ -2084,7 +2084,7 @@ - + <Sect> shall not contain <LBody> parentStandardType != 'Sect' @@ -2096,7 +2096,7 @@ - + <Sect> shall not contain <BibEntry> parentStandardType != 'Sect' @@ -2108,7 +2108,7 @@ - + <Sect> shall not contain <TR> parentStandardType != 'Sect' @@ -2120,7 +2120,7 @@ - + <Sect> shall not contain <TH> parentStandardType != 'Sect' @@ -2132,7 +2132,7 @@ - + <Sect> shall not contain <TD> parentStandardType != 'Sect' @@ -2144,7 +2144,7 @@ - + <Sect> shall not contain <THead> parentStandardType != 'Sect' @@ -2156,7 +2156,7 @@ - + <Sect> shall not contain <TBody> parentStandardType != 'Sect' @@ -2168,7 +2168,7 @@ - + <Sect> shall not contain <TFoot> parentStandardType != 'Sect' @@ -2180,7 +2180,7 @@ - + <Sect> shall not contain content items hasContentItems == false @@ -2192,7 +2192,7 @@ - + <TOC> shall not contain <Document> parentStandardType != 'TOC' @@ -2204,7 +2204,7 @@ - + <TOC> shall not contain <DocumentFragment> parentStandardType != 'TOC' @@ -2216,7 +2216,7 @@ - + <TOC> shall not contain <Part> parentStandardType != 'TOC' @@ -2228,7 +2228,7 @@ - + <TOC> shall not contain <Art> parentStandardType != 'TOC' @@ -2240,7 +2240,7 @@ - + <TOC> shall not contain <Div> parentStandardType != 'TOC' @@ -2252,7 +2252,7 @@ - + <TOC> shall not contain <Sect> parentStandardType != 'TOC' @@ -2264,7 +2264,7 @@ - + <TOC> shall not contain <Aside> parentStandardType != 'TOC' @@ -2276,7 +2276,7 @@ - + <TOC> shall not contain <BlockQuote> parentStandardType != 'TOC' @@ -2288,7 +2288,7 @@ - + <TOC> shall not contain <P> parentStandardType != 'TOC' @@ -2300,7 +2300,7 @@ - + <TOC> shall not contain <Note> parentStandardType != 'TOC' @@ -2312,7 +2312,7 @@ - + <TOC> shall not contain <Code> parentStandardType != 'TOC' @@ -2324,7 +2324,7 @@ - + <TOC> shall not contain <Hn> parentStandardType != 'TOC' @@ -2336,7 +2336,7 @@ - + <TOC> shall not contain <H> parentStandardType != 'TOC' @@ -2348,7 +2348,7 @@ - + <TOC> shall not contain <Title> parentStandardType != 'TOC' @@ -2360,7 +2360,7 @@ - + <TOC> shall not contain <Sub> parentStandardType != 'TOC' @@ -2372,7 +2372,7 @@ - + <TOC> shall not contain <Lbl> parentStandardType != 'TOC' @@ -2384,7 +2384,7 @@ - + <TOC> shall not contain <Em> parentStandardType != 'TOC' @@ -2396,7 +2396,7 @@ - + <TOC> shall not contain <Strong> parentStandardType != 'TOC' @@ -2408,7 +2408,7 @@ - + <TOC> shall not contain <Span> parentStandardType != 'TOC' @@ -2420,7 +2420,7 @@ - + <TOC> shall not contain <Quote> parentStandardType != 'TOC' @@ -2432,7 +2432,7 @@ - + <TOC> shall not contain <Link> parentStandardType != 'TOC' @@ -2444,7 +2444,7 @@ - + <TOC> shall not contain <Reference> parentStandardType != 'TOC' @@ -2456,7 +2456,7 @@ - + <TOC> shall not contain <Annot> parentStandardType != 'TOC' @@ -2468,7 +2468,7 @@ - + <TOC> shall not contain <Form> parentStandardType != 'TOC' @@ -2480,7 +2480,7 @@ - + <TOC> shall not contain <Ruby> parentStandardType != 'TOC' @@ -2492,7 +2492,7 @@ - + <TOC> shall not contain <RB> parentStandardType != 'TOC' @@ -2504,7 +2504,7 @@ - + <TOC> shall not contain <RT> parentStandardType != 'TOC' @@ -2516,7 +2516,7 @@ - + <TOC> shall not contain <RP> parentStandardType != 'TOC' @@ -2528,7 +2528,7 @@ - + <TOC> shall not contain <Warichu> parentStandardType != 'TOC' @@ -2540,7 +2540,7 @@ - + <TOC> shall not contain <WT> parentStandardType != 'TOC' @@ -2552,7 +2552,7 @@ - + <TOC> shall not contain <WP> parentStandardType != 'TOC' @@ -2564,7 +2564,7 @@ - + <TOC> shall not contain <FENote> parentStandardType != 'TOC' @@ -2576,7 +2576,7 @@ - + <TOC> shall not contain <Index> parentStandardType != 'TOC' @@ -2588,7 +2588,7 @@ - + <TOC> shall not contain <L> parentStandardType != 'TOC' @@ -2600,7 +2600,7 @@ - + <TOC> shall not contain <LI> parentStandardType != 'TOC' @@ -2612,7 +2612,7 @@ - + <TOC> shall not contain <LBody> parentStandardType != 'TOC' @@ -2624,7 +2624,7 @@ - + <TOC> shall not contain <BibEntry> parentStandardType != 'TOC' @@ -2636,7 +2636,7 @@ - + <TOC> shall not contain <Table> parentStandardType != 'TOC' @@ -2648,7 +2648,7 @@ - + <TOC> shall not contain <TR> parentStandardType != 'TOC' @@ -2660,7 +2660,7 @@ - + <TOC> shall not contain <TH> parentStandardType != 'TOC' @@ -2672,7 +2672,7 @@ - + <TOC> shall not contain <TD> parentStandardType != 'TOC' @@ -2684,7 +2684,7 @@ - + <TOC> shall not contain <THead> parentStandardType != 'TOC' @@ -2696,7 +2696,7 @@ - + <TOC> shall not contain <TBody> parentStandardType != 'TOC' @@ -2708,7 +2708,7 @@ - + <TOC> shall not contain <TFoot> parentStandardType != 'TOC' @@ -2720,7 +2720,7 @@ - + <TOC> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -2732,7 +2732,7 @@ - + <TOC> shall not contain <Figure> parentStandardType != 'TOC' @@ -2744,7 +2744,7 @@ - + <TOC> shall not contain <Formula> parentStandardType != 'TOC' @@ -2756,7 +2756,7 @@ - + <TOC> shall not contain content items hasContentItems == false @@ -2768,7 +2768,7 @@ - + <TOCI> shall not contain <Document> parentStandardType != 'TOCI' @@ -2780,7 +2780,7 @@ - + <TOCI> shall not contain <DocumentFragment> parentStandardType != 'TOCI' @@ -2792,7 +2792,7 @@ - + <TOCI> shall not contain <Part> parentStandardType != 'TOCI' @@ -2804,7 +2804,7 @@ - + <TOCI> shall not contain <Art> parentStandardType != 'TOCI' @@ -2816,7 +2816,7 @@ - + <TOCI> shall not contain <Sect> parentStandardType != 'TOCI' @@ -2828,7 +2828,7 @@ - + <TOCI> shall not contain <TOCI> parentStandardType != 'TOCI' @@ -2840,7 +2840,7 @@ - + <TOCI> shall not contain <Aside> parentStandardType != 'TOCI' @@ -2852,7 +2852,7 @@ - + <TOCI> shall not contain <BlockQuote> parentStandardType != 'TOCI' @@ -2864,7 +2864,7 @@ - + <TOCI> shall not contain <Note> parentStandardType != 'TOCI' @@ -2876,7 +2876,7 @@ - + <TOCI> shall not contain <Code> parentStandardType != 'TOCI' @@ -2888,7 +2888,7 @@ - + <TOCI> shall not contain <Hn> parentStandardType != 'TOCI' @@ -2900,7 +2900,7 @@ - + <TOCI> shall not contain <H> parentStandardType != 'TOCI' @@ -2912,7 +2912,7 @@ - + <TOCI> shall not contain <Title> parentStandardType != 'TOCI' @@ -2924,7 +2924,7 @@ - + <TOCI> shall not contain <Sub> parentStandardType != 'TOCI' @@ -2936,7 +2936,7 @@ - + <TOCI> shall not contain <Em> parentStandardType != 'TOCI' @@ -2948,7 +2948,7 @@ - + <TOCI> shall not contain <Strong> parentStandardType != 'TOCI' @@ -2960,7 +2960,7 @@ - + <TOCI> shall not contain <Span> parentStandardType != 'TOCI' @@ -2972,7 +2972,7 @@ - + <TOCI> shall not contain <Quote> parentStandardType != 'TOCI' @@ -2984,7 +2984,7 @@ - + <TOCI> shall not contain <Link> parentStandardType != 'TOCI' @@ -2996,7 +2996,7 @@ - + <TOCI> shall not contain <Annot> parentStandardType != 'TOCI' @@ -3008,7 +3008,7 @@ - + <TOCI> shall not contain <Form> parentStandardType != 'TOCI' @@ -3020,7 +3020,7 @@ - + <TOCI> shall not contain <Ruby> parentStandardType != 'TOCI' @@ -3032,7 +3032,7 @@ - + <TOCI> shall not contain <RB> parentStandardType != 'TOCI' @@ -3044,7 +3044,7 @@ - + <TOCI> shall not contain <RT> parentStandardType != 'TOCI' @@ -3056,7 +3056,7 @@ - + <TOCI> shall not contain <RP> parentStandardType != 'TOCI' @@ -3068,7 +3068,7 @@ - + <TOCI> shall not contain <Warichu> parentStandardType != 'TOCI' @@ -3080,7 +3080,7 @@ - + <TOCI> shall not contain <WT> parentStandardType != 'TOCI' @@ -3092,7 +3092,7 @@ - + <TOCI> shall not contain <WP> parentStandardType != 'TOCI' @@ -3104,7 +3104,7 @@ - + <TOCI> shall not contain <FENote> parentStandardType != 'TOCI' @@ -3116,7 +3116,7 @@ - + <TOCI> shall not contain <Index> parentStandardType != 'TOCI' @@ -3128,7 +3128,7 @@ - + <TOCI> shall not contain <L> parentStandardType != 'TOCI' @@ -3140,7 +3140,7 @@ - + <TOCI> shall not contain <LI> parentStandardType != 'TOCI' @@ -3152,7 +3152,7 @@ - + <TOCI> shall not contain <LBody> parentStandardType != 'TOCI' @@ -3164,7 +3164,7 @@ - + <TOCI> shall not contain <BibEntry> parentStandardType != 'TOCI' @@ -3176,7 +3176,7 @@ - + <TOCI> shall not contain <Table> parentStandardType != 'TOCI' @@ -3188,7 +3188,7 @@ - + <TOCI> shall not contain <TR> parentStandardType != 'TOCI' @@ -3200,7 +3200,7 @@ - + <TOCI> shall not contain <TH> parentStandardType != 'TOCI' @@ -3212,7 +3212,7 @@ - + <TOCI> shall not contain <TD> parentStandardType != 'TOCI' @@ -3224,7 +3224,7 @@ - + <TOCI> shall not contain <THead> parentStandardType != 'TOCI' @@ -3236,7 +3236,7 @@ - + <TOCI> shall not contain <TBody> parentStandardType != 'TOCI' @@ -3248,7 +3248,7 @@ - + <TOCI> shall not contain <TFoot> parentStandardType != 'TOCI' @@ -3260,7 +3260,7 @@ - + <TOCI> shall not contain <Caption> parentStandardType != 'TOCI' @@ -3272,7 +3272,7 @@ - + <TOCI> shall not contain <Figure> parentStandardType != 'TOCI' @@ -3284,7 +3284,7 @@ - + <TOCI> shall not contain <Formula> parentStandardType != 'TOCI' @@ -3296,7 +3296,7 @@ - + <TOCI> shall not contain content items hasContentItems == false @@ -3308,7 +3308,7 @@ - + <Aside> shall not contain <TOCI> parentStandardType != 'Aside' @@ -3320,7 +3320,7 @@ - + <Aside> shall not contain <Aside> parentStandardType != 'Aside' @@ -3332,7 +3332,7 @@ - + <Aside> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -3344,7 +3344,7 @@ - + <Aside> shall not contain <Title> parentStandardType != 'Aside' @@ -3356,7 +3356,7 @@ - + <Aside> shall not contain <Sub> parentStandardType != 'Aside' @@ -3368,7 +3368,7 @@ - + <Aside> shall not contain <Em> parentStandardType != 'Aside' @@ -3380,7 +3380,7 @@ - + <Aside> shall not contain <Strong> parentStandardType != 'Aside' @@ -3392,7 +3392,7 @@ - + <Aside> shall not contain <Span> parentStandardType != 'Aside' @@ -3404,7 +3404,7 @@ - + <Aside> shall not contain <Quote> parentStandardType != 'Aside' @@ -3416,7 +3416,7 @@ - + <Aside> shall not contain <Ruby> parentStandardType != 'Aside' @@ -3428,7 +3428,7 @@ - + <Aside> shall not contain <RB> parentStandardType != 'Aside' @@ -3440,7 +3440,7 @@ - + <Aside> shall not contain <RT> parentStandardType != 'Aside' @@ -3452,7 +3452,7 @@ - + <Aside> shall not contain <RP> parentStandardType != 'Aside' @@ -3464,7 +3464,7 @@ - + <Aside> shall not contain <Warichu> parentStandardType != 'Aside' @@ -3476,7 +3476,7 @@ - + <Aside> shall not contain <WT> parentStandardType != 'Aside' @@ -3488,7 +3488,7 @@ - + <Aside> shall not contain <WP> parentStandardType != 'Aside' @@ -3500,7 +3500,7 @@ - + <Aside> shall not contain <LI> parentStandardType != 'Aside' @@ -3512,7 +3512,7 @@ - + <Aside> shall not contain <LBody> parentStandardType != 'Aside' @@ -3524,7 +3524,7 @@ - + <Aside> shall not contain <BibEntry> parentStandardType != 'Aside' @@ -3536,7 +3536,7 @@ - + <Aside> shall not contain <TR> parentStandardType != 'Aside' @@ -3548,7 +3548,7 @@ - + <Aside> shall not contain <TH> parentStandardType != 'Aside' @@ -3560,7 +3560,7 @@ - + <Aside> shall not contain <TD> parentStandardType != 'Aside' @@ -3572,7 +3572,7 @@ - + <Aside> shall not contain <THead> parentStandardType != 'Aside' @@ -3584,7 +3584,7 @@ - + <Aside> shall not contain <TBody> parentStandardType != 'Aside' @@ -3596,7 +3596,7 @@ - + <Aside> shall not contain <TFoot> parentStandardType != 'Aside' @@ -3608,7 +3608,7 @@ - + <Aside> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -3620,7 +3620,7 @@ - + <BlockQuote> shall not contain <TOCI> parentStandardType != 'BlockQuote' @@ -3632,7 +3632,7 @@ - + <BlockQuote> shall not contain <Aside> parentStandardType != 'BlockQuote' @@ -3644,7 +3644,7 @@ - + <BlockQuote> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -3656,7 +3656,7 @@ - + <BlockQuote> shall not contain <Title> parentStandardType != 'BlockQuote' @@ -3668,7 +3668,7 @@ - + <BlockQuote> shall not contain <Sub> parentStandardType != 'BlockQuote' @@ -3680,7 +3680,7 @@ - + <BlockQuote> shall not contain <Em> parentStandardType != 'BlockQuote' @@ -3692,7 +3692,7 @@ - + <BlockQuote> shall not contain <Strong> parentStandardType != 'BlockQuote' @@ -3704,7 +3704,7 @@ - + <BlockQuote> shall not contain <Span> parentStandardType != 'BlockQuote' @@ -3716,7 +3716,7 @@ - + <BlockQuote> shall not contain <Quote> parentStandardType != 'BlockQuote' @@ -3728,7 +3728,7 @@ - + <BlockQuote> shall not contain <Ruby> parentStandardType != 'BlockQuote' @@ -3740,7 +3740,7 @@ - + <BlockQuote> shall not contain <RB> parentStandardType != 'BlockQuote' @@ -3752,7 +3752,7 @@ - + <BlockQuote> shall not contain <RT> parentStandardType != 'BlockQuote' @@ -3764,7 +3764,7 @@ - + <BlockQuote> shall not contain <RP> parentStandardType != 'BlockQuote' @@ -3776,7 +3776,7 @@ - + <BlockQuote> shall not contain <Warichu> parentStandardType != 'BlockQuote' @@ -3788,7 +3788,7 @@ - + <BlockQuote> shall not contain <WT> parentStandardType != 'BlockQuote' @@ -3800,7 +3800,7 @@ - + <BlockQuote> shall not contain <WP> parentStandardType != 'BlockQuote' @@ -3812,7 +3812,7 @@ - + <BlockQuote> shall not contain <LI> parentStandardType != 'BlockQuote' @@ -3824,7 +3824,7 @@ - + <BlockQuote> shall not contain <LBody> parentStandardType != 'BlockQuote' @@ -3836,7 +3836,7 @@ - + <BlockQuote> shall not contain <BibEntry> parentStandardType != 'BlockQuote' @@ -3848,7 +3848,7 @@ - + <BlockQuote> shall not contain <TR> parentStandardType != 'BlockQuote' @@ -3860,7 +3860,7 @@ - + <BlockQuote> shall not contain <TH> parentStandardType != 'BlockQuote' @@ -3872,7 +3872,7 @@ - + <BlockQuote> shall not contain <TD> parentStandardType != 'BlockQuote' @@ -3884,7 +3884,7 @@ - + <BlockQuote> shall not contain <THead> parentStandardType != 'BlockQuote' @@ -3896,7 +3896,7 @@ - + <BlockQuote> shall not contain <TBody> parentStandardType != 'BlockQuote' @@ -3908,7 +3908,7 @@ - + <BlockQuote> shall not contain <TFoot> parentStandardType != 'BlockQuote' @@ -3920,7 +3920,7 @@ - + <BlockQuote> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -3932,7 +3932,7 @@ - + <Title> shall not contain <Document> parentStandardType != 'Title' @@ -3944,7 +3944,7 @@ - + <Title> shall not contain <DocumentFragment> parentStandardType != 'Title' @@ -3956,7 +3956,7 @@ - + <Title> shall not contain <Art> parentStandardType != 'Title' @@ -3968,7 +3968,7 @@ - + <Title> shall not contain <Sect> parentStandardType != 'Title' @@ -3980,7 +3980,7 @@ - + <Title> shall not contain <TOC> parentStandardType != 'Title' @@ -3992,7 +3992,7 @@ - + <Title> shall not contain <TOCI> parentStandardType != 'Title' @@ -4004,7 +4004,7 @@ - + <Title> shall not contain <BlockQuote> parentStandardType != 'Title' @@ -4016,7 +4016,7 @@ - + <Title> shall not contain <Hn> parentStandardType != 'Title' @@ -4028,7 +4028,7 @@ - + <Title> shall not contain <H> parentStandardType != 'Title' @@ -4040,7 +4040,7 @@ - + <Title> shall not contain <Title> parentStandardType != 'Title' @@ -4052,7 +4052,7 @@ - + <Title> shall not contain <Sub> parentStandardType != 'Title' @@ -4064,7 +4064,7 @@ - + <Title> shall not contain <RB> parentStandardType != 'Title' @@ -4076,7 +4076,7 @@ - + <Title> shall not contain <RT> parentStandardType != 'Title' @@ -4088,7 +4088,7 @@ - + <Title> shall not contain <RP> parentStandardType != 'Title' @@ -4100,7 +4100,7 @@ - + <Title> shall not contain <WT> parentStandardType != 'Title' @@ -4112,7 +4112,7 @@ - + <Title> shall not contain <WP> parentStandardType != 'Title' @@ -4124,7 +4124,7 @@ - + <Title> shall not contain <Index> parentStandardType != 'Title' @@ -4136,7 +4136,7 @@ - + <Title> shall not contain <LI> parentStandardType != 'Title' @@ -4148,7 +4148,7 @@ - + <Title> shall not contain <LBody> parentStandardType != 'Title' @@ -4160,7 +4160,7 @@ - + <Title> shall not contain <TR> parentStandardType != 'Title' @@ -4172,7 +4172,7 @@ - + <Title> shall not contain <TH> parentStandardType != 'Title' @@ -4184,7 +4184,7 @@ - + <Title> shall not contain <TD> parentStandardType != 'Title' @@ -4196,7 +4196,7 @@ - + <Title> shall not contain <THead> parentStandardType != 'Title' @@ -4208,7 +4208,7 @@ - + <Title> shall not contain <TBody> parentStandardType != 'Title' @@ -4220,7 +4220,7 @@ - + <Title> shall not contain <TFoot> parentStandardType != 'Title' @@ -4232,7 +4232,7 @@ - + <Title> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -4244,7 +4244,7 @@ - + <Sub> shall not contain <Document> parentStandardType != 'Sub' @@ -4256,7 +4256,7 @@ - + <Sub> shall not contain <DocumentFragment> parentStandardType != 'Sub' @@ -4268,7 +4268,7 @@ - + <Sub> shall not contain <Part> parentStandardType != 'Sub' @@ -4280,7 +4280,7 @@ - + <Sub> shall not contain <Art> parentStandardType != 'Sub' @@ -4292,7 +4292,7 @@ - + <Sub> shall not contain <Div> parentStandardType != 'Sub' @@ -4304,7 +4304,7 @@ - + <Sub> shall not contain <Sect> parentStandardType != 'Sub' @@ -4316,7 +4316,7 @@ - + <Sub> shall not contain <TOC> parentStandardType != 'Sub' @@ -4328,7 +4328,7 @@ - + <Sub> shall not contain <TOCI> parentStandardType != 'Sub' @@ -4340,7 +4340,7 @@ - + <Sub> shall not contain <Aside> parentStandardType != 'Sub' @@ -4352,7 +4352,7 @@ - + <Sub> shall not contain <BlockQuote> parentStandardType != 'Sub' @@ -4364,7 +4364,7 @@ - + <Sub> shall not contain <P> parentStandardType != 'Sub' @@ -4376,7 +4376,7 @@ - + <Sub> shall not contain <Hn> parentStandardType != 'Sub' @@ -4388,7 +4388,7 @@ - + <Sub> shall not contain <H> parentStandardType != 'Sub' @@ -4400,7 +4400,7 @@ - + <Sub> shall not contain <Title> parentStandardType != 'Sub' @@ -4412,7 +4412,7 @@ - + <Sub> shall not contain <Sub> parentStandardType != 'Sub' @@ -4424,7 +4424,7 @@ - + <Sub> shall not contain <RB> parentStandardType != 'Sub' @@ -4436,7 +4436,7 @@ - + <Sub> shall not contain <RT> parentStandardType != 'Sub' @@ -4448,7 +4448,7 @@ - + <Sub> shall not contain <RP> parentStandardType != 'Sub' @@ -4460,7 +4460,7 @@ - + <Sub> shall not contain <WT> parentStandardType != 'Sub' @@ -4472,7 +4472,7 @@ - + <Sub> shall not contain <WP> parentStandardType != 'Sub' @@ -4484,7 +4484,7 @@ - + <Sub> shall not contain <Index> parentStandardType != 'Sub' @@ -4496,7 +4496,7 @@ - + <Sub> shall not contain <LI> parentStandardType != 'Sub' @@ -4508,7 +4508,7 @@ - + <Sub> shall not contain <LBody> parentStandardType != 'Sub' @@ -4520,7 +4520,7 @@ - + <Sub> shall not contain <Table> parentStandardType != 'Sub' @@ -4532,7 +4532,7 @@ - + <Sub> shall not contain <TR> parentStandardType != 'Sub' @@ -4544,7 +4544,7 @@ - + <Sub> shall not contain <TH> parentStandardType != 'Sub' @@ -4556,7 +4556,7 @@ - + <Sub> shall not contain <TD> parentStandardType != 'Sub' @@ -4568,7 +4568,7 @@ - + <Sub> shall not contain <THead> parentStandardType != 'Sub' @@ -4580,7 +4580,7 @@ - + <Sub> shall not contain <TBody> parentStandardType != 'Sub' @@ -4592,7 +4592,7 @@ - + <Sub> shall not contain <TFoot> parentStandardType != 'Sub' @@ -4604,7 +4604,7 @@ - + <Sub> shall not contain <Caption> parentStandardType != 'Sub' @@ -4616,7 +4616,7 @@ - + <P> shall not contain <Document> parentStandardType != 'P' @@ -4628,7 +4628,7 @@ - + <P> shall not contain <DocumentFragment> parentStandardType != 'P' @@ -4640,7 +4640,7 @@ - + <P> shall not contain <Part> parentStandardType != 'P' @@ -4652,7 +4652,7 @@ - + <P> shall not contain <Art> parentStandardType != 'P' @@ -4664,7 +4664,7 @@ - + <P> shall not contain <Div> parentStandardType != 'P' @@ -4676,7 +4676,7 @@ - + <P> shall not contain <Sect> parentStandardType != 'P' @@ -4688,7 +4688,7 @@ - + <P> shall not contain <TOC> parentStandardType != 'P' @@ -4700,7 +4700,7 @@ - + <P> shall not contain <TOCI> parentStandardType != 'P' @@ -4712,7 +4712,7 @@ - + <P> shall not contain <Aside> parentStandardType != 'P' @@ -4724,7 +4724,7 @@ - + <P> shall not contain <BlockQuote> parentStandardType != 'P' @@ -4736,7 +4736,7 @@ - + <P> shall not contain <P> parentStandardType != 'P' @@ -4748,7 +4748,7 @@ - + <P> shall not contain <Hn> parentStandardType != 'P' @@ -4760,7 +4760,7 @@ - + <P> shall not contain <H> parentStandardType != 'P' @@ -4772,7 +4772,7 @@ - + <P> shall not contain <Title> parentStandardType != 'P' @@ -4784,7 +4784,7 @@ - + <P> shall not contain <RB> parentStandardType != 'P' @@ -4796,7 +4796,7 @@ - + <P> shall not contain <RT> parentStandardType != 'P' @@ -4808,7 +4808,7 @@ - + <P> shall not contain <RP> parentStandardType != 'P' @@ -4820,7 +4820,7 @@ - + <P> shall not contain <WT> parentStandardType != 'P' @@ -4832,7 +4832,7 @@ - + <P> shall not contain <WP> parentStandardType != 'P' @@ -4844,7 +4844,7 @@ - + <P> shall not contain <Index> parentStandardType != 'P' @@ -4856,7 +4856,7 @@ - + <P> shall not contain <LI> parentStandardType != 'P' @@ -4868,7 +4868,7 @@ - + <P> shall not contain <LBody> parentStandardType != 'P' @@ -4880,7 +4880,7 @@ - + <P> shall not contain <TR> parentStandardType != 'P' @@ -4892,7 +4892,7 @@ - + <P> shall not contain <TH> parentStandardType != 'P' @@ -4904,7 +4904,7 @@ - + <P> shall not contain <TD> parentStandardType != 'P' @@ -4916,7 +4916,7 @@ - + <P> shall not contain <THead> parentStandardType != 'P' @@ -4928,7 +4928,7 @@ - + <P> shall not contain <TBody> parentStandardType != 'P' @@ -4940,7 +4940,7 @@ - + <P> shall not contain <TFoot> parentStandardType != 'P' @@ -4952,7 +4952,7 @@ - + <P> shall not contain <Caption> parentStandardType != 'P' @@ -4964,7 +4964,7 @@ - + <Note> shall not contain <Document> parentStandardType != 'Note' @@ -4976,7 +4976,7 @@ - + <Note> shall not contain <TOC> parentStandardType != 'Note' @@ -4988,7 +4988,7 @@ - + <Note> shall not contain <TOCI> parentStandardType != 'Note' @@ -5000,7 +5000,7 @@ - + <Note> shall not contain <Hn> parentStandardType != 'Note' @@ -5012,7 +5012,7 @@ - + <Note> shall not contain <H> parentStandardType != 'Note' @@ -5024,7 +5024,7 @@ - + <Note> shall not contain <Title> parentStandardType != 'Note' @@ -5036,7 +5036,7 @@ - + <Note> shall not contain <RB> parentStandardType != 'Note' @@ -5048,7 +5048,7 @@ - + <Note> shall not contain <RT> parentStandardType != 'Note' @@ -5060,7 +5060,7 @@ - + <Note> shall not contain <RP> parentStandardType != 'Note' @@ -5072,7 +5072,7 @@ - + <Note> shall not contain <WT> parentStandardType != 'Note' @@ -5084,7 +5084,7 @@ - + <Note> shall not contain <WP> parentStandardType != 'Note' @@ -5096,7 +5096,7 @@ - + <Note> shall not contain <LI> parentStandardType != 'Note' @@ -5108,7 +5108,7 @@ - + <Note> shall not contain <LBody> parentStandardType != 'Note' @@ -5120,7 +5120,7 @@ - + <Note> shall not contain <TR> parentStandardType != 'Note' @@ -5132,7 +5132,7 @@ - + <Note> shall not contain <TH> parentStandardType != 'Note' @@ -5144,7 +5144,7 @@ - + <Note> shall not contain <TD> parentStandardType != 'Note' @@ -5156,7 +5156,7 @@ - + <Note> shall not contain <THead> parentStandardType != 'Note' @@ -5168,7 +5168,7 @@ - + <Note> shall not contain <TBody> parentStandardType != 'Note' @@ -5180,7 +5180,7 @@ - + <Note> shall not contain <TFoot> parentStandardType != 'Note' @@ -5192,7 +5192,7 @@ - + <Code> shall not contain <Document> parentStandardType != 'Code' @@ -5204,7 +5204,7 @@ - + <Code> shall not contain <Art> parentStandardType != 'Code' @@ -5216,7 +5216,7 @@ - + <Code> shall not contain <Sect> parentStandardType != 'Code' @@ -5228,7 +5228,7 @@ - + <Code> shall not contain <TOC> parentStandardType != 'Code' @@ -5240,7 +5240,7 @@ - + <Code> shall not contain <TOCI> parentStandardType != 'Code' @@ -5252,7 +5252,7 @@ - + <Code> shall not contain <Aside> parentStandardType != 'Code' @@ -5264,7 +5264,7 @@ - + <Code> shall not contain <BlockQuote> parentStandardType != 'Code' @@ -5276,7 +5276,7 @@ - + <Code> shall not contain <P> parentStandardType != 'Code' @@ -5288,7 +5288,7 @@ - + <Code> shall not contain <Code> parentStandardType != 'Code' @@ -5300,7 +5300,7 @@ - + <Code> shall not contain <Hn> parentStandardType != 'Code' @@ -5312,7 +5312,7 @@ - + <Code> shall not contain <H> parentStandardType != 'Code' @@ -5324,7 +5324,7 @@ - + <Code> shall not contain <Title> parentStandardType != 'Code' @@ -5336,7 +5336,7 @@ - + <Code> shall not contain <Sub> parentStandardType != 'Code' @@ -5348,7 +5348,7 @@ - + <Code> shall not contain <Lbl> parentStandardType != 'Code' @@ -5360,7 +5360,7 @@ - + <Code> shall not contain <Quote> parentStandardType != 'Code' @@ -5372,7 +5372,7 @@ - + <Code> shall not contain <Form> parentStandardType != 'Code' @@ -5384,7 +5384,7 @@ - + <Code> shall not contain <Ruby> parentStandardType != 'Code' @@ -5396,7 +5396,7 @@ - + <Code> shall not contain <RB> parentStandardType != 'Code' @@ -5408,7 +5408,7 @@ - + <Code> shall not contain <RT> parentStandardType != 'Code' @@ -5420,7 +5420,7 @@ - + <Code> shall not contain <RP> parentStandardType != 'Code' @@ -5432,7 +5432,7 @@ - + <Code> shall not contain <Warichu> parentStandardType != 'Code' @@ -5444,7 +5444,7 @@ - + <Code> shall not contain <WT> parentStandardType != 'Code' @@ -5456,7 +5456,7 @@ - + <Code> shall not contain <WP> parentStandardType != 'Code' @@ -5468,7 +5468,7 @@ - + <Code> shall not contain <Index> parentStandardType != 'Code' @@ -5480,7 +5480,7 @@ - + <Code> shall not contain <L> parentStandardType != 'Code' @@ -5492,7 +5492,7 @@ - + <Code> shall not contain <LI> parentStandardType != 'Code' @@ -5504,7 +5504,7 @@ - + <Code> shall not contain <LBody> parentStandardType != 'Code' @@ -5516,7 +5516,7 @@ - + <Code> shall not contain <Table> parentStandardType != 'Code' @@ -5528,7 +5528,7 @@ - + <Code> shall not contain <TR> parentStandardType != 'Code' @@ -5540,7 +5540,7 @@ - + <Code> shall not contain <TH> parentStandardType != 'Code' @@ -5552,7 +5552,7 @@ - + <Code> shall not contain <TD> parentStandardType != 'Code' @@ -5564,7 +5564,7 @@ - + <Code> shall not contain <THead> parentStandardType != 'Code' @@ -5576,7 +5576,7 @@ - + <Code> shall not contain <TBody> parentStandardType != 'Code' @@ -5588,7 +5588,7 @@ - + <Code> shall not contain <TFoot> parentStandardType != 'Code' @@ -5600,7 +5600,7 @@ - + <Code> shall not contain <Caption> parentStandardType != 'Code' @@ -5612,7 +5612,7 @@ - + <Code> shall not contain <Figure> parentStandardType != 'Code' @@ -5624,7 +5624,7 @@ - + <Code> shall not contain <Formula> parentStandardType != 'Code' @@ -5636,7 +5636,7 @@ - + <Hn> shall not contain <Document> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5648,7 +5648,7 @@ - + <Hn> shall not contain <DocumentFragment> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5660,7 +5660,7 @@ - + <Hn> shall not contain <Part> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5672,7 +5672,7 @@ - + <Hn> shall contain at most one <Art> kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1 @@ -5684,7 +5684,7 @@ - + <Hn> shall not contain <Div> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5696,7 +5696,7 @@ - + <Hn> shall contain at most one <Sect> kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1 @@ -5708,7 +5708,7 @@ - + <Hn> shall not contain <TOC> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5720,7 +5720,7 @@ - + <Hn> shall not contain <TOCI> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5732,7 +5732,7 @@ - + <Hn> shall not contain <Aside> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5744,7 +5744,7 @@ - + <Hn> shall not contain <BlockQuote> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5756,7 +5756,7 @@ - + <Hn> shall not contain <P> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5768,7 +5768,7 @@ - + <Hn> shall not contain <Hn> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5780,7 +5780,7 @@ - + <Hn> shall not contain <H> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5792,7 +5792,7 @@ - + <Hn> shall not contain <Title> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5804,7 +5804,7 @@ - + <Hn> shall not contain <RB> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5816,7 +5816,7 @@ - + <Hn> shall not contain <RT> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5828,7 +5828,7 @@ - + <Hn> shall not contain <RP> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5840,7 +5840,7 @@ - + <Hn> shall not contain <WT> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5852,7 +5852,7 @@ - + <Hn> shall not contain <WP> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5864,7 +5864,7 @@ - + <Hn> shall not contain <Index> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5876,7 +5876,7 @@ - + <Hn> shall not contain <L> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5888,7 +5888,7 @@ - + <Hn> shall not contain <LI> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5900,7 +5900,7 @@ - + <Hn> shall not contain <LBody> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5912,7 +5912,7 @@ - + <Hn> shall not contain <Table> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5924,7 +5924,7 @@ - + <Hn> shall not contain <TR> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5936,7 +5936,7 @@ - + <Hn> shall not contain <TH> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5948,7 +5948,7 @@ - + <Hn> shall not contain <TD> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5960,7 +5960,7 @@ - + <Hn> shall not contain <THead> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5972,7 +5972,7 @@ - + <Hn> shall not contain <TBody> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5984,7 +5984,7 @@ - + <Hn> shall not contain <TFoot> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -5996,7 +5996,7 @@ - + <Hn> shall not contain <Caption> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6008,7 +6008,7 @@ - + <H> shall not contain <Document> parentStandardType != 'H' @@ -6020,7 +6020,7 @@ - + <H> shall not contain <DocumentFragment> parentStandardType != 'H' @@ -6032,7 +6032,7 @@ - + <H> shall not contain <Part> parentStandardType != 'H' @@ -6044,7 +6044,7 @@ - + <H> shall contain at most one <Art> kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1 @@ -6056,7 +6056,7 @@ - + <H> shall not contain <Div> parentStandardType != 'H' @@ -6068,7 +6068,7 @@ - + <H> shall contain at most one <Sect> kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1 @@ -6080,7 +6080,7 @@ - + <H> shall not contain <TOC> parentStandardType != 'H' @@ -6092,7 +6092,7 @@ - + <H> shall not contain <TOCI> parentStandardType != 'H' @@ -6104,7 +6104,7 @@ - + <H> shall not contain <Aside> parentStandardType != 'H' @@ -6116,7 +6116,7 @@ - + <H> shall not contain <BlockQuote> parentStandardType != 'H' @@ -6128,7 +6128,7 @@ - + <H> shall not contain <P> parentStandardType != 'H' @@ -6140,7 +6140,7 @@ - + <H> shall not contain <Hn> parentStandardType != 'H' @@ -6152,7 +6152,7 @@ - + <H> shall not contain <H> parentStandardType != 'H' @@ -6164,7 +6164,7 @@ - + <H> shall not contain <Title> parentStandardType != 'H' @@ -6176,7 +6176,7 @@ - + <H> shall not contain <RB> parentStandardType != 'H' @@ -6188,7 +6188,7 @@ - + <H> shall not contain <RT> parentStandardType != 'H' @@ -6200,7 +6200,7 @@ - + <H> shall not contain <RP> parentStandardType != 'H' @@ -6212,7 +6212,7 @@ - + <H> shall not contain <WT> parentStandardType != 'H' @@ -6224,7 +6224,7 @@ - + <H> shall not contain <WP> parentStandardType != 'H' @@ -6236,7 +6236,7 @@ - + <H> shall not contain <Index> parentStandardType != 'H' @@ -6248,7 +6248,7 @@ - + <H> shall not contain <L> parentStandardType != 'H' @@ -6260,7 +6260,7 @@ - + <H> shall not contain <LI> parentStandardType != 'H' @@ -6272,7 +6272,7 @@ - + <H> shall not contain <LBody> parentStandardType != 'H' @@ -6284,7 +6284,7 @@ - + <H> shall not contain <Table> parentStandardType != 'H' @@ -6296,7 +6296,7 @@ - + <H> shall not contain <TR> parentStandardType != 'H' @@ -6308,7 +6308,7 @@ - + <H> shall not contain <TH> parentStandardType != 'H' @@ -6320,7 +6320,7 @@ - + <H> shall not contain <TD> parentStandardType != 'H' @@ -6332,7 +6332,7 @@ - + <H> shall not contain <THead> parentStandardType != 'H' @@ -6344,7 +6344,7 @@ - + <H> shall not contain <TBody> parentStandardType != 'H' @@ -6356,7 +6356,7 @@ - + <H> shall not contain <TFoot> parentStandardType != 'H' @@ -6368,7 +6368,7 @@ - + <H> shall not contain <Caption> parentStandardType != 'H' @@ -6380,7 +6380,7 @@ - + <Lbl> shall not contain <Document> parentStandardType != 'Lbl' @@ -6392,7 +6392,7 @@ - + <Lbl> shall not contain <DocumentFragment> parentStandardType != 'Lbl' @@ -6404,7 +6404,7 @@ - + <Lbl> shall not contain <Part> parentStandardType != 'Lbl' @@ -6416,7 +6416,7 @@ - + <Lbl> shall not contain <Art> parentStandardType != 'Lbl' @@ -6428,7 +6428,7 @@ - + <Lbl> shall not contain <Div> parentStandardType != 'Lbl' @@ -6440,7 +6440,7 @@ - + <Lbl> shall not contain <Sect> parentStandardType != 'Lbl' @@ -6452,7 +6452,7 @@ - + <Lbl> shall not contain <TOC> parentStandardType != 'Lbl' @@ -6464,7 +6464,7 @@ - + <Lbl> shall not contain <TOCI> parentStandardType != 'Lbl' @@ -6476,7 +6476,7 @@ - + <Lbl> shall not contain <Aside> parentStandardType != 'Lbl' @@ -6488,7 +6488,7 @@ - + <Lbl> shall not contain <BlockQuote> parentStandardType != 'Lbl' @@ -6500,7 +6500,7 @@ - + <Lbl> shall not contain <P> parentStandardType != 'Lbl' @@ -6512,7 +6512,7 @@ - + <Lbl> shall not contain <Hn> parentStandardType != 'Lbl' @@ -6524,7 +6524,7 @@ - + <Lbl> shall not contain <H> parentStandardType != 'Lbl' @@ -6536,7 +6536,7 @@ - + <Lbl> shall not contain <Title> parentStandardType != 'Lbl' @@ -6548,7 +6548,7 @@ - + <Lbl> shall not contain <Lbl> parentStandardType != 'Lbl' @@ -6560,7 +6560,7 @@ - + <Lbl> shall not contain <RB> parentStandardType != 'Lbl' @@ -6572,7 +6572,7 @@ - + <Lbl> shall not contain <RT> parentStandardType != 'Lbl' @@ -6584,7 +6584,7 @@ - + <Lbl> shall not contain <RP> parentStandardType != 'Lbl' @@ -6596,7 +6596,7 @@ - + <Lbl> shall not contain <WT> parentStandardType != 'Lbl' @@ -6608,7 +6608,7 @@ - + <Lbl> shall not contain <WP> parentStandardType != 'Lbl' @@ -6620,7 +6620,7 @@ - + <Lbl> shall not contain <Index> parentStandardType != 'Lbl' @@ -6632,7 +6632,7 @@ - + <Lbl> shall not contain <L> parentStandardType != 'Lbl' @@ -6644,7 +6644,7 @@ - + <Lbl> shall not contain <LI> parentStandardType != 'Lbl' @@ -6656,7 +6656,7 @@ - + <Lbl> shall not contain <LBody> parentStandardType != 'Lbl' @@ -6668,7 +6668,7 @@ - + <Lbl> shall not contain <Table> parentStandardType != 'Lbl' @@ -6680,7 +6680,7 @@ - + <Lbl> shall not contain <TR> parentStandardType != 'Lbl' @@ -6692,7 +6692,7 @@ - + <Lbl> shall not contain <TH> parentStandardType != 'Lbl' @@ -6704,7 +6704,7 @@ - + <Lbl> shall not contain <TD> parentStandardType != 'Lbl' @@ -6716,7 +6716,7 @@ - + <Lbl> shall not contain <THead> parentStandardType != 'Lbl' @@ -6728,7 +6728,7 @@ - + <Lbl> shall not contain <TBody> parentStandardType != 'Lbl' @@ -6740,7 +6740,7 @@ - + <Lbl> shall not contain <TFoot> parentStandardType != 'Lbl' @@ -6752,7 +6752,7 @@ - + <Lbl> shall not contain <Caption> parentStandardType != 'Lbl' @@ -6764,7 +6764,7 @@ - + <Em> shall not contain <Document> parentStandardType != 'Em' @@ -6776,7 +6776,7 @@ - + <Em> shall not contain <DocumentFragment> parentStandardType != 'Em' @@ -6788,7 +6788,7 @@ - + <Em> shall not contain <Part> parentStandardType != 'Em' @@ -6800,7 +6800,7 @@ - + <Em> shall not contain <Art> parentStandardType != 'Em' @@ -6812,7 +6812,7 @@ - + <Em> shall not contain <Div> parentStandardType != 'Em' @@ -6824,7 +6824,7 @@ - + <Em> shall not contain <Sect> parentStandardType != 'Em' @@ -6836,7 +6836,7 @@ - + <Em> shall not contain <TOC> parentStandardType != 'Em' @@ -6848,7 +6848,7 @@ - + <Em> shall not contain <TOCI> parentStandardType != 'Em' @@ -6860,7 +6860,7 @@ - + <Em> shall not contain <Aside> parentStandardType != 'Em' @@ -6872,7 +6872,7 @@ - + <Em> shall not contain <BlockQuote> parentStandardType != 'Em' @@ -6884,7 +6884,7 @@ - + <Em> shall not contain <P> parentStandardType != 'Em' @@ -6896,7 +6896,7 @@ - + <Em> shall not contain <Hn> parentStandardType != 'Em' @@ -6908,7 +6908,7 @@ - + <Em> shall not contain <H> parentStandardType != 'Em' @@ -6920,7 +6920,7 @@ - + <Em> shall not contain <Title> parentStandardType != 'Em' @@ -6932,7 +6932,7 @@ - + <Em> shall not contain <RB> parentStandardType != 'Em' @@ -6944,7 +6944,7 @@ - + <Em> shall not contain <RT> parentStandardType != 'Em' @@ -6956,7 +6956,7 @@ - + <Em> shall not contain <RP> parentStandardType != 'Em' @@ -6968,7 +6968,7 @@ - + <Em> shall not contain <WT> parentStandardType != 'Em' @@ -6980,7 +6980,7 @@ - + <Em> shall not contain <WP> parentStandardType != 'Em' @@ -6992,7 +6992,7 @@ - + <Em> shall not contain <Index> parentStandardType != 'Em' @@ -7004,7 +7004,7 @@ - + <Em> shall not contain <L> parentStandardType != 'Em' @@ -7016,7 +7016,7 @@ - + <Em> shall not contain <LI> parentStandardType != 'Em' @@ -7028,7 +7028,7 @@ - + <Em> shall not contain <LBody> parentStandardType != 'Em' @@ -7040,7 +7040,7 @@ - + <Em> shall not contain <Table> parentStandardType != 'Em' @@ -7052,7 +7052,7 @@ - + <Em> shall not contain <TR> parentStandardType != 'Em' @@ -7064,7 +7064,7 @@ - + <Em> shall not contain <TH> parentStandardType != 'Em' @@ -7076,7 +7076,7 @@ - + <Em> shall not contain <TD> parentStandardType != 'Em' @@ -7088,7 +7088,7 @@ - + <Em> shall not contain <THead> parentStandardType != 'Em' @@ -7100,7 +7100,7 @@ - + <Em> shall not contain <TBody> parentStandardType != 'Em' @@ -7112,7 +7112,7 @@ - + <Em> shall not contain <TFoot> parentStandardType != 'Em' @@ -7124,7 +7124,7 @@ - + <Em> shall not contain <Caption> parentStandardType != 'Em' @@ -7136,7 +7136,7 @@ - + <Strong> shall not contain <Document> parentStandardType != 'Strong' @@ -7148,7 +7148,7 @@ - + <Strong> shall not contain <DocumentFragment> parentStandardType != 'Strong' @@ -7160,7 +7160,7 @@ - + <Strong> shall not contain <Part> parentStandardType != 'Strong' @@ -7172,7 +7172,7 @@ - + <Strong> shall not contain <Art> parentStandardType != 'Strong' @@ -7184,7 +7184,7 @@ - + <Strong> shall not contain <Div> parentStandardType != 'Strong' @@ -7196,7 +7196,7 @@ - + <Strong> shall not contain <Sect> parentStandardType != 'Strong' @@ -7208,7 +7208,7 @@ - + <Strong> shall not contain <TOC> parentStandardType != 'Strong' @@ -7220,7 +7220,7 @@ - + <Strong> shall not contain <TOCI> parentStandardType != 'Strong' @@ -7232,7 +7232,7 @@ - + <Strong> shall not contain <Aside> parentStandardType != 'Strong' @@ -7244,7 +7244,7 @@ - + <Strong> shall not contain <BlockQuote> parentStandardType != 'Strong' @@ -7256,7 +7256,7 @@ - + <Strong> shall not contain <P> parentStandardType != 'Strong' @@ -7268,7 +7268,7 @@ - + <Strong> shall not contain <Hn> parentStandardType != 'Strong' @@ -7280,7 +7280,7 @@ - + <Strong> shall not contain <H> parentStandardType != 'Strong' @@ -7292,7 +7292,7 @@ - + <Strong> shall not contain <Title> parentStandardType != 'Strong' @@ -7304,7 +7304,7 @@ - + <Strong> shall not contain <RB> parentStandardType != 'Strong' @@ -7316,7 +7316,7 @@ - + <Strong> shall not contain <RT> parentStandardType != 'Strong' @@ -7328,7 +7328,7 @@ - + <Strong> shall not contain <RP> parentStandardType != 'Strong' @@ -7340,7 +7340,7 @@ - + <Strong> shall not contain <WT> parentStandardType != 'Strong' @@ -7352,7 +7352,7 @@ - + <Strong> shall not contain <WP> parentStandardType != 'Strong' @@ -7364,7 +7364,7 @@ - + <Strong> shall not contain <Index> parentStandardType != 'Strong' @@ -7376,7 +7376,7 @@ - + <Strong> shall not contain <L> parentStandardType != 'Strong' @@ -7388,7 +7388,7 @@ - + <Strong> shall not contain <LI> parentStandardType != 'Strong' @@ -7400,7 +7400,7 @@ - + <Strong> shall not contain <LBody> parentStandardType != 'Strong' @@ -7412,7 +7412,7 @@ - + <Strong> shall not contain <Table> parentStandardType != 'Strong' @@ -7424,7 +7424,7 @@ - + <Strong> shall not contain <TR> parentStandardType != 'Strong' @@ -7436,7 +7436,7 @@ - + <Strong> shall not contain <TH> parentStandardType != 'Strong' @@ -7448,7 +7448,7 @@ - + <Strong> shall not contain <TD> parentStandardType != 'Strong' @@ -7460,7 +7460,7 @@ - + <Strong> shall not contain <THead> parentStandardType != 'Strong' @@ -7472,7 +7472,7 @@ - + <Strong> shall not contain <TBody> parentStandardType != 'Strong' @@ -7484,7 +7484,7 @@ - + <Strong> shall not contain <TFoot> parentStandardType != 'Strong' @@ -7496,7 +7496,7 @@ - + <Strong> shall not contain <Caption> parentStandardType != 'Strong' @@ -7508,7 +7508,7 @@ - + <Span> shall not contain <Document> parentStandardType != 'Span' @@ -7520,7 +7520,7 @@ - + <Span> shall not contain <DocumentFragment> parentStandardType != 'Span' @@ -7532,7 +7532,7 @@ - + <Span> shall not contain <Part> parentStandardType != 'Span' @@ -7544,7 +7544,7 @@ - + <Span> shall not contain <Art> parentStandardType != 'Span' @@ -7556,7 +7556,7 @@ - + <Span> shall not contain <Div> parentStandardType != 'Span' @@ -7568,7 +7568,7 @@ - + <Span> shall not contain <Sect> parentStandardType != 'Span' @@ -7580,7 +7580,7 @@ - + <Span> shall not contain <TOC> parentStandardType != 'Span' @@ -7592,7 +7592,7 @@ - + <Span> shall not contain <TOCI> parentStandardType != 'Span' @@ -7604,7 +7604,7 @@ - + <Span> shall not contain <Aside> parentStandardType != 'Span' @@ -7616,7 +7616,7 @@ - + <Span> shall not contain <BlockQuote> parentStandardType != 'Span' @@ -7628,7 +7628,7 @@ - + <Span> shall not contain <P> parentStandardType != 'Span' @@ -7640,7 +7640,7 @@ - + <Span> shall not contain <Hn> parentStandardType != 'Span' @@ -7652,7 +7652,7 @@ - + <Span> shall not contain <H> parentStandardType != 'Span' @@ -7664,7 +7664,7 @@ - + <Span> shall not contain <Title> parentStandardType != 'Span' @@ -7676,7 +7676,7 @@ - + <Span> shall not contain <RB> parentStandardType != 'Span' @@ -7688,7 +7688,7 @@ - + <Span> shall not contain <RT> parentStandardType != 'Span' @@ -7700,7 +7700,7 @@ - + <Span> shall not contain <RP> parentStandardType != 'Span' @@ -7712,7 +7712,7 @@ - + <Span> shall not contain <WT> parentStandardType != 'Span' @@ -7724,7 +7724,7 @@ - + <Span> shall not contain <WP> parentStandardType != 'Span' @@ -7736,7 +7736,7 @@ - + <Span> shall not contain <Index> parentStandardType != 'Span' @@ -7748,7 +7748,7 @@ - + <Span> shall not contain <L> parentStandardType != 'Span' @@ -7760,7 +7760,7 @@ - + <Span> shall not contain <LI> parentStandardType != 'Span' @@ -7772,7 +7772,7 @@ - + <Span> shall not contain <LBody> parentStandardType != 'Span' @@ -7784,7 +7784,7 @@ - + <Span> shall not contain <Table> parentStandardType != 'Span' @@ -7796,7 +7796,7 @@ - + <Span> shall not contain <TR> parentStandardType != 'Span' @@ -7808,7 +7808,7 @@ - + <Span> shall not contain <TH> parentStandardType != 'Span' @@ -7820,7 +7820,7 @@ - + <Span> shall not contain <TD> parentStandardType != 'Span' @@ -7832,7 +7832,7 @@ - + <Span> shall not contain <THead> parentStandardType != 'Span' @@ -7844,7 +7844,7 @@ - + <Span> shall not contain <TBody> parentStandardType != 'Span' @@ -7856,7 +7856,7 @@ - + <Span> shall not contain <TFoot> parentStandardType != 'Span' @@ -7868,7 +7868,7 @@ - + <Span> shall not contain <Caption> parentStandardType != 'Span' @@ -7880,7 +7880,7 @@ - + <Quote> shall not contain <Document> parentStandardType != 'Quote' @@ -7892,7 +7892,7 @@ - + <Quote> shall not contain <DocumentFragment> parentStandardType != 'Quote' @@ -7904,7 +7904,7 @@ - + <Quote> shall not contain <Part> parentStandardType != 'Quote' @@ -7916,7 +7916,7 @@ - + <Quote> shall not contain <Art> parentStandardType != 'Quote' @@ -7928,7 +7928,7 @@ - + <Quote> shall not contain <Div> parentStandardType != 'Quote' @@ -7940,7 +7940,7 @@ - + <Quote> shall not contain <Sect> parentStandardType != 'Quote' @@ -7952,7 +7952,7 @@ - + <Quote> shall not contain <TOC> parentStandardType != 'Quote' @@ -7964,7 +7964,7 @@ - + <Quote> shall not contain <TOCI> parentStandardType != 'Quote' @@ -7976,7 +7976,7 @@ - + <Quote> shall not contain <Aside> parentStandardType != 'Quote' @@ -7988,7 +7988,7 @@ - + <Quote> shall not contain <BlockQuote> parentStandardType != 'Quote' @@ -8000,7 +8000,7 @@ - + <Quote> shall not contain <P> parentStandardType != 'Quote' @@ -8012,7 +8012,7 @@ - + <Quote> shall not contain <Hn> parentStandardType != 'Quote' @@ -8024,7 +8024,7 @@ - + <Quote> shall not contain <H> parentStandardType != 'Quote' @@ -8036,7 +8036,7 @@ - + <Quote> shall not contain <Title> parentStandardType != 'Quote' @@ -8048,7 +8048,7 @@ - + <Quote> shall not contain <RB> parentStandardType != 'Quote' @@ -8060,7 +8060,7 @@ - + <Quote> shall not contain <RT> parentStandardType != 'Quote' @@ -8072,7 +8072,7 @@ - + <Quote> shall not contain <RP> parentStandardType != 'Quote' @@ -8084,7 +8084,7 @@ - + <Quote> shall not contain <WT> parentStandardType != 'Quote' @@ -8096,7 +8096,7 @@ - + <Quote> shall not contain <WP> parentStandardType != 'Quote' @@ -8108,7 +8108,7 @@ - + <Quote> shall not contain <Index> parentStandardType != 'Quote' @@ -8120,7 +8120,7 @@ - + <Quote> shall not contain <L> parentStandardType != 'Quote' @@ -8132,7 +8132,7 @@ - + <Quote> shall not contain <LI> parentStandardType != 'Quote' @@ -8144,7 +8144,7 @@ - + <Quote> shall not contain <LBody> parentStandardType != 'Quote' @@ -8156,7 +8156,7 @@ - + <Quote> shall not contain <Table> parentStandardType != 'Quote' @@ -8168,7 +8168,7 @@ - + <Quote> shall not contain <TR> parentStandardType != 'Quote' @@ -8180,7 +8180,7 @@ - + <Quote> shall not contain <TH> parentStandardType != 'Quote' @@ -8192,7 +8192,7 @@ - + <Quote> shall not contain <TD> parentStandardType != 'Quote' @@ -8204,7 +8204,7 @@ - + <Quote> shall not contain <THead> parentStandardType != 'Quote' @@ -8216,7 +8216,7 @@ - + <Quote> shall not contain <TBody> parentStandardType != 'Quote' @@ -8228,7 +8228,7 @@ - + <Quote> shall not contain <TFoot> parentStandardType != 'Quote' @@ -8240,7 +8240,7 @@ - + <Quote> shall not contain <Caption> parentStandardType != 'Quote' @@ -8252,7 +8252,7 @@ - + <Link> shall not contain <Document> parentStandardType != 'Link' @@ -8264,7 +8264,7 @@ - + <Link> shall not contain <TOC> parentStandardType != 'Link' @@ -8276,7 +8276,7 @@ - + <Link> shall not contain <TOCI> parentStandardType != 'Link' @@ -8288,7 +8288,7 @@ - + <Link> shall not contain <Link> parentStandardType != 'Link' @@ -8300,7 +8300,7 @@ - + <Link> shall not contain <RB> parentStandardType != 'Link' @@ -8312,7 +8312,7 @@ - + <Link> shall not contain <RT> parentStandardType != 'Link' @@ -8324,7 +8324,7 @@ - + <Link> shall not contain <RP> parentStandardType != 'Link' @@ -8336,7 +8336,7 @@ - + <Link> shall not contain <WT> parentStandardType != 'Link' @@ -8348,7 +8348,7 @@ - + <Link> shall not contain <WP> parentStandardType != 'Link' @@ -8360,7 +8360,7 @@ - + <Link> shall not contain <Index> parentStandardType != 'Link' @@ -8372,7 +8372,7 @@ - + <Link> shall not contain <LI> parentStandardType != 'Link' @@ -8384,7 +8384,7 @@ - + <Link> shall not contain <LBody> parentStandardType != 'Link' @@ -8396,7 +8396,7 @@ - + <Link> shall not contain <TR> parentStandardType != 'Link' @@ -8408,7 +8408,7 @@ - + <Link> shall not contain <TH> parentStandardType != 'Link' @@ -8420,7 +8420,7 @@ - + <Link> shall not contain <TD> parentStandardType != 'Link' @@ -8432,7 +8432,7 @@ - + <Link> shall not contain <THead> parentStandardType != 'Link' @@ -8444,7 +8444,7 @@ - + <Link> shall not contain <TBody> parentStandardType != 'Link' @@ -8456,7 +8456,7 @@ - + <Link> shall not contain <TFoot> parentStandardType != 'Link' @@ -8468,7 +8468,7 @@ - + <Reference> shall not contain <Document> parentStandardType != 'Reference' @@ -8480,7 +8480,7 @@ - + <Reference> shall not contain <DocumentFragment> parentStandardType != 'Reference' @@ -8492,7 +8492,7 @@ - + <Reference> shall not contain <Part> parentStandardType != 'Reference' @@ -8504,7 +8504,7 @@ - + <Reference> shall not contain <Art> parentStandardType != 'Reference' @@ -8516,7 +8516,7 @@ - + <Reference> shall not contain <Div> parentStandardType != 'Reference' @@ -8528,7 +8528,7 @@ - + <Reference> shall not contain <Sect> parentStandardType != 'Reference' @@ -8540,7 +8540,7 @@ - + <Reference> shall not contain <TOC> parentStandardType != 'Reference' @@ -8552,7 +8552,7 @@ - + <Reference> shall not contain <TOCI> parentStandardType != 'Reference' @@ -8564,7 +8564,7 @@ - + <Reference> shall not contain <Aside> parentStandardType != 'Reference' @@ -8576,7 +8576,7 @@ - + <Reference> shall not contain <BlockQuote> parentStandardType != 'Reference' @@ -8588,7 +8588,7 @@ - + <Reference> shall not contain <P> parentStandardType != 'Reference' @@ -8600,7 +8600,7 @@ - + <Reference> shall not contain <Code> parentStandardType != 'Reference' @@ -8612,7 +8612,7 @@ - + <Reference> shall not contain <Hn> parentStandardType != 'Reference' @@ -8624,7 +8624,7 @@ - + <Reference> shall not contain <H> parentStandardType != 'Reference' @@ -8636,7 +8636,7 @@ - + <Reference> shall not contain <Title> parentStandardType != 'Reference' @@ -8648,7 +8648,7 @@ - + <Reference> shall not contain <Sub> parentStandardType != 'Reference' @@ -8660,7 +8660,7 @@ - + <Reference> shall not contain <Quote> parentStandardType != 'Reference' @@ -8672,7 +8672,7 @@ - + <Reference> shall not contain <Reference> parentStandardType != 'Reference' @@ -8684,7 +8684,7 @@ - + <Reference> shall not contain <Form> parentStandardType != 'Reference' @@ -8696,7 +8696,7 @@ - + <Reference> shall not contain <Ruby> parentStandardType != 'Reference' @@ -8708,7 +8708,7 @@ - + <Reference> shall not contain <RB> parentStandardType != 'Reference' @@ -8720,7 +8720,7 @@ - + <Reference> shall not contain <RT> parentStandardType != 'Reference' @@ -8732,7 +8732,7 @@ - + <Reference> shall not contain <RP> parentStandardType != 'Reference' @@ -8744,7 +8744,7 @@ - + <Reference> shall not contain <Warichu> parentStandardType != 'Reference' @@ -8756,7 +8756,7 @@ - + <Reference> shall not contain <WT> parentStandardType != 'Reference' @@ -8768,7 +8768,7 @@ - + <Reference> shall not contain <WP> parentStandardType != 'Reference' @@ -8780,7 +8780,7 @@ - + <Reference> shall not contain <Index> parentStandardType != 'Reference' @@ -8792,7 +8792,7 @@ - + <Reference> shall not contain <L> parentStandardType != 'Reference' @@ -8804,7 +8804,7 @@ - + <Reference> shall not contain <LI> parentStandardType != 'Reference' @@ -8816,7 +8816,7 @@ - + <Reference> shall not contain <LBody> parentStandardType != 'Reference' @@ -8828,7 +8828,7 @@ - + <Reference> shall not contain <Table> parentStandardType != 'Reference' @@ -8840,7 +8840,7 @@ - + <Reference> shall not contain <TR> parentStandardType != 'Reference' @@ -8852,7 +8852,7 @@ - + <Reference> shall not contain <TH> parentStandardType != 'Reference' @@ -8864,7 +8864,7 @@ - + <Reference> shall not contain <TD> parentStandardType != 'Reference' @@ -8876,7 +8876,7 @@ - + <Reference> shall not contain <THead> parentStandardType != 'Reference' @@ -8888,7 +8888,7 @@ - + <Reference> shall not contain <TBody> parentStandardType != 'Reference' @@ -8900,7 +8900,7 @@ - + <Reference> shall not contain <TFoot> parentStandardType != 'Reference' @@ -8912,7 +8912,7 @@ - + <Reference> shall not contain <Caption> parentStandardType != 'Reference' @@ -8924,7 +8924,7 @@ - + <Reference> shall not contain <Formula> parentStandardType != 'Reference' @@ -8936,7 +8936,7 @@ - + <Annot> shall not contain <Document> parentStandardType != 'Annot' @@ -8948,7 +8948,7 @@ - + <Annot> shall not contain <TOC> parentStandardType != 'Annot' @@ -8960,7 +8960,7 @@ - + <Annot> shall not contain <TOCI> parentStandardType != 'Annot' @@ -8972,7 +8972,7 @@ - + <Annot> shall not contain <Private> parentStandardType != 'Annot' @@ -8984,7 +8984,7 @@ - + <Annot> shall not contain <RB> parentStandardType != 'Annot' @@ -8996,7 +8996,7 @@ - + <Annot> shall not contain <RT> parentStandardType != 'Annot' @@ -9008,7 +9008,7 @@ - + <Annot> shall not contain <RP> parentStandardType != 'Annot' @@ -9020,7 +9020,7 @@ - + <Annot> shall not contain <WT> parentStandardType != 'Annot' @@ -9032,7 +9032,7 @@ - + <Annot> shall not contain <WP> parentStandardType != 'Annot' @@ -9044,7 +9044,7 @@ - + <Annot> shall not contain <Index> parentStandardType != 'Annot' @@ -9056,7 +9056,7 @@ - + <Annot> shall not contain <LI> parentStandardType != 'Annot' @@ -9068,7 +9068,7 @@ - + <Annot> shall not contain <LBody> parentStandardType != 'Annot' @@ -9080,7 +9080,7 @@ - + <Annot> shall not contain <TR> parentStandardType != 'Annot' @@ -9092,7 +9092,7 @@ - + <Annot> shall not contain <TH> parentStandardType != 'Annot' @@ -9104,7 +9104,7 @@ - + <Annot> shall not contain <TD> parentStandardType != 'Annot' @@ -9116,7 +9116,7 @@ - + <Annot> shall not contain <THead> parentStandardType != 'Annot' @@ -9128,7 +9128,7 @@ - + <Annot> shall not contain <TBody> parentStandardType != 'Annot' @@ -9140,7 +9140,7 @@ - + <Annot> shall not contain <TFoot> parentStandardType != 'Annot' @@ -9152,7 +9152,7 @@ - + <Form> shall not contain <Document> parentStandardType != 'Form' @@ -9164,7 +9164,7 @@ - + <Form> shall not contain <DocumentFragment> parentStandardType != 'Form' @@ -9176,7 +9176,7 @@ - + <Form> shall not contain <Art> parentStandardType != 'Form' @@ -9188,7 +9188,7 @@ - + <Form> shall not contain <Sect> parentStandardType != 'Form' @@ -9200,7 +9200,7 @@ - + <Form> shall not contain <TOC> parentStandardType != 'Form' @@ -9212,7 +9212,7 @@ - + <Form> shall not contain <TOCI> parentStandardType != 'Form' @@ -9224,7 +9224,7 @@ - + <Form> shall not contain <Aside> parentStandardType != 'Form' @@ -9236,7 +9236,7 @@ - + <Form> shall not contain <BlockQuote> parentStandardType != 'Form' @@ -9248,7 +9248,7 @@ - + <Form> shall not contain <P> parentStandardType != 'Form' @@ -9260,7 +9260,7 @@ - + <Form> shall not contain <Hn> parentStandardType != 'Form' @@ -9272,7 +9272,7 @@ - + <Form> shall not contain <H> parentStandardType != 'Form' @@ -9284,7 +9284,7 @@ - + <Form> shall not contain <Title> parentStandardType != 'Form' @@ -9296,7 +9296,7 @@ - + <Form> shall not contain <Sub> parentStandardType != 'Form' @@ -9308,7 +9308,7 @@ - + <Form> shall not contain <Em> parentStandardType != 'Form' @@ -9320,7 +9320,7 @@ - + <Form> shall not contain <Strong> parentStandardType != 'Form' @@ -9332,7 +9332,7 @@ - + <Form> shall not contain <Span> parentStandardType != 'Form' @@ -9344,7 +9344,7 @@ - + <Form> shall not contain <Quote> parentStandardType != 'Form' @@ -9356,7 +9356,7 @@ - + <Form> shall not contain <Link> parentStandardType != 'Form' @@ -9368,7 +9368,7 @@ - + <Form> shall not contain <Annot> parentStandardType != 'Form' @@ -9380,7 +9380,7 @@ - + <Form> shall not contain <Form> parentStandardType != 'Form' @@ -9392,7 +9392,7 @@ - + <Form> shall not contain <Ruby> parentStandardType != 'Form' @@ -9404,7 +9404,7 @@ - + <Form> shall not contain <RB> parentStandardType != 'Form' @@ -9416,7 +9416,7 @@ - + <Form> shall not contain <RT> parentStandardType != 'Form' @@ -9428,7 +9428,7 @@ - + <Form> shall not contain <RP> parentStandardType != 'Form' @@ -9440,7 +9440,7 @@ - + <Form> shall not contain <Warichu> parentStandardType != 'Form' @@ -9452,7 +9452,7 @@ - + <Form> shall not contain <WT> parentStandardType != 'Form' @@ -9464,7 +9464,7 @@ - + <Form> shall not contain <WP> parentStandardType != 'Form' @@ -9476,7 +9476,7 @@ - + <Form> shall not contain <Index> parentStandardType != 'Form' @@ -9488,7 +9488,7 @@ - + <Form> shall not contain <LI> parentStandardType != 'Form' @@ -9500,7 +9500,7 @@ - + <Form> shall not contain <LBody> parentStandardType != 'Form' @@ -9512,7 +9512,7 @@ - + <Form> shall not contain <TR> parentStandardType != 'Form' @@ -9524,7 +9524,7 @@ - + <Form> shall not contain <TH> parentStandardType != 'Form' @@ -9536,7 +9536,7 @@ - + <Form> shall not contain <TD> parentStandardType != 'Form' @@ -9548,7 +9548,7 @@ - + <Form> shall not contain <THead> parentStandardType != 'Form' @@ -9560,7 +9560,7 @@ - + <Form> shall not contain <TBody> parentStandardType != 'Form' @@ -9572,7 +9572,7 @@ - + <Form> shall not contain <TFoot> parentStandardType != 'Form' @@ -9584,7 +9584,7 @@ - + <Form> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -9596,7 +9596,7 @@ - + <Ruby> shall not contain <Document> parentStandardType != 'Ruby' @@ -9608,7 +9608,7 @@ - + <Ruby> shall not contain <DocumentFragment> parentStandardType != 'Ruby' @@ -9620,7 +9620,7 @@ - + <Ruby> shall not contain <Part> parentStandardType != 'Ruby' @@ -9632,7 +9632,7 @@ - + <Ruby> shall not contain <Art> parentStandardType != 'Ruby' @@ -9644,7 +9644,7 @@ - + <Ruby> shall not contain <Div> parentStandardType != 'Ruby' @@ -9656,7 +9656,7 @@ - + <Ruby> shall not contain <Sect> parentStandardType != 'Ruby' @@ -9668,7 +9668,7 @@ - + <Ruby> shall not contain <TOC> parentStandardType != 'Ruby' @@ -9680,7 +9680,7 @@ - + <Ruby> shall not contain <TOCI> parentStandardType != 'Ruby' @@ -9692,7 +9692,7 @@ - + <Ruby> shall not contain <Aside> parentStandardType != 'Ruby' @@ -9704,7 +9704,7 @@ - + <Ruby> shall not contain <BlockQuote> parentStandardType != 'Ruby' @@ -9716,7 +9716,7 @@ - + <Ruby> shall not contain <P> parentStandardType != 'Ruby' @@ -9728,7 +9728,7 @@ - + <Ruby> shall not contain <Note> parentStandardType != 'Ruby' @@ -9740,7 +9740,7 @@ - + <Ruby> shall not contain <Code> parentStandardType != 'Ruby' @@ -9752,7 +9752,7 @@ - + <Ruby> shall not contain <Hn> parentStandardType != 'Ruby' @@ -9764,7 +9764,7 @@ - + <Ruby> shall not contain <H> parentStandardType != 'Ruby' @@ -9776,7 +9776,7 @@ - + <Ruby> shall not contain <Title> parentStandardType != 'Ruby' @@ -9788,7 +9788,7 @@ - + <Ruby> shall not contain <Sub> parentStandardType != 'Ruby' @@ -9800,7 +9800,7 @@ - + <Ruby> shall not contain <Lbl> parentStandardType != 'Ruby' @@ -9812,7 +9812,7 @@ - + <Ruby> shall not contain <Em> parentStandardType != 'Ruby' @@ -9824,7 +9824,7 @@ - + <Ruby> shall not contain <Strong> parentStandardType != 'Ruby' @@ -9836,7 +9836,7 @@ - + <Ruby> shall not contain <Span> parentStandardType != 'Ruby' @@ -9848,7 +9848,7 @@ - + <Ruby> shall not contain <Quote> parentStandardType != 'Ruby' @@ -9860,7 +9860,7 @@ - + <Ruby> shall not contain <Link> parentStandardType != 'Ruby' @@ -9872,7 +9872,7 @@ - + <Ruby> shall not contain <Reference> parentStandardType != 'Ruby' @@ -9884,7 +9884,7 @@ - + <Ruby> shall not contain <Annot> parentStandardType != 'Ruby' @@ -9896,7 +9896,7 @@ - + <Ruby> shall not contain <Form> parentStandardType != 'Ruby' @@ -9908,7 +9908,7 @@ - + <Ruby> shall not contain <Ruby> parentStandardType != 'Ruby' @@ -9920,7 +9920,7 @@ - + <Ruby> shall not contain <Warichu> parentStandardType != 'Ruby' @@ -9932,7 +9932,7 @@ - + <Ruby> shall not contain <WT> parentStandardType != 'Ruby' @@ -9944,7 +9944,7 @@ - + <Ruby> shall not contain <WP> parentStandardType != 'Ruby' @@ -9956,7 +9956,7 @@ - + <Ruby> shall not contain <FENote> parentStandardType != 'Ruby' @@ -9968,7 +9968,7 @@ - + <Ruby> shall not contain <Index> parentStandardType != 'Ruby' @@ -9980,7 +9980,7 @@ - + <Ruby> shall not contain <L> parentStandardType != 'Ruby' @@ -9992,7 +9992,7 @@ - + <Ruby> shall not contain <LI> parentStandardType != 'Ruby' @@ -10004,7 +10004,7 @@ - + <Ruby> shall not contain <LBody> parentStandardType != 'Ruby' @@ -10016,7 +10016,7 @@ - + <Ruby> shall not contain <BibEntry> parentStandardType != 'Ruby' @@ -10028,7 +10028,7 @@ - + <Ruby> shall not contain <Table> parentStandardType != 'Ruby' @@ -10040,7 +10040,7 @@ - + <Ruby> shall not contain <TR> parentStandardType != 'Ruby' @@ -10052,7 +10052,7 @@ - + <Ruby> shall not contain <TH> parentStandardType != 'Ruby' @@ -10064,7 +10064,7 @@ - + <Ruby> shall not contain <TD> parentStandardType != 'Ruby' @@ -10076,7 +10076,7 @@ - + <Ruby> shall not contain <THead> parentStandardType != 'Ruby' @@ -10088,7 +10088,7 @@ - + <Ruby> shall not contain <TBody> parentStandardType != 'Ruby' @@ -10100,7 +10100,7 @@ - + <Ruby> shall not contain <TFoot> parentStandardType != 'Ruby' @@ -10112,7 +10112,7 @@ - + <Ruby> shall not contain <Caption> parentStandardType != 'Ruby' @@ -10124,7 +10124,7 @@ - + <Ruby> shall not contain <Figure> parentStandardType != 'Ruby' @@ -10136,7 +10136,7 @@ - + <Ruby> shall not contain <Formula> parentStandardType != 'Ruby' @@ -10148,7 +10148,7 @@ - + <Ruby> shall not contain <Artifact> parentStandardType != 'Ruby' @@ -10160,7 +10160,7 @@ - + <RB> shall not contain <Document> parentStandardType != 'RB' @@ -10172,7 +10172,7 @@ - + <RB> shall not contain <DocumentFragment> parentStandardType != 'RB' @@ -10184,7 +10184,7 @@ - + <RB> shall not contain <Part> parentStandardType != 'RB' @@ -10196,7 +10196,7 @@ - + <RB> shall not contain <Art> parentStandardType != 'RB' @@ -10208,7 +10208,7 @@ - + <RB> shall not contain <Div> parentStandardType != 'RB' @@ -10220,7 +10220,7 @@ - + <RB> shall not contain <Sect> parentStandardType != 'RB' @@ -10232,7 +10232,7 @@ - + <RB> shall not contain <TOC> parentStandardType != 'RB' @@ -10244,7 +10244,7 @@ - + <RB> shall not contain <TOCI> parentStandardType != 'RB' @@ -10256,7 +10256,7 @@ - + <RB> shall not contain <Aside> parentStandardType != 'RB' @@ -10268,7 +10268,7 @@ - + <RB> shall not contain <BlockQuote> parentStandardType != 'RB' @@ -10280,7 +10280,7 @@ - + <RB> shall not contain <P> parentStandardType != 'RB' @@ -10292,7 +10292,7 @@ - + <RB> shall not contain <Note> parentStandardType != 'RB' @@ -10304,7 +10304,7 @@ - + <RB> shall not contain <Code> parentStandardType != 'RB' @@ -10316,7 +10316,7 @@ - + <RB> shall not contain <Hn> parentStandardType != 'RB' @@ -10328,7 +10328,7 @@ - + <RB> shall not contain <H> parentStandardType != 'RB' @@ -10340,7 +10340,7 @@ - + <RB> shall not contain <Title> parentStandardType != 'RB' @@ -10352,7 +10352,7 @@ - + <RB> shall not contain <Lbl> parentStandardType != 'RB' @@ -10364,7 +10364,7 @@ - + <RB> shall not contain <Ruby> parentStandardType != 'RB' @@ -10376,7 +10376,7 @@ - + <RB> shall not contain <RB> parentStandardType != 'RB' @@ -10388,7 +10388,7 @@ - + <RB> shall not contain <RT> parentStandardType != 'RB' @@ -10400,7 +10400,7 @@ - + <RB> shall not contain <RP> parentStandardType != 'RB' @@ -10412,7 +10412,7 @@ - + <RB> shall not contain <Warichu> parentStandardType != 'RB' @@ -10424,7 +10424,7 @@ - + <RB> shall not contain <WT> parentStandardType != 'RB' @@ -10436,7 +10436,7 @@ - + <RB> shall not contain <WP> parentStandardType != 'RB' @@ -10448,7 +10448,7 @@ - + <RB> shall not contain <FENote> parentStandardType != 'RB' @@ -10460,7 +10460,7 @@ - + <RB> shall not contain <Index> parentStandardType != 'RB' @@ -10472,7 +10472,7 @@ - + <RB> shall not contain <L> parentStandardType != 'RB' @@ -10484,7 +10484,7 @@ - + <RB> shall not contain <LI> parentStandardType != 'RB' @@ -10496,7 +10496,7 @@ - + <RB> shall not contain <LBody> parentStandardType != 'RB' @@ -10508,7 +10508,7 @@ - + <RB> shall not contain <BibEntry> parentStandardType != 'RB' @@ -10520,7 +10520,7 @@ - + <RB> shall not contain <Table> parentStandardType != 'RB' @@ -10532,7 +10532,7 @@ - + <RB> shall not contain <TR> parentStandardType != 'RB' @@ -10544,7 +10544,7 @@ - + <RB> shall not contain <TH> parentStandardType != 'RB' @@ -10556,7 +10556,7 @@ - + <RB> shall not contain <TD> parentStandardType != 'RB' @@ -10568,7 +10568,7 @@ - + <RB> shall not contain <THead> parentStandardType != 'RB' @@ -10580,7 +10580,7 @@ - + <RB> shall not contain <TBody> parentStandardType != 'RB' @@ -10592,7 +10592,7 @@ - + <RB> shall not contain <TFoot> parentStandardType != 'RB' @@ -10604,7 +10604,7 @@ - + <RB> shall not contain <Caption> parentStandardType != 'RB' @@ -10616,7 +10616,7 @@ - + <RB> shall not contain <Figure> parentStandardType != 'RB' @@ -10628,7 +10628,7 @@ - + <RB> shall not contain <Formula> parentStandardType != 'RB' @@ -10640,7 +10640,7 @@ - + <RT> shall not contain <Document> parentStandardType != 'RT' @@ -10652,7 +10652,7 @@ - + <RT> shall not contain <DocumentFragment> parentStandardType != 'RT' @@ -10664,7 +10664,7 @@ - + <RT> shall not contain <Part> parentStandardType != 'RT' @@ -10676,7 +10676,7 @@ - + <RT> shall not contain <Art> parentStandardType != 'RT' @@ -10688,7 +10688,7 @@ - + <RT> shall not contain <Div> parentStandardType != 'RT' @@ -10700,7 +10700,7 @@ - + <RT> shall not contain <Sect> parentStandardType != 'RT' @@ -10712,7 +10712,7 @@ - + <RT> shall not contain <TOC> parentStandardType != 'RT' @@ -10724,7 +10724,7 @@ - + <RT> shall not contain <TOCI> parentStandardType != 'RT' @@ -10736,7 +10736,7 @@ - + <RT> shall not contain <Aside> parentStandardType != 'RT' @@ -10748,7 +10748,7 @@ - + <RT> shall not contain <BlockQuote> parentStandardType != 'RT' @@ -10760,7 +10760,7 @@ - + <RT> shall not contain <P> parentStandardType != 'RT' @@ -10772,7 +10772,7 @@ - + <RT> shall not contain <Note> parentStandardType != 'RT' @@ -10784,7 +10784,7 @@ - + <RT> shall not contain <Code> parentStandardType != 'RT' @@ -10796,7 +10796,7 @@ - + <RT> shall not contain <Hn> parentStandardType != 'RT' @@ -10808,7 +10808,7 @@ - + <RT> shall not contain <H> parentStandardType != 'RT' @@ -10820,7 +10820,7 @@ - + <RT> shall not contain <Title> parentStandardType != 'RT' @@ -10832,7 +10832,7 @@ - + <RT> shall not contain <Lbl> parentStandardType != 'RT' @@ -10844,7 +10844,7 @@ - + <RT> shall not contain <Ruby> parentStandardType != 'RT' @@ -10856,7 +10856,7 @@ - + <RT> shall not contain <RB> parentStandardType != 'RT' @@ -10868,7 +10868,7 @@ - + <RT> shall not contain <RT> parentStandardType != 'RT' @@ -10880,7 +10880,7 @@ - + <RT> shall not contain <RP> parentStandardType != 'RT' @@ -10892,7 +10892,7 @@ - + <RT> shall not contain <Warichu> parentStandardType != 'RT' @@ -10904,7 +10904,7 @@ - + <RT> shall not contain <WT> parentStandardType != 'RT' @@ -10916,7 +10916,7 @@ - + <RT> shall not contain <WP> parentStandardType != 'RT' @@ -10928,7 +10928,7 @@ - + <RT> shall not contain <FENote> parentStandardType != 'RT' @@ -10940,7 +10940,7 @@ - + <RT> shall not contain <Index> parentStandardType != 'RT' @@ -10952,7 +10952,7 @@ - + <RT> shall not contain <L> parentStandardType != 'RT' @@ -10964,7 +10964,7 @@ - + <RT> shall not contain <LI> parentStandardType != 'RT' @@ -10976,7 +10976,7 @@ - + <RT> shall not contain <LBody> parentStandardType != 'RT' @@ -10988,7 +10988,7 @@ - + <RT> shall not contain <BibEntry> parentStandardType != 'RT' @@ -11000,7 +11000,7 @@ - + <RT> shall not contain <Table> parentStandardType != 'RT' @@ -11012,7 +11012,7 @@ - + <RT> shall not contain <TR> parentStandardType != 'RT' @@ -11024,7 +11024,7 @@ - + <RT> shall not contain <TH> parentStandardType != 'RT' @@ -11036,7 +11036,7 @@ - + <RT> shall not contain <TD> parentStandardType != 'RT' @@ -11048,7 +11048,7 @@ - + <RT> shall not contain <THead> parentStandardType != 'RT' @@ -11060,7 +11060,7 @@ - + <RT> shall not contain <TBody> parentStandardType != 'RT' @@ -11072,7 +11072,7 @@ - + <RT> shall not contain <TFoot> parentStandardType != 'RT' @@ -11084,7 +11084,7 @@ - + <RT> shall not contain <Caption> parentStandardType != 'RT' @@ -11096,7 +11096,7 @@ - + <RT> shall not contain <Figure> parentStandardType != 'RT' @@ -11108,7 +11108,7 @@ - + <RT> shall not contain <Formula> parentStandardType != 'RT' @@ -11120,7 +11120,7 @@ - + <RP> shall not contain <Document> parentStandardType != 'RP' @@ -11132,7 +11132,7 @@ - + <RP> shall not contain <DocumentFragment> parentStandardType != 'RP' @@ -11144,7 +11144,7 @@ - + <RP> shall not contain <Part> parentStandardType != 'RP' @@ -11156,7 +11156,7 @@ - + <RP> shall not contain <Art> parentStandardType != 'RP' @@ -11168,7 +11168,7 @@ - + <RP> shall not contain <Div> parentStandardType != 'RP' @@ -11180,7 +11180,7 @@ - + <RP> shall not contain <Sect> parentStandardType != 'RP' @@ -11192,7 +11192,7 @@ - + <RP> shall not contain <TOC> parentStandardType != 'RP' @@ -11204,7 +11204,7 @@ - + <RP> shall not contain <TOCI> parentStandardType != 'RP' @@ -11216,7 +11216,7 @@ - + <RP> shall not contain <Aside> parentStandardType != 'RP' @@ -11228,7 +11228,7 @@ - + <RP> shall not contain <BlockQuote> parentStandardType != 'RP' @@ -11240,7 +11240,7 @@ - + <RP> shall not contain <P> parentStandardType != 'RP' @@ -11252,7 +11252,7 @@ - + <RP> shall not contain <Note> parentStandardType != 'RP' @@ -11264,7 +11264,7 @@ - + <RP> shall not contain <Code> parentStandardType != 'RP' @@ -11276,7 +11276,7 @@ - + <RP> shall not contain <Hn> parentStandardType != 'RP' @@ -11288,7 +11288,7 @@ - + <RP> shall not contain <H> parentStandardType != 'RP' @@ -11300,7 +11300,7 @@ - + <RP> shall not contain <Title> parentStandardType != 'RP' @@ -11312,7 +11312,7 @@ - + <RP> shall not contain <Lbl> parentStandardType != 'RP' @@ -11324,7 +11324,7 @@ - + <RP> shall not contain <Ruby> parentStandardType != 'RP' @@ -11336,7 +11336,7 @@ - + <RP> shall not contain <RB> parentStandardType != 'RP' @@ -11348,7 +11348,7 @@ - + <RP> shall not contain <RT> parentStandardType != 'RP' @@ -11360,7 +11360,7 @@ - + <RP> shall not contain <RP> parentStandardType != 'RP' @@ -11372,7 +11372,7 @@ - + <RP> shall not contain <Warichu> parentStandardType != 'RP' @@ -11384,7 +11384,7 @@ - + <RP> shall not contain <WT> parentStandardType != 'RP' @@ -11396,7 +11396,7 @@ - + <RP> shall not contain <WP> parentStandardType != 'RP' @@ -11408,7 +11408,7 @@ - + <RP> shall not contain <FENote> parentStandardType != 'RP' @@ -11420,7 +11420,7 @@ - + <RP> shall not contain <Index> parentStandardType != 'RP' @@ -11432,7 +11432,7 @@ - + <RP> shall not contain <L> parentStandardType != 'RP' @@ -11444,7 +11444,7 @@ - + <RP> shall not contain <LI> parentStandardType != 'RP' @@ -11456,7 +11456,7 @@ - + <RP> shall not contain <LBody> parentStandardType != 'RP' @@ -11468,7 +11468,7 @@ - + <RP> shall not contain <BibEntry> parentStandardType != 'RP' @@ -11480,7 +11480,7 @@ - + <RP> shall not contain <Table> parentStandardType != 'RP' @@ -11492,7 +11492,7 @@ - + <RP> shall not contain <TR> parentStandardType != 'RP' @@ -11504,7 +11504,7 @@ - + <RP> shall not contain <TH> parentStandardType != 'RP' @@ -11516,7 +11516,7 @@ - + <RP> shall not contain <TD> parentStandardType != 'RP' @@ -11528,7 +11528,7 @@ - + <RP> shall not contain <THead> parentStandardType != 'RP' @@ -11540,7 +11540,7 @@ - + <RP> shall not contain <TBody> parentStandardType != 'RP' @@ -11552,7 +11552,7 @@ - + <RP> shall not contain <TFoot> parentStandardType != 'RP' @@ -11564,7 +11564,7 @@ - + <RP> shall not contain <Caption> parentStandardType != 'RP' @@ -11576,7 +11576,7 @@ - + <RP> shall not contain <Figure> parentStandardType != 'RP' @@ -11588,7 +11588,7 @@ - + <RP> shall not contain <Formula> parentStandardType != 'RP' @@ -11600,7 +11600,7 @@ - + <Warichu> shall not contain <Document> parentStandardType != 'Warichu' @@ -11612,7 +11612,7 @@ - + <Warichu> shall not contain <DocumentFragment> parentStandardType != 'Warichu' @@ -11624,7 +11624,7 @@ - + <Warichu> shall not contain <Part> parentStandardType != 'Warichu' @@ -11636,7 +11636,7 @@ - + <Warichu> shall not contain <Art> parentStandardType != 'Warichu' @@ -11648,7 +11648,7 @@ - + <Warichu> shall not contain <Div> parentStandardType != 'Warichu' @@ -11660,7 +11660,7 @@ - + <Warichu> shall not contain <Sect> parentStandardType != 'Warichu' @@ -11672,7 +11672,7 @@ - + <Warichu> shall not contain <TOC> parentStandardType != 'Warichu' @@ -11684,7 +11684,7 @@ - + <Warichu> shall not contain <TOCI> parentStandardType != 'Warichu' @@ -11696,7 +11696,7 @@ - + <Warichu> shall not contain <Aside> parentStandardType != 'Warichu' @@ -11708,7 +11708,7 @@ - + <Warichu> shall not contain <BlockQuote> parentStandardType != 'Warichu' @@ -11720,7 +11720,7 @@ - + <Warichu> shall not contain <P> parentStandardType != 'Warichu' @@ -11732,7 +11732,7 @@ - + <Warichu> shall not contain <Note> parentStandardType != 'Warichu' @@ -11744,7 +11744,7 @@ - + <Warichu> shall not contain <Code> parentStandardType != 'Warichu' @@ -11756,7 +11756,7 @@ - + <Warichu> shall not contain <Hn> parentStandardType != 'Warichu' @@ -11768,7 +11768,7 @@ - + <Warichu> shall not contain <H> parentStandardType != 'Warichu' @@ -11780,7 +11780,7 @@ - + <Warichu> shall not contain <Title> parentStandardType != 'Warichu' @@ -11792,7 +11792,7 @@ - + <Warichu> shall not contain <Sub> parentStandardType != 'Warichu' @@ -11804,7 +11804,7 @@ - + <Warichu> shall not contain <Lbl> parentStandardType != 'Warichu' @@ -11816,7 +11816,7 @@ - + <Warichu> shall not contain <Em> parentStandardType != 'Warichu' @@ -11828,7 +11828,7 @@ - + <Warichu> shall not contain <Strong> parentStandardType != 'Warichu' @@ -11840,7 +11840,7 @@ - + <Warichu> shall not contain <Span> parentStandardType != 'Warichu' @@ -11852,7 +11852,7 @@ - + <Warichu> shall not contain <Quote> parentStandardType != 'Warichu' @@ -11864,7 +11864,7 @@ - + <Warichu> shall not contain <Link> parentStandardType != 'Warichu' @@ -11876,7 +11876,7 @@ - + <Warichu> shall not contain <Reference> parentStandardType != 'Warichu' @@ -11888,7 +11888,7 @@ - + <Warichu> shall not contain <Annot> parentStandardType != 'Warichu' @@ -11900,7 +11900,7 @@ - + <Warichu> shall not contain <Form> parentStandardType != 'Warichu' @@ -11912,7 +11912,7 @@ - + <Warichu> shall not contain <Ruby> parentStandardType != 'Warichu' @@ -11924,7 +11924,7 @@ - + <Warichu> shall not contain <RB> parentStandardType != 'Warichu' @@ -11936,7 +11936,7 @@ - + <Warichu> shall not contain <RT> parentStandardType != 'Warichu' @@ -11948,7 +11948,7 @@ - + <Warichu> shall not contain <RP> parentStandardType != 'Warichu' @@ -11960,7 +11960,7 @@ - + <Warichu> shall not contain <Warichu> parentStandardType != 'Warichu' @@ -11972,7 +11972,7 @@ - + <Warichu> shall not contain <FENote> parentStandardType != 'Warichu' @@ -11984,7 +11984,7 @@ - + <Warichu> shall not contain <Index> parentStandardType != 'Warichu' @@ -11996,7 +11996,7 @@ - + <Warichu> shall not contain <L> parentStandardType != 'Warichu' @@ -12008,7 +12008,7 @@ - + <Warichu> shall not contain <LI> parentStandardType != 'Warichu' @@ -12020,7 +12020,7 @@ - + <Warichu> shall not contain <LBody> parentStandardType != 'Warichu' @@ -12032,7 +12032,7 @@ - + <Warichu> shall not contain <BibEntry> parentStandardType != 'Warichu' @@ -12044,7 +12044,7 @@ - + <Warichu> shall not contain <Table> parentStandardType != 'Warichu' @@ -12056,7 +12056,7 @@ - + <Warichu> shall not contain <TR> parentStandardType != 'Warichu' @@ -12068,7 +12068,7 @@ - + <Warichu> shall not contain <TH> parentStandardType != 'Warichu' @@ -12080,7 +12080,7 @@ - + <Warichu> shall not contain <TD> parentStandardType != 'Warichu' @@ -12092,7 +12092,7 @@ - + <Warichu> shall not contain <THead> parentStandardType != 'Warichu' @@ -12104,7 +12104,7 @@ - + <Warichu> shall not contain <TBody> parentStandardType != 'Warichu' @@ -12116,7 +12116,7 @@ - + <Warichu> shall not contain <TFoot> parentStandardType != 'Warichu' @@ -12128,7 +12128,7 @@ - + <Warichu> shall not contain <Caption> parentStandardType != 'Warichu' @@ -12140,7 +12140,7 @@ - + <Warichu> shall not contain <Figure> parentStandardType != 'Warichu' @@ -12152,7 +12152,7 @@ - + <Warichu> shall not contain <Formula> parentStandardType != 'Warichu' @@ -12164,7 +12164,7 @@ - + <Warichu> shall not contain <Artifact> parentStandardType != 'Warichu' @@ -12176,7 +12176,7 @@ - + <WT> shall not contain <Document> parentStandardType != 'WT' @@ -12188,7 +12188,7 @@ - + <WT> shall not contain <DocumentFragment> parentStandardType != 'WT' @@ -12200,7 +12200,7 @@ - + <WT> shall not contain <Part> parentStandardType != 'WT' @@ -12212,7 +12212,7 @@ - + <WT> shall not contain <Art> parentStandardType != 'WT' @@ -12224,7 +12224,7 @@ - + <WT> shall not contain <Div> parentStandardType != 'WT' @@ -12236,7 +12236,7 @@ - + <WT> shall not contain <Sect> parentStandardType != 'WT' @@ -12248,7 +12248,7 @@ - + <WT> shall not contain <TOC> parentStandardType != 'WT' @@ -12260,7 +12260,7 @@ - + <WT> shall not contain <TOCI> parentStandardType != 'WT' @@ -12272,7 +12272,7 @@ - + <WT> shall not contain <Aside> parentStandardType != 'WT' @@ -12284,7 +12284,7 @@ - + <WT> shall not contain <BlockQuote> parentStandardType != 'WT' @@ -12296,7 +12296,7 @@ - + <WT> shall not contain <P> parentStandardType != 'WT' @@ -12308,7 +12308,7 @@ - + <WT> shall not contain <Note> parentStandardType != 'WT' @@ -12320,7 +12320,7 @@ - + <WT> shall not contain <Code> parentStandardType != 'WT' @@ -12332,7 +12332,7 @@ - + <WT> shall not contain <Hn> parentStandardType != 'WT' @@ -12344,7 +12344,7 @@ - + <WT> shall not contain <H> parentStandardType != 'WT' @@ -12356,7 +12356,7 @@ - + <WT> shall not contain <Title> parentStandardType != 'WT' @@ -12368,7 +12368,7 @@ - + <WT> shall not contain <Lbl> parentStandardType != 'WT' @@ -12380,7 +12380,7 @@ - + <WT> shall not contain <Ruby> parentStandardType != 'WT' @@ -12392,7 +12392,7 @@ - + <WT> shall not contain <RB> parentStandardType != 'WT' @@ -12404,7 +12404,7 @@ - + <WT> shall not contain <RT> parentStandardType != 'WT' @@ -12416,7 +12416,7 @@ - + <WT> shall not contain <RP> parentStandardType != 'WT' @@ -12428,7 +12428,7 @@ - + <WT> shall not contain <Warichu> parentStandardType != 'WT' @@ -12440,7 +12440,7 @@ - + <WT> shall not contain <WT> parentStandardType != 'WT' @@ -12452,7 +12452,7 @@ - + <WT> shall not contain <WP> parentStandardType != 'WT' @@ -12464,7 +12464,7 @@ - + <WT> shall not contain <FENote> parentStandardType != 'WT' @@ -12476,7 +12476,7 @@ - + <WT> shall not contain <Index> parentStandardType != 'WT' @@ -12488,7 +12488,7 @@ - + <WT> shall not contain <L> parentStandardType != 'WT' @@ -12500,7 +12500,7 @@ - + <WT> shall not contain <LI> parentStandardType != 'WT' @@ -12512,7 +12512,7 @@ - + <WT> shall not contain <LBody> parentStandardType != 'WT' @@ -12524,7 +12524,7 @@ - + <WT> shall not contain <BibEntry> parentStandardType != 'WT' @@ -12536,7 +12536,7 @@ - + <WT> shall not contain <Table> parentStandardType != 'WT' @@ -12548,7 +12548,7 @@ - + <WT> shall not contain <TR> parentStandardType != 'WT' @@ -12560,7 +12560,7 @@ - + <WT> shall not contain <TH> parentStandardType != 'WT' @@ -12572,7 +12572,7 @@ - + <WT> shall not contain <TD> parentStandardType != 'WT' @@ -12584,7 +12584,7 @@ - + <WT> shall not contain <THead> parentStandardType != 'WT' @@ -12596,7 +12596,7 @@ - + <WT> shall not contain <TBody> parentStandardType != 'WT' @@ -12608,7 +12608,7 @@ - + <WT> shall not contain <TFoot> parentStandardType != 'WT' @@ -12620,7 +12620,7 @@ - + <WT> shall not contain <Caption> parentStandardType != 'WT' @@ -12632,7 +12632,7 @@ - + <WT> shall not contain <Figure> parentStandardType != 'WT' @@ -12644,7 +12644,7 @@ - + <WT> shall not contain <Formula> parentStandardType != 'WT' @@ -12656,7 +12656,7 @@ - + <WP> shall not contain <Document> parentStandardType != 'WP' @@ -12668,7 +12668,7 @@ - + <WP> shall not contain <DocumentFragment> parentStandardType != 'WP' @@ -12680,7 +12680,7 @@ - + <WP> shall not contain <Part> parentStandardType != 'WP' @@ -12692,7 +12692,7 @@ - + <WP> shall not contain <Art> parentStandardType != 'WP' @@ -12704,7 +12704,7 @@ - + <WP> shall not contain <Div> parentStandardType != 'WP' @@ -12716,7 +12716,7 @@ - + <WP> shall not contain <Sect> parentStandardType != 'WP' @@ -12728,7 +12728,7 @@ - + <WP> shall not contain <TOC> parentStandardType != 'WP' @@ -12740,7 +12740,7 @@ - + <WP> shall not contain <TOCI> parentStandardType != 'WP' @@ -12752,7 +12752,7 @@ - + <WP> shall not contain <Aside> parentStandardType != 'WP' @@ -12764,7 +12764,7 @@ - + <WP> shall not contain <BlockQuote> parentStandardType != 'WP' @@ -12776,7 +12776,7 @@ - + <WP> shall not contain <P> parentStandardType != 'WP' @@ -12788,7 +12788,7 @@ - + <WP> shall not contain <Note> parentStandardType != 'WP' @@ -12800,7 +12800,7 @@ - + <WP> shall not contain <Code> parentStandardType != 'WP' @@ -12812,7 +12812,7 @@ - + <WP> shall not contain <Hn> parentStandardType != 'WP' @@ -12824,7 +12824,7 @@ - + <WP> shall not contain <H> parentStandardType != 'WP' @@ -12836,7 +12836,7 @@ - + <WP> shall not contain <Title> parentStandardType != 'WP' @@ -12848,7 +12848,7 @@ - + <WP> shall not contain <Lbl> parentStandardType != 'WP' @@ -12860,7 +12860,7 @@ - + <WP> shall not contain <Ruby> parentStandardType != 'WP' @@ -12872,7 +12872,7 @@ - + <WP> shall not contain <RB> parentStandardType != 'WP' @@ -12884,7 +12884,7 @@ - + <WP> shall not contain <RT> parentStandardType != 'WP' @@ -12896,7 +12896,7 @@ - + <WP> shall not contain <RP> parentStandardType != 'WP' @@ -12908,7 +12908,7 @@ - + <WP> shall not contain <Warichu> parentStandardType != 'WP' @@ -12920,7 +12920,7 @@ - + <WP> shall not contain <WT> parentStandardType != 'WP' @@ -12932,7 +12932,7 @@ - + <WP> shall not contain <WP> parentStandardType != 'WP' @@ -12944,7 +12944,7 @@ - + <WP> shall not contain <FENote> parentStandardType != 'WP' @@ -12956,7 +12956,7 @@ - + <WP> shall not contain <Index> parentStandardType != 'WP' @@ -12968,7 +12968,7 @@ - + <WP> shall not contain <L> parentStandardType != 'WP' @@ -12980,7 +12980,7 @@ - + <WP> shall not contain <LI> parentStandardType != 'WP' @@ -12992,7 +12992,7 @@ - + <WP> shall not contain <LBody> parentStandardType != 'WP' @@ -13004,7 +13004,7 @@ - + <WP> shall not contain <BibEntry> parentStandardType != 'WP' @@ -13016,7 +13016,7 @@ - + <WP> shall not contain <Table> parentStandardType != 'WP' @@ -13028,7 +13028,7 @@ - + <WP> shall not contain <TR> parentStandardType != 'WP' @@ -13040,7 +13040,7 @@ - + <WP> shall not contain <TH> parentStandardType != 'WP' @@ -13052,7 +13052,7 @@ - + <WP> shall not contain <TD> parentStandardType != 'WP' @@ -13064,7 +13064,7 @@ - + <WP> shall not contain <THead> parentStandardType != 'WP' @@ -13076,7 +13076,7 @@ - + <WP> shall not contain <TBody> parentStandardType != 'WP' @@ -13088,7 +13088,7 @@ - + <WP> shall not contain <TFoot> parentStandardType != 'WP' @@ -13100,7 +13100,7 @@ - + <WP> shall not contain <Caption> parentStandardType != 'WP' @@ -13112,7 +13112,7 @@ - + <WP> shall not contain <Figure> parentStandardType != 'WP' @@ -13124,7 +13124,7 @@ - + <WP> shall not contain <Formula> parentStandardType != 'WP' @@ -13136,7 +13136,7 @@ - + <FENote> shall not contain <Document> parentStandardType != 'FENote' @@ -13148,7 +13148,7 @@ - + <FENote> shall not contain <TOC> parentStandardType != 'FENote' @@ -13160,7 +13160,7 @@ - + <FENote> shall not contain <TOCI> parentStandardType != 'FENote' @@ -13172,7 +13172,7 @@ - + <FENote> shall not contain <Hn> parentStandardType != 'FENote' @@ -13184,7 +13184,7 @@ - + <FENote> shall not contain <H> parentStandardType != 'FENote' @@ -13196,7 +13196,7 @@ - + <FENote> shall not contain <Title> parentStandardType != 'FENote' @@ -13208,7 +13208,7 @@ - + <FENote> shall not contain <RB> parentStandardType != 'FENote' @@ -13220,7 +13220,7 @@ - + <FENote> shall not contain <RT> parentStandardType != 'FENote' @@ -13232,7 +13232,7 @@ - + <FENote> shall not contain <RP> parentStandardType != 'FENote' @@ -13244,7 +13244,7 @@ - + <FENote> shall not contain <WT> parentStandardType != 'FENote' @@ -13256,7 +13256,7 @@ - + <FENote> shall not contain <WP> parentStandardType != 'FENote' @@ -13268,7 +13268,7 @@ - + <FENote> shall not contain <Index> parentStandardType != 'FENote' @@ -13280,7 +13280,7 @@ - + <FENote> shall not contain <LI> parentStandardType != 'FENote' @@ -13292,7 +13292,7 @@ - + <FENote> shall not contain <LBody> parentStandardType != 'FENote' @@ -13304,7 +13304,7 @@ - + <FENote> shall not contain <BibEntry> parentStandardType != 'FENote' @@ -13316,7 +13316,7 @@ - + <FENote> shall not contain <TR> parentStandardType != 'FENote' @@ -13328,7 +13328,7 @@ - + <FENote> shall not contain <TH> parentStandardType != 'FENote' @@ -13340,7 +13340,7 @@ - + <FENote> shall not contain <TD> parentStandardType != 'FENote' @@ -13352,7 +13352,7 @@ - + <FENote> shall not contain <THead> parentStandardType != 'FENote' @@ -13364,7 +13364,7 @@ - + <FENote> shall not contain <TBody> parentStandardType != 'FENote' @@ -13376,7 +13376,7 @@ - + <FENote> shall not contain <TFoot> parentStandardType != 'FENote' @@ -13388,7 +13388,7 @@ - + <Index> shall not contain <Document> parentStandardType != 'Index' @@ -13400,7 +13400,7 @@ - + <Index> shall not contain <DocumentFragment> parentStandardType != 'Index' @@ -13412,7 +13412,7 @@ - + <Index> shall not contain <Art> parentStandardType != 'Index' @@ -13424,7 +13424,7 @@ - + <Index> shall not contain <TOC> parentStandardType != 'Index' @@ -13436,7 +13436,7 @@ - + <Index> shall not contain <TOCI> parentStandardType != 'Index' @@ -13448,7 +13448,7 @@ - + <Index> shall not contain <Aside> parentStandardType != 'Index' @@ -13460,7 +13460,7 @@ - + <Index> shall not contain <BlockQuote> parentStandardType != 'Index' @@ -13472,7 +13472,7 @@ - + <Index> shall not contain <Code> parentStandardType != 'Index' @@ -13484,7 +13484,7 @@ - + <Index> shall not contain <Title> parentStandardType != 'Index' @@ -13496,7 +13496,7 @@ - + <Index> shall not contain <Sub> parentStandardType != 'Index' @@ -13508,7 +13508,7 @@ - + <Index> shall not contain <Lbl> parentStandardType != 'Index' @@ -13520,7 +13520,7 @@ - + <Index> shall not contain <Em> parentStandardType != 'Index' @@ -13532,7 +13532,7 @@ - + <Index> shall not contain <Strong> parentStandardType != 'Index' @@ -13544,7 +13544,7 @@ - + <Index> shall not contain <Span> parentStandardType != 'Index' @@ -13556,7 +13556,7 @@ - + <Index> shall not contain <Quote> parentStandardType != 'Index' @@ -13568,7 +13568,7 @@ - + <Index> shall not contain <Link> parentStandardType != 'Index' @@ -13580,7 +13580,7 @@ - + <Index> shall not contain <Form> parentStandardType != 'Index' @@ -13592,7 +13592,7 @@ - + <Index> shall not contain <Ruby> parentStandardType != 'Index' @@ -13604,7 +13604,7 @@ - + <Index> shall not contain <RB> parentStandardType != 'Index' @@ -13616,7 +13616,7 @@ - + <Index> shall not contain <RT> parentStandardType != 'Index' @@ -13628,7 +13628,7 @@ - + <Index> shall not contain <RP> parentStandardType != 'Index' @@ -13640,7 +13640,7 @@ - + <Index> shall not contain <Warichu> parentStandardType != 'Index' @@ -13652,7 +13652,7 @@ - + <Index> shall not contain <WT> parentStandardType != 'Index' @@ -13664,7 +13664,7 @@ - + <Index> shall not contain <WP> parentStandardType != 'Index' @@ -13676,7 +13676,7 @@ - + <Index> shall not contain <Index> parentStandardType != 'Index' @@ -13688,7 +13688,7 @@ - + <Index> shall not contain <LI> parentStandardType != 'Index' @@ -13700,7 +13700,7 @@ - + <Index> shall not contain <LBody> parentStandardType != 'Index' @@ -13712,7 +13712,7 @@ - + <Index> shall not contain <BibEntry> parentStandardType != 'Index' @@ -13724,7 +13724,7 @@ - + <Index> shall not contain <TR> parentStandardType != 'Index' @@ -13736,7 +13736,7 @@ - + <Index> shall not contain <TH> parentStandardType != 'Index' @@ -13748,7 +13748,7 @@ - + <Index> shall not contain <TD> parentStandardType != 'Index' @@ -13760,7 +13760,7 @@ - + <Index> shall not contain <THead> parentStandardType != 'Index' @@ -13772,7 +13772,7 @@ - + <Index> shall not contain <TBody> parentStandardType != 'Index' @@ -13784,7 +13784,7 @@ - + <Index> shall not contain <TFoot> parentStandardType != 'Index' @@ -13796,7 +13796,7 @@ - + <Index> shall not contain content items hasContentItems == false @@ -13808,7 +13808,7 @@ - + <L> shall not contain <Document> parentStandardType != 'L' @@ -13820,7 +13820,7 @@ - + <L> shall not contain <DocumentFragment> parentStandardType != 'L' @@ -13832,7 +13832,7 @@ - + <L> shall not contain <Part> parentStandardType != 'L' @@ -13844,7 +13844,7 @@ - + <L> shall not contain <Art> parentStandardType != 'L' @@ -13856,7 +13856,7 @@ - + <L> shall not contain <Div> parentStandardType != 'L' @@ -13868,7 +13868,7 @@ - + <L> shall not contain <Sect> parentStandardType != 'L' @@ -13880,7 +13880,7 @@ - + <L> shall not contain <TOC> parentStandardType != 'L' @@ -13892,7 +13892,7 @@ - + <L> shall not contain <TOCI> parentStandardType != 'L' @@ -13904,7 +13904,7 @@ - + <L> shall not contain <Aside> parentStandardType != 'L' @@ -13916,7 +13916,7 @@ - + <L> shall not contain <BlockQuote> parentStandardType != 'L' @@ -13928,7 +13928,7 @@ - + <L> shall not contain <P> parentStandardType != 'L' @@ -13940,7 +13940,7 @@ - + <L> shall not contain <Note> parentStandardType != 'L' @@ -13952,7 +13952,7 @@ - + <L> shall not contain <Code> parentStandardType != 'L' @@ -13964,7 +13964,7 @@ - + <L> shall not contain <Hn> parentStandardType != 'L' @@ -13976,7 +13976,7 @@ - + <L> shall not contain <H> parentStandardType != 'L' @@ -13988,7 +13988,7 @@ - + <L> shall not contain <Title> parentStandardType != 'L' @@ -14000,7 +14000,7 @@ - + <L> shall not contain <Sub> parentStandardType != 'L' @@ -14012,7 +14012,7 @@ - + <L> shall not contain <Lbl> parentStandardType != 'L' @@ -14024,7 +14024,7 @@ - + <L> shall not contain <Em> parentStandardType != 'L' @@ -14036,7 +14036,7 @@ - + <L> shall not contain <Strong> parentStandardType != 'L' @@ -14048,7 +14048,7 @@ - + <L> shall not contain <Span> parentStandardType != 'L' @@ -14060,7 +14060,7 @@ - + <L> shall not contain <Quote> parentStandardType != 'L' @@ -14072,7 +14072,7 @@ - + <L> shall not contain <Link> parentStandardType != 'L' @@ -14084,7 +14084,7 @@ - + <L> shall not contain <Reference> parentStandardType != 'L' @@ -14096,7 +14096,7 @@ - + <L> shall not contain <Annot> parentStandardType != 'L' @@ -14108,7 +14108,7 @@ - + <L> shall not contain <Form> parentStandardType != 'L' @@ -14120,7 +14120,7 @@ - + <L> shall not contain <Ruby> parentStandardType != 'L' @@ -14132,7 +14132,7 @@ - + <L> shall not contain <RB> parentStandardType != 'L' @@ -14144,7 +14144,7 @@ - + <L> shall not contain <RT> parentStandardType != 'L' @@ -14156,7 +14156,7 @@ - + <L> shall not contain <RP> parentStandardType != 'L' @@ -14168,7 +14168,7 @@ - + <L> shall not contain <Warichu> parentStandardType != 'L' @@ -14180,7 +14180,7 @@ - + <L> shall not contain <WT> parentStandardType != 'L' @@ -14192,7 +14192,7 @@ - + <L> shall not contain <WP> parentStandardType != 'L' @@ -14204,7 +14204,7 @@ - + <L> shall not contain <FENote> parentStandardType != 'L' @@ -14216,7 +14216,7 @@ - + <L> shall not contain <Index> parentStandardType != 'L' @@ -14228,7 +14228,7 @@ - + <L> shall not contain <LBody> parentStandardType != 'L' @@ -14240,7 +14240,7 @@ - + <L> shall not contain <BibEntry> parentStandardType != 'L' @@ -14252,7 +14252,7 @@ - + <L> shall not contain <Table> parentStandardType != 'L' @@ -14264,7 +14264,7 @@ - + <L> shall not contain <TR> parentStandardType != 'L' @@ -14276,7 +14276,7 @@ - + <L> shall not contain <TH> parentStandardType != 'L' @@ -14288,7 +14288,7 @@ - + <L> shall not contain <TD> parentStandardType != 'L' @@ -14300,7 +14300,7 @@ - + <L> shall not contain <THead> parentStandardType != 'L' @@ -14312,7 +14312,7 @@ - + <L> shall not contain <TBody> parentStandardType != 'L' @@ -14324,7 +14324,7 @@ - + <L> shall not contain <TFoot> parentStandardType != 'L' @@ -14336,7 +14336,7 @@ - + <L> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -14348,7 +14348,7 @@ - + <L> shall not contain <Figure> parentStandardType != 'L' @@ -14360,7 +14360,7 @@ - + <L> shall not contain <Formula> parentStandardType != 'L' @@ -14372,7 +14372,7 @@ - + <L> shall not contain content items hasContentItems == false @@ -14384,7 +14384,7 @@ - + <LI> shall not contain <Document> parentStandardType != 'LI' @@ -14396,7 +14396,7 @@ - + <LI> shall not contain <DocumentFragment> parentStandardType != 'LI' @@ -14408,7 +14408,7 @@ - + <LI> shall not contain <Part> parentStandardType != 'LI' @@ -14420,7 +14420,7 @@ - + <LI> shall not contain <Art> parentStandardType != 'LI' @@ -14432,7 +14432,7 @@ - + <LI> shall not contain <Sect> parentStandardType != 'LI' @@ -14444,7 +14444,7 @@ - + <LI> shall not contain <TOC> parentStandardType != 'LI' @@ -14456,7 +14456,7 @@ - + <LI> shall not contain <TOCI> parentStandardType != 'LI' @@ -14468,7 +14468,7 @@ - + <LI> shall not contain <Aside> parentStandardType != 'LI' @@ -14480,7 +14480,7 @@ - + <LI> shall not contain <BlockQuote> parentStandardType != 'LI' @@ -14492,7 +14492,7 @@ - + <LI> shall not contain <P> parentStandardType != 'LI' @@ -14504,7 +14504,7 @@ - + <LI> shall not contain <Note> parentStandardType != 'LI' @@ -14516,7 +14516,7 @@ - + <LI> shall not contain <Code> parentStandardType != 'LI' @@ -14528,7 +14528,7 @@ - + <LI> shall not contain <Hn> parentStandardType != 'LI' @@ -14540,7 +14540,7 @@ - + <LI> shall not contain <H> parentStandardType != 'LI' @@ -14552,7 +14552,7 @@ - + <LI> shall not contain <Title> parentStandardType != 'LI' @@ -14564,7 +14564,7 @@ - + <LI> shall not contain <Sub> parentStandardType != 'LI' @@ -14576,7 +14576,7 @@ - + <LI> shall not contain <Em> parentStandardType != 'LI' @@ -14588,7 +14588,7 @@ - + <LI> shall not contain <Strong> parentStandardType != 'LI' @@ -14600,7 +14600,7 @@ - + <LI> shall not contain <Span> parentStandardType != 'LI' @@ -14612,7 +14612,7 @@ - + <LI> shall not contain <Quote> parentStandardType != 'LI' @@ -14624,7 +14624,7 @@ - + <LI> shall not contain <Link> parentStandardType != 'LI' @@ -14636,7 +14636,7 @@ - + <LI> shall not contain <Reference> parentStandardType != 'LI' @@ -14648,7 +14648,7 @@ - + <LI> shall not contain <Annot> parentStandardType != 'LI' @@ -14660,7 +14660,7 @@ - + <LI> shall not contain <Form> parentStandardType != 'LI' @@ -14672,7 +14672,7 @@ - + <LI> shall not contain <Ruby> parentStandardType != 'LI' @@ -14684,7 +14684,7 @@ - + <LI> shall not contain <RB> parentStandardType != 'LI' @@ -14696,7 +14696,7 @@ - + <LI> shall not contain <RT> parentStandardType != 'LI' @@ -14708,7 +14708,7 @@ - + <LI> shall not contain <RP> parentStandardType != 'LI' @@ -14720,7 +14720,7 @@ - + <LI> shall not contain <Warichu> parentStandardType != 'LI' @@ -14732,7 +14732,7 @@ - + <LI> shall not contain <WT> parentStandardType != 'LI' @@ -14744,7 +14744,7 @@ - + <LI> shall not contain <WP> parentStandardType != 'LI' @@ -14756,7 +14756,7 @@ - + <LI> shall not contain <FENote> parentStandardType != 'LI' @@ -14768,7 +14768,7 @@ - + <LI> shall not contain <Index> parentStandardType != 'LI' @@ -14780,7 +14780,7 @@ - + <LI> shall not contain <L> parentStandardType != 'LI' @@ -14792,7 +14792,7 @@ - + <LI> shall not contain <LI> parentStandardType != 'LI' @@ -14804,7 +14804,7 @@ - + <LI> shall not contain <BibEntry> parentStandardType != 'LI' @@ -14816,7 +14816,7 @@ - + <LI> shall not contain <Table> parentStandardType != 'LI' @@ -14828,7 +14828,7 @@ - + <LI> shall not contain <TR> parentStandardType != 'LI' @@ -14840,7 +14840,7 @@ - + <LI> shall not contain <TH> parentStandardType != 'LI' @@ -14852,7 +14852,7 @@ - + <LI> shall not contain <TD> parentStandardType != 'LI' @@ -14864,7 +14864,7 @@ - + <LI> shall not contain <THead> parentStandardType != 'LI' @@ -14876,7 +14876,7 @@ - + <LI> shall not contain <TBody> parentStandardType != 'LI' @@ -14888,7 +14888,7 @@ - + <LI> shall not contain <TFoot> parentStandardType != 'LI' @@ -14900,7 +14900,7 @@ - + <LI> shall not contain <Caption> parentStandardType != 'LI' @@ -14912,7 +14912,7 @@ - + <LI> shall not contain <Figure> parentStandardType != 'LI' @@ -14924,7 +14924,7 @@ - + <LI> shall not contain <Formula> parentStandardType != 'LI' @@ -14936,7 +14936,7 @@ - + <LBody> shall not contain <Document> parentStandardType != 'LBody' @@ -14948,7 +14948,7 @@ - + <LBody> shall not contain <DocumentFragment> parentStandardType != 'LBody' @@ -14960,7 +14960,7 @@ - + <LBody> shall not contain <TOC> parentStandardType != 'LBody' @@ -14972,7 +14972,7 @@ - + <LBody> shall not contain <TOCI> parentStandardType != 'LBody' @@ -14984,7 +14984,7 @@ - + <LBody> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -14996,7 +14996,7 @@ - + <LBody> shall not contain <Title> parentStandardType != 'LBody' @@ -15008,7 +15008,7 @@ - + <LBody> shall not contain <Lbl> parentStandardType != 'LBody' @@ -15020,7 +15020,7 @@ - + <LBody> shall not contain <RB> parentStandardType != 'LBody' @@ -15032,7 +15032,7 @@ - + <LBody> shall not contain <RT> parentStandardType != 'LBody' @@ -15044,7 +15044,7 @@ - + <LBody> shall not contain <RP> parentStandardType != 'LBody' @@ -15056,7 +15056,7 @@ - + <LBody> shall not contain <WT> parentStandardType != 'LBody' @@ -15068,7 +15068,7 @@ - + <LBody> shall not contain <WP> parentStandardType != 'LBody' @@ -15080,7 +15080,7 @@ - + <LBody> shall not contain <LI> parentStandardType != 'LBody' @@ -15092,7 +15092,7 @@ - + <LBody> shall not contain <LBody> parentStandardType != 'LBody' @@ -15104,7 +15104,7 @@ - + <LBody> shall not contain <TR> parentStandardType != 'LBody' @@ -15116,7 +15116,7 @@ - + <LBody> shall not contain <TH> parentStandardType != 'LBody' @@ -15128,7 +15128,7 @@ - + <LBody> shall not contain <TD> parentStandardType != 'LBody' @@ -15140,7 +15140,7 @@ - + <LBody> shall not contain <THead> parentStandardType != 'LBody' @@ -15152,7 +15152,7 @@ - + <LBody> shall not contain <TBody> parentStandardType != 'LBody' @@ -15164,7 +15164,7 @@ - + <LBody> shall not contain <TFoot> parentStandardType != 'LBody' @@ -15176,7 +15176,7 @@ - + <LBody> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -15188,7 +15188,7 @@ - + <BibEntry> shall not contain <Document> parentStandardType != 'BibEntry' @@ -15200,7 +15200,7 @@ - + <BibEntry> shall not contain <DocumentFragment> parentStandardType != 'BibEntry' @@ -15212,7 +15212,7 @@ - + <BibEntry> shall not contain <Art> parentStandardType != 'BibEntry' @@ -15224,7 +15224,7 @@ - + <BibEntry> shall not contain <Sect> parentStandardType != 'BibEntry' @@ -15236,7 +15236,7 @@ - + <BibEntry> shall not contain <TOC> parentStandardType != 'BibEntry' @@ -15248,7 +15248,7 @@ - + <BibEntry> shall not contain <TOCI> parentStandardType != 'BibEntry' @@ -15260,7 +15260,7 @@ - + <BibEntry> shall not contain <Aside> parentStandardType != 'BibEntry' @@ -15272,7 +15272,7 @@ - + <BibEntry> shall not contain <BlockQuote> parentStandardType != 'BibEntry' @@ -15284,7 +15284,7 @@ - + <BibEntry> shall not contain <Code> parentStandardType != 'BibEntry' @@ -15296,7 +15296,7 @@ - + <BibEntry> shall not contain <Hn> parentStandardType != 'BibEntry' @@ -15308,7 +15308,7 @@ - + <BibEntry> shall not contain <H> parentStandardType != 'BibEntry' @@ -15320,7 +15320,7 @@ - + <BibEntry> shall not contain <Title> parentStandardType != 'BibEntry' @@ -15332,7 +15332,7 @@ - + <BibEntry> shall not contain <Sub> parentStandardType != 'BibEntry' @@ -15344,7 +15344,7 @@ - + <BibEntry> shall not contain <Quote> parentStandardType != 'BibEntry' @@ -15356,7 +15356,7 @@ - + <BibEntry> shall not contain <Form> parentStandardType != 'BibEntry' @@ -15368,7 +15368,7 @@ - + <BibEntry> shall not contain <Ruby> parentStandardType != 'BibEntry' @@ -15380,7 +15380,7 @@ - + <BibEntry> shall not contain <RB> parentStandardType != 'BibEntry' @@ -15392,7 +15392,7 @@ - + <BibEntry> shall not contain <RT> parentStandardType != 'BibEntry' @@ -15404,7 +15404,7 @@ - + <BibEntry> shall not contain <RP> parentStandardType != 'BibEntry' @@ -15416,7 +15416,7 @@ - + <BibEntry> shall not contain <Warichu> parentStandardType != 'BibEntry' @@ -15428,7 +15428,7 @@ - + <BibEntry> shall not contain <WT> parentStandardType != 'BibEntry' @@ -15440,7 +15440,7 @@ - + <BibEntry> shall not contain <WP> parentStandardType != 'BibEntry' @@ -15452,7 +15452,7 @@ - + <BibEntry> shall not contain <Index> parentStandardType != 'BibEntry' @@ -15464,7 +15464,7 @@ - + <BibEntry> shall not contain <L> parentStandardType != 'BibEntry' @@ -15476,7 +15476,7 @@ - + <BibEntry> shall not contain <LI> parentStandardType != 'BibEntry' @@ -15488,7 +15488,7 @@ - + <BibEntry> shall not contain <LBody> parentStandardType != 'BibEntry' @@ -15500,7 +15500,7 @@ - + <BibEntry> shall not contain <BibEntry> parentStandardType != 'BibEntry' @@ -15512,7 +15512,7 @@ - + <BibEntry> shall not contain <Table> parentStandardType != 'BibEntry' @@ -15524,7 +15524,7 @@ - + <BibEntry> shall not contain <TR> parentStandardType != 'BibEntry' @@ -15536,7 +15536,7 @@ - + <BibEntry> shall not contain <TH> parentStandardType != 'BibEntry' @@ -15548,7 +15548,7 @@ - + <BibEntry> shall not contain <TD> parentStandardType != 'BibEntry' @@ -15560,7 +15560,7 @@ - + <BibEntry> shall not contain <THead> parentStandardType != 'BibEntry' @@ -15572,7 +15572,7 @@ - + <BibEntry> shall not contain <TBody> parentStandardType != 'BibEntry' @@ -15584,7 +15584,7 @@ - + <BibEntry> shall not contain <TFoot> parentStandardType != 'BibEntry' @@ -15596,7 +15596,7 @@ - + <BibEntry> shall not contain <Caption> parentStandardType != 'BibEntry' @@ -15608,7 +15608,7 @@ - + <BibEntry> shall not contain <Formula> parentStandardType != 'BibEntry' @@ -15620,7 +15620,7 @@ - + <Table> shall not contain <Document> parentStandardType != 'Table' @@ -15632,7 +15632,7 @@ - + <Table> shall not contain <DocumentFragment> parentStandardType != 'Table' @@ -15644,7 +15644,7 @@ - + <Table> shall not contain <Part> parentStandardType != 'Table' @@ -15656,7 +15656,7 @@ - + <Table> shall not contain <Art> parentStandardType != 'Table' @@ -15668,7 +15668,7 @@ - + <Table> shall not contain <Div> parentStandardType != 'Table' @@ -15680,7 +15680,7 @@ - + <Table> shall not contain <Sect> parentStandardType != 'Table' @@ -15692,7 +15692,7 @@ - + <Table> shall not contain <TOC> parentStandardType != 'Table' @@ -15704,7 +15704,7 @@ - + <Table> shall not contain <TOCI> parentStandardType != 'Table' @@ -15716,7 +15716,7 @@ - + <Table> shall not contain <Aside> parentStandardType != 'Table' @@ -15728,7 +15728,7 @@ - + <Table> shall not contain <BlockQuote> parentStandardType != 'Table' @@ -15740,7 +15740,7 @@ - + <Table> shall not contain <P> parentStandardType != 'Table' @@ -15752,7 +15752,7 @@ - + <Table> shall not contain <Note> parentStandardType != 'Table' @@ -15764,7 +15764,7 @@ - + <Table> shall not contain <Code> parentStandardType != 'Table' @@ -15776,7 +15776,7 @@ - + <Table> shall not contain <Hn> parentStandardType != 'Table' @@ -15788,7 +15788,7 @@ - + <Table> shall not contain <H> parentStandardType != 'Table' @@ -15800,7 +15800,7 @@ - + <Table> shall not contain <Title> parentStandardType != 'Table' @@ -15812,7 +15812,7 @@ - + <Table> shall not contain <Sub> parentStandardType != 'Table' @@ -15824,7 +15824,7 @@ - + <Table> shall not contain <Lbl> parentStandardType != 'Table' @@ -15836,7 +15836,7 @@ - + <Table> shall not contain <Em> parentStandardType != 'Table' @@ -15848,7 +15848,7 @@ - + <Table> shall not contain <Strong> parentStandardType != 'Table' @@ -15860,7 +15860,7 @@ - + <Table> shall not contain <Span> parentStandardType != 'Table' @@ -15872,7 +15872,7 @@ - + <Table> shall not contain <Quote> parentStandardType != 'Table' @@ -15884,7 +15884,7 @@ - + <Table> shall not contain <Link> parentStandardType != 'Table' @@ -15896,7 +15896,7 @@ - + <Table> shall not contain <Reference> parentStandardType != 'Table' @@ -15908,7 +15908,7 @@ - + <Table> shall not contain <Annot> parentStandardType != 'Table' @@ -15920,7 +15920,7 @@ - + <Table> shall not contain <Form> parentStandardType != 'Table' @@ -15932,7 +15932,7 @@ - + <Table> shall not contain <Ruby> parentStandardType != 'Table' @@ -15944,7 +15944,7 @@ - + <Table> shall not contain <RB> parentStandardType != 'Table' @@ -15956,7 +15956,7 @@ - + <Table> shall not contain <RT> parentStandardType != 'Table' @@ -15968,7 +15968,7 @@ - + <Table> shall not contain <RP> parentStandardType != 'Table' @@ -15980,7 +15980,7 @@ - + <Table> shall not contain <Warichu> parentStandardType != 'Table' @@ -15992,7 +15992,7 @@ - + <Table> shall not contain <WT> parentStandardType != 'Table' @@ -16004,7 +16004,7 @@ - + <Table> shall not contain <WP> parentStandardType != 'Table' @@ -16016,7 +16016,7 @@ - + <Table> shall not contain <FENote> parentStandardType != 'Table' @@ -16028,7 +16028,7 @@ - + <Table> shall not contain <Index> parentStandardType != 'Table' @@ -16040,7 +16040,7 @@ - + <Table> shall not contain <L> parentStandardType != 'Table' @@ -16052,7 +16052,7 @@ - + <Table> shall not contain <LI> parentStandardType != 'Table' @@ -16064,7 +16064,7 @@ - + <Table> shall not contain <LBody> parentStandardType != 'Table' @@ -16076,7 +16076,7 @@ - + <Table> shall not contain <BibEntry> parentStandardType != 'Table' @@ -16088,7 +16088,7 @@ - + <Table> shall not contain <Table> parentStandardType != 'Table' @@ -16100,7 +16100,7 @@ - + <Table> shall not contain <TH> parentStandardType != 'Table' @@ -16112,7 +16112,7 @@ - + <Table> shall not contain <TD> parentStandardType != 'Table' @@ -16124,7 +16124,7 @@ - + <Table> shall contain at most one <THead> kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 @@ -16136,7 +16136,7 @@ - + <Table> shall contain at most one <TFoot> kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 @@ -16148,7 +16148,7 @@ - + <Table> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -16160,7 +16160,7 @@ - + <Table> shall not contain <Figure> parentStandardType != 'Table' @@ -16172,7 +16172,7 @@ - + <Table> shall not contain <Formula> parentStandardType != 'Table' @@ -16184,7 +16184,7 @@ - + <Table> shall not contain content items hasContentItems == false @@ -16196,7 +16196,7 @@ - + <TR> shall not contain <Document> parentStandardType != 'TR' @@ -16208,7 +16208,7 @@ - + <TR> shall not contain <DocumentFragment> parentStandardType != 'TR' @@ -16220,7 +16220,7 @@ - + <TR> shall not contain <Part> parentStandardType != 'TR' @@ -16232,7 +16232,7 @@ - + <TR> shall not contain <Art> parentStandardType != 'TR' @@ -16244,7 +16244,7 @@ - + <TR> shall not contain <Div> parentStandardType != 'TR' @@ -16256,7 +16256,7 @@ - + <TR> shall not contain <Sect> parentStandardType != 'TR' @@ -16268,7 +16268,7 @@ - + <TR> shall not contain <TOC> parentStandardType != 'TR' @@ -16280,7 +16280,7 @@ - + <TR> shall not contain <TOCI> parentStandardType != 'TR' @@ -16292,7 +16292,7 @@ - + <TR> shall not contain <Aside> parentStandardType != 'TR' @@ -16304,7 +16304,7 @@ - + <TR> shall not contain <BlockQuote> parentStandardType != 'TR' @@ -16316,7 +16316,7 @@ - + <TR> shall not contain <P> parentStandardType != 'TR' @@ -16328,7 +16328,7 @@ - + <TR> shall not contain <Note> parentStandardType != 'TR' @@ -16340,7 +16340,7 @@ - + <TR> shall not contain <Code> parentStandardType != 'TR' @@ -16352,7 +16352,7 @@ - + <TR> shall not contain <Hn> parentStandardType != 'TR' @@ -16364,7 +16364,7 @@ - + <TR> shall not contain <H> parentStandardType != 'TR' @@ -16376,7 +16376,7 @@ - + <TR> shall not contain <Title> parentStandardType != 'TR' @@ -16388,7 +16388,7 @@ - + <TR> shall not contain <Sub> parentStandardType != 'TR' @@ -16400,7 +16400,7 @@ - + <TR> shall not contain <Lbl> parentStandardType != 'TR' @@ -16412,7 +16412,7 @@ - + <TR> shall not contain <Em> parentStandardType != 'TR' @@ -16424,7 +16424,7 @@ - + <TR> shall not contain <Strong> parentStandardType != 'TR' @@ -16436,7 +16436,7 @@ - + <TR> shall not contain <Span> parentStandardType != 'TR' @@ -16448,7 +16448,7 @@ - + <TR> shall not contain <Quote> parentStandardType != 'TR' @@ -16460,7 +16460,7 @@ - + <TR> shall not contain <Link> parentStandardType != 'TR' @@ -16472,7 +16472,7 @@ - + <TR> shall not contain <Reference> parentStandardType != 'TR' @@ -16484,7 +16484,7 @@ - + <TR> shall not contain <Annot> parentStandardType != 'TR' @@ -16496,7 +16496,7 @@ - + <TR> shall not contain <Form> parentStandardType != 'TR' @@ -16508,7 +16508,7 @@ - + <TR> shall not contain <Ruby> parentStandardType != 'TR' @@ -16520,7 +16520,7 @@ - + <TR> shall not contain <RB> parentStandardType != 'TR' @@ -16532,7 +16532,7 @@ - + <TR> shall not contain <RT> parentStandardType != 'TR' @@ -16544,7 +16544,7 @@ - + <TR> shall not contain <RP> parentStandardType != 'TR' @@ -16556,7 +16556,7 @@ - + <TR> shall not contain <Warichu> parentStandardType != 'TR' @@ -16568,7 +16568,7 @@ - + <TR> shall not contain <WT> parentStandardType != 'TR' @@ -16580,7 +16580,7 @@ - + <TR> shall not contain <WP> parentStandardType != 'TR' @@ -16592,7 +16592,7 @@ - + <TR> shall not contain <FENote> parentStandardType != 'TR' @@ -16604,7 +16604,7 @@ - + <TR> shall not contain <Index> parentStandardType != 'TR' @@ -16616,7 +16616,7 @@ - + <TR> shall not contain <L> parentStandardType != 'TR' @@ -16628,7 +16628,7 @@ - + <TR> shall not contain <LI> parentStandardType != 'TR' @@ -16640,7 +16640,7 @@ - + <TR> shall not contain <LBody> parentStandardType != 'TR' @@ -16652,7 +16652,7 @@ - + <TR> shall not contain <BibEntry> parentStandardType != 'TR' @@ -16664,7 +16664,7 @@ - + <TR> shall not contain <Table> parentStandardType != 'TR' @@ -16676,7 +16676,7 @@ - + <TR> shall not contain <TR> parentStandardType != 'TR' @@ -16688,7 +16688,7 @@ - + <TR> shall not contain <THead> parentStandardType != 'TR' @@ -16700,7 +16700,7 @@ - + <TR> shall not contain <TBody> parentStandardType != 'TR' @@ -16712,7 +16712,7 @@ - + <TR> shall not contain <TFoot> parentStandardType != 'TR' @@ -16724,7 +16724,7 @@ - + <TR> shall not contain <Caption> parentStandardType != 'TR' @@ -16736,7 +16736,7 @@ - + <TR> shall not contain <Figure> parentStandardType != 'TR' @@ -16748,7 +16748,7 @@ - + <TR> shall not contain <Formula> parentStandardType != 'TR' @@ -16760,7 +16760,7 @@ - + <TR> shall not contain content items hasContentItems == false @@ -16772,7 +16772,7 @@ - + <TH> shall not contain <Document> parentStandardType != 'TH' @@ -16784,7 +16784,7 @@ - + <TH> shall not contain <DocumentFragment> parentStandardType != 'TH' @@ -16796,7 +16796,7 @@ - + <TH> shall not contain <Part> parentStandardType != 'TH' @@ -16808,7 +16808,7 @@ - + <TH> shall not contain <TOC> parentStandardType != 'TH' @@ -16820,7 +16820,7 @@ - + <TH> shall not contain <TOCI> parentStandardType != 'TH' @@ -16832,7 +16832,7 @@ - + <TH> shall not contain <Aside> parentStandardType != 'TH' @@ -16844,7 +16844,7 @@ - + <TH> shall not contain <BlockQuote> parentStandardType != 'TH' @@ -16856,7 +16856,7 @@ - + <TH> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -16868,7 +16868,7 @@ - + <TH> shall not contain <Title> parentStandardType != 'TH' @@ -16880,7 +16880,7 @@ - + <TH> shall not contain <Sub> parentStandardType != 'TH' @@ -16892,7 +16892,7 @@ - + <TH> shall not contain <RB> parentStandardType != 'TH' @@ -16904,7 +16904,7 @@ - + <TH> shall not contain <RT> parentStandardType != 'TH' @@ -16916,7 +16916,7 @@ - + <TH> shall not contain <RP> parentStandardType != 'TH' @@ -16928,7 +16928,7 @@ - + <TH> shall not contain <WT> parentStandardType != 'TH' @@ -16940,7 +16940,7 @@ - + <TH> shall not contain <WP> parentStandardType != 'TH' @@ -16952,7 +16952,7 @@ - + <TH> shall not contain <LI> parentStandardType != 'TH' @@ -16964,7 +16964,7 @@ - + <TH> shall not contain <LBody> parentStandardType != 'TH' @@ -16976,7 +16976,7 @@ - + <TH> shall not contain <TR> parentStandardType != 'TH' @@ -16988,7 +16988,7 @@ - + <TH> shall not contain <TH> parentStandardType != 'TH' @@ -17000,7 +17000,7 @@ - + <TH> shall not contain <TD> parentStandardType != 'TH' @@ -17012,7 +17012,7 @@ - + <TH> shall not contain <THead> parentStandardType != 'TH' @@ -17024,7 +17024,7 @@ - + <TH> shall not contain <TBody> parentStandardType != 'TH' @@ -17036,7 +17036,7 @@ - + <TH> shall not contain <TFoot> parentStandardType != 'TH' @@ -17048,7 +17048,7 @@ - + <TH> shall not contain <Caption> parentStandardType != 'TH' @@ -17060,7 +17060,7 @@ - + <TD> shall not contain <Document> parentStandardType != 'TD' @@ -17072,7 +17072,7 @@ - + <TD> shall not contain <DocumentFragment> parentStandardType != 'TD' @@ -17084,7 +17084,7 @@ - + <TD> shall not contain <Part> parentStandardType != 'TD' @@ -17096,7 +17096,7 @@ - + <TD> shall not contain <TOC> parentStandardType != 'TD' @@ -17108,7 +17108,7 @@ - + <TD> shall not contain <TOCI> parentStandardType != 'TD' @@ -17120,7 +17120,7 @@ - + <TD> shall not contain <Aside> parentStandardType != 'TD' @@ -17132,7 +17132,7 @@ - + <TD> shall not contain <BlockQuote> parentStandardType != 'TD' @@ -17144,7 +17144,7 @@ - + <TD> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -17156,7 +17156,7 @@ - + <TD> shall not contain <Title> parentStandardType != 'TD' @@ -17168,7 +17168,7 @@ - + <TD> shall not contain <Sub> parentStandardType != 'TD' @@ -17180,7 +17180,7 @@ - + <TD> shall not contain <RB> parentStandardType != 'TD' @@ -17192,7 +17192,7 @@ - + <TD> shall not contain <RT> parentStandardType != 'TD' @@ -17204,7 +17204,7 @@ - + <TD> shall not contain <RP> parentStandardType != 'TD' @@ -17216,7 +17216,7 @@ - + <TD> shall not contain <WT> parentStandardType != 'TD' @@ -17228,7 +17228,7 @@ - + <TD> shall not contain <WP> parentStandardType != 'TD' @@ -17240,7 +17240,7 @@ - + <TD> shall not contain <LI> parentStandardType != 'TD' @@ -17252,7 +17252,7 @@ - + <TD> shall not contain <LBody> parentStandardType != 'TD' @@ -17264,7 +17264,7 @@ - + <TD> shall not contain <TR> parentStandardType != 'TD' @@ -17276,7 +17276,7 @@ - + <TD> shall not contain <TH> parentStandardType != 'TD' @@ -17288,7 +17288,7 @@ - + <TD> shall not contain <TD> parentStandardType != 'TD' @@ -17300,7 +17300,7 @@ - + <TD> shall not contain <THead> parentStandardType != 'TD' @@ -17312,7 +17312,7 @@ - + <TD> shall not contain <TBody> parentStandardType != 'TD' @@ -17324,7 +17324,7 @@ - + <TD> shall not contain <TFoot> parentStandardType != 'TD' @@ -17336,7 +17336,7 @@ - + <TD> shall not contain <Caption> parentStandardType != 'TD' @@ -17348,7 +17348,7 @@ - + <THead> shall not contain <Document> parentStandardType != 'THead' @@ -17360,7 +17360,7 @@ - + <THead> shall not contain <DocumentFragment> parentStandardType != 'THead' @@ -17372,7 +17372,7 @@ - + <THead> shall not contain <Part> parentStandardType != 'THead' @@ -17384,7 +17384,7 @@ - + <THead> shall not contain <Art> parentStandardType != 'THead' @@ -17396,7 +17396,7 @@ - + <THead> shall not contain <Div> parentStandardType != 'THead' @@ -17408,7 +17408,7 @@ - + <THead> shall not contain <Sect> parentStandardType != 'THead' @@ -17420,7 +17420,7 @@ - + <THead> shall not contain <TOC> parentStandardType != 'THead' @@ -17432,7 +17432,7 @@ - + <THead> shall not contain <TOCI> parentStandardType != 'THead' @@ -17444,7 +17444,7 @@ - + <THead> shall not contain <Aside> parentStandardType != 'THead' @@ -17456,7 +17456,7 @@ - + <THead> shall not contain <BlockQuote> parentStandardType != 'THead' @@ -17468,7 +17468,7 @@ - + <THead> shall not contain <P> parentStandardType != 'THead' @@ -17480,7 +17480,7 @@ - + <THead> shall not contain <Note> parentStandardType != 'THead' @@ -17492,7 +17492,7 @@ - + <THead> shall not contain <Code> parentStandardType != 'THead' @@ -17504,7 +17504,7 @@ - + <THead> shall not contain <Hn> parentStandardType != 'THead' @@ -17516,7 +17516,7 @@ - + <THead> shall not contain <H> parentStandardType != 'THead' @@ -17528,7 +17528,7 @@ - + <THead> shall not contain <Title> parentStandardType != 'THead' @@ -17540,7 +17540,7 @@ - + <THead> shall not contain <Sub> parentStandardType != 'THead' @@ -17552,7 +17552,7 @@ - + <THead> shall not contain <Lbl> parentStandardType != 'THead' @@ -17564,7 +17564,7 @@ - + <THead> shall not contain <Em> parentStandardType != 'THead' @@ -17576,7 +17576,7 @@ - + <THead> shall not contain <Strong> parentStandardType != 'THead' @@ -17588,7 +17588,7 @@ - + <THead> shall not contain <Span> parentStandardType != 'THead' @@ -17600,7 +17600,7 @@ - + <THead> shall not contain <Quote> parentStandardType != 'THead' @@ -17612,7 +17612,7 @@ - + <THead> shall not contain <Link> parentStandardType != 'THead' @@ -17624,7 +17624,7 @@ - + <THead> shall not contain <Reference> parentStandardType != 'THead' @@ -17636,7 +17636,7 @@ - + <THead> shall not contain <Annot> parentStandardType != 'THead' @@ -17648,7 +17648,7 @@ - + <THead> shall not contain <Form> parentStandardType != 'THead' @@ -17660,7 +17660,7 @@ - + <THead> shall not contain <Ruby> parentStandardType != 'THead' @@ -17672,7 +17672,7 @@ - + <THead> shall not contain <RB> parentStandardType != 'THead' @@ -17684,7 +17684,7 @@ - + <THead> shall not contain <RT> parentStandardType != 'THead' @@ -17696,7 +17696,7 @@ - + <THead> shall not contain <RP> parentStandardType != 'THead' @@ -17708,7 +17708,7 @@ - + <THead> shall not contain <Warichu> parentStandardType != 'THead' @@ -17720,7 +17720,7 @@ - + <THead> shall not contain <WT> parentStandardType != 'THead' @@ -17732,7 +17732,7 @@ - + <THead> shall not contain <WP> parentStandardType != 'THead' @@ -17744,7 +17744,7 @@ - + <THead> shall not contain <FENote> parentStandardType != 'THead' @@ -17756,7 +17756,7 @@ - + <THead> shall not contain <Index> parentStandardType != 'THead' @@ -17768,7 +17768,7 @@ - + <THead> shall not contain <L> parentStandardType != 'THead' @@ -17780,7 +17780,7 @@ - + <THead> shall not contain <LI> parentStandardType != 'THead' @@ -17792,7 +17792,7 @@ - + <THead> shall not contain <LBody> parentStandardType != 'THead' @@ -17804,7 +17804,7 @@ - + <THead> shall not contain <BibEntry> parentStandardType != 'THead' @@ -17816,7 +17816,7 @@ - + <THead> shall not contain <Table> parentStandardType != 'THead' @@ -17828,7 +17828,7 @@ - + <THead> shall not contain <TH> parentStandardType != 'THead' @@ -17840,7 +17840,7 @@ - + <THead> shall not contain <TD> parentStandardType != 'THead' @@ -17852,7 +17852,7 @@ - + <THead> shall not contain <THead> parentStandardType != 'THead' @@ -17864,7 +17864,7 @@ - + <THead> shall not contain <TBody> parentStandardType != 'THead' @@ -17876,7 +17876,7 @@ - + <THead> shall not contain <TFoot> parentStandardType != 'THead' @@ -17888,7 +17888,7 @@ - + <THead> shall not contain <Caption> parentStandardType != 'THead' @@ -17900,7 +17900,7 @@ - + <THead> shall not contain <Figure> parentStandardType != 'THead' @@ -17912,7 +17912,7 @@ - + <THead> shall not contain <Formula> parentStandardType != 'THead' @@ -17924,7 +17924,7 @@ - + <THead> shall not contain content items hasContentItems == false @@ -17936,7 +17936,7 @@ - + <TBody> shall not contain <Document> parentStandardType != 'TBody' @@ -17948,7 +17948,7 @@ - + <TBody> shall not contain <DocumentFragment> parentStandardType != 'TBody' @@ -17960,7 +17960,7 @@ - + <TBody> shall not contain <Part> parentStandardType != 'TBody' @@ -17972,7 +17972,7 @@ - + <TBody> shall not contain <Art> parentStandardType != 'TBody' @@ -17984,7 +17984,7 @@ - + <TBody> shall not contain <Div> parentStandardType != 'TBody' @@ -17996,7 +17996,7 @@ - + <TBody> shall not contain <Sect> parentStandardType != 'TBody' @@ -18008,7 +18008,7 @@ - + <TBody> shall not contain <TOC> parentStandardType != 'TBody' @@ -18020,7 +18020,7 @@ - + <TBody> shall not contain <TOCI> parentStandardType != 'TBody' @@ -18032,7 +18032,7 @@ - + <TBody> shall not contain <Aside> parentStandardType != 'TBody' @@ -18044,7 +18044,7 @@ - + <TBody> shall not contain <BlockQuote> parentStandardType != 'TBody' @@ -18056,7 +18056,7 @@ - + <TBody> shall not contain <P> parentStandardType != 'TBody' @@ -18068,7 +18068,7 @@ - + <TBody> shall not contain <Note> parentStandardType != 'TBody' @@ -18080,7 +18080,7 @@ - + <TBody> shall not contain <Code> parentStandardType != 'TBody' @@ -18092,7 +18092,7 @@ - + <TBody> shall not contain <Hn> parentStandardType != 'TBody' @@ -18104,7 +18104,7 @@ - + <TBody> shall not contain <H> parentStandardType != 'TBody' @@ -18116,7 +18116,7 @@ - + <TBody> shall not contain <Title> parentStandardType != 'TBody' @@ -18128,7 +18128,7 @@ - + <TBody> shall not contain <Sub> parentStandardType != 'TBody' @@ -18140,7 +18140,7 @@ - + <TBody> shall not contain <Lbl> parentStandardType != 'TBody' @@ -18152,7 +18152,7 @@ - + <TBody> shall not contain <Em> parentStandardType != 'TBody' @@ -18164,7 +18164,7 @@ - + <TBody> shall not contain <Strong> parentStandardType != 'TBody' @@ -18176,7 +18176,7 @@ - + <TBody> shall not contain <Span> parentStandardType != 'TBody' @@ -18188,7 +18188,7 @@ - + <TBody> shall not contain <Quote> parentStandardType != 'TBody' @@ -18200,7 +18200,7 @@ - + <TBody> shall not contain <Link> parentStandardType != 'TBody' @@ -18212,7 +18212,7 @@ - + <TBody> shall not contain <Reference> parentStandardType != 'TBody' @@ -18224,7 +18224,7 @@ - + <TBody> shall not contain <Annot> parentStandardType != 'TBody' @@ -18236,7 +18236,7 @@ - + <TBody> shall not contain <Form> parentStandardType != 'TBody' @@ -18248,7 +18248,7 @@ - + <TBody> shall not contain <Ruby> parentStandardType != 'TBody' @@ -18260,7 +18260,7 @@ - + <TBody> shall not contain <RB> parentStandardType != 'TBody' @@ -18272,7 +18272,7 @@ - + <TBody> shall not contain <RT> parentStandardType != 'TBody' @@ -18284,7 +18284,7 @@ - + <TBody> shall not contain <RP> parentStandardType != 'TBody' @@ -18296,7 +18296,7 @@ - + <TBody> shall not contain <Warichu> parentStandardType != 'TBody' @@ -18308,7 +18308,7 @@ - + <TBody> shall not contain <WT> parentStandardType != 'TBody' @@ -18320,7 +18320,7 @@ - + <TBody> shall not contain <WP> parentStandardType != 'TBody' @@ -18332,7 +18332,7 @@ - + <TBody> shall not contain <FENote> parentStandardType != 'TBody' @@ -18344,7 +18344,7 @@ - + <TBody> shall not contain <Index> parentStandardType != 'TBody' @@ -18356,7 +18356,7 @@ - + <TBody> shall not contain <L> parentStandardType != 'TBody' @@ -18368,7 +18368,7 @@ - + <TBody> shall not contain <LI> parentStandardType != 'TBody' @@ -18380,7 +18380,7 @@ - + <TBody> shall not contain <LBody> parentStandardType != 'TBody' @@ -18392,7 +18392,7 @@ - + <TBody> shall not contain <BibEntry> parentStandardType != 'TBody' @@ -18404,7 +18404,7 @@ - + <TBody> shall not contain <Table> parentStandardType != 'TBody' @@ -18416,7 +18416,7 @@ - + <TBody> shall not contain <TH> parentStandardType != 'TBody' @@ -18428,7 +18428,7 @@ - + <TBody> shall not contain <TD> parentStandardType != 'TBody' @@ -18440,7 +18440,7 @@ - + <TBody> shall not contain <THead> parentStandardType != 'TBody' @@ -18452,7 +18452,7 @@ - + <TBody> shall not contain <TBody> parentStandardType != 'TBody' @@ -18464,7 +18464,7 @@ - + <TBody> shall not contain <TFoot> parentStandardType != 'TBody' @@ -18476,7 +18476,7 @@ - + <TBody> shall not contain <Caption> parentStandardType != 'TBody' @@ -18488,7 +18488,7 @@ - + <TBody> shall not contain <Figure> parentStandardType != 'TBody' @@ -18500,7 +18500,7 @@ - + <TBody> shall not contain <Formula> parentStandardType != 'TBody' @@ -18512,7 +18512,7 @@ - + <TBody> shall not contain content items hasContentItems == false @@ -18524,7 +18524,7 @@ - + <TFoot> shall not contain <Document> parentStandardType != 'TFoot' @@ -18536,7 +18536,7 @@ - + <TFoot> shall not contain <DocumentFragment> parentStandardType != 'TFoot' @@ -18548,7 +18548,7 @@ - + <TFoot> shall not contain <Part> parentStandardType != 'TFoot' @@ -18560,7 +18560,7 @@ - + <TFoot> shall not contain <Art> parentStandardType != 'TFoot' @@ -18572,7 +18572,7 @@ - + <TFoot> shall not contain <Div> parentStandardType != 'TFoot' @@ -18584,7 +18584,7 @@ - + <TFoot> shall not contain <Sect> parentStandardType != 'TFoot' @@ -18596,7 +18596,7 @@ - + <TFoot> shall not contain <TOC> parentStandardType != 'TFoot' @@ -18608,7 +18608,7 @@ - + <TFoot> shall not contain <TOCI> parentStandardType != 'TFoot' @@ -18620,7 +18620,7 @@ - + <TFoot> shall not contain <Aside> parentStandardType != 'TFoot' @@ -18632,7 +18632,7 @@ - + <TFoot> shall not contain <BlockQuote> parentStandardType != 'TFoot' @@ -18644,7 +18644,7 @@ - + <TFoot> shall not contain <P> parentStandardType != 'TFoot' @@ -18656,7 +18656,7 @@ - + <TFoot> shall not contain <Note> parentStandardType != 'TFoot' @@ -18668,7 +18668,7 @@ - + <TFoot> shall not contain <Code> parentStandardType != 'TFoot' @@ -18680,7 +18680,7 @@ - + <TFoot> shall not contain <Hn> parentStandardType != 'TFoot' @@ -18692,7 +18692,7 @@ - + <TFoot> shall not contain <H> parentStandardType != 'TFoot' @@ -18704,7 +18704,7 @@ - + <TFoot> shall not contain <Title> parentStandardType != 'TFoot' @@ -18716,7 +18716,7 @@ - + <TFoot> shall not contain <Sub> parentStandardType != 'TFoot' @@ -18728,7 +18728,7 @@ - + <TFoot> shall not contain <Lbl> parentStandardType != 'TFoot' @@ -18740,7 +18740,7 @@ - + <TFoot> shall not contain <Em> parentStandardType != 'TFoot' @@ -18752,7 +18752,7 @@ - + <TFoot> shall not contain <Strong> parentStandardType != 'TFoot' @@ -18764,7 +18764,7 @@ - + <TFoot> shall not contain <Span> parentStandardType != 'TFoot' @@ -18776,7 +18776,7 @@ - + <TFoot> shall not contain <Quote> parentStandardType != 'TFoot' @@ -18788,7 +18788,7 @@ - + <TFoot> shall not contain <Link> parentStandardType != 'TFoot' @@ -18800,7 +18800,7 @@ - + <TFoot> shall not contain <Reference> parentStandardType != 'TFoot' @@ -18812,7 +18812,7 @@ - + <TFoot> shall not contain <Annot> parentStandardType != 'TFoot' @@ -18824,7 +18824,7 @@ - + <TFoot> shall not contain <Form> parentStandardType != 'TFoot' @@ -18836,7 +18836,7 @@ - + <TFoot> shall not contain <Ruby> parentStandardType != 'TFoot' @@ -18848,7 +18848,7 @@ - + <TFoot> shall not contain <RB> parentStandardType != 'TFoot' @@ -18860,7 +18860,7 @@ - + <TFoot> shall not contain <RT> parentStandardType != 'TFoot' @@ -18872,7 +18872,7 @@ - + <TFoot> shall not contain <RP> parentStandardType != 'TFoot' @@ -18884,7 +18884,7 @@ - + <TFoot> shall not contain <Warichu> parentStandardType != 'TFoot' @@ -18896,7 +18896,7 @@ - + <TFoot> shall not contain <WT> parentStandardType != 'TFoot' @@ -18908,7 +18908,7 @@ - + <TFoot> shall not contain <WP> parentStandardType != 'TFoot' @@ -18920,7 +18920,7 @@ - + <TFoot> shall not contain <FENote> parentStandardType != 'TFoot' @@ -18932,7 +18932,7 @@ - + <TFoot> shall not contain <Index> parentStandardType != 'TFoot' @@ -18944,7 +18944,7 @@ - + <TFoot> shall not contain <L> parentStandardType != 'TFoot' @@ -18956,7 +18956,7 @@ - + <TFoot> shall not contain <LI> parentStandardType != 'TFoot' @@ -18968,7 +18968,7 @@ - + <TFoot> shall not contain <LBody> parentStandardType != 'TFoot' @@ -18980,7 +18980,7 @@ - + <TFoot> shall not contain <BibEntry> parentStandardType != 'TFoot' @@ -18992,7 +18992,7 @@ - + <TFoot> shall not contain <Table> parentStandardType != 'TFoot' @@ -19004,7 +19004,7 @@ - + <TFoot> shall not contain <TH> parentStandardType != 'TFoot' @@ -19016,7 +19016,7 @@ - + <TFoot> shall not contain <TD> parentStandardType != 'TFoot' @@ -19028,7 +19028,7 @@ - + <TFoot> shall not contain <THead> parentStandardType != 'TFoot' @@ -19040,7 +19040,7 @@ - + <TFoot> shall not contain <TBody> parentStandardType != 'TFoot' @@ -19052,7 +19052,7 @@ - + <TFoot> shall not contain <TFoot> parentStandardType != 'TFoot' @@ -19064,7 +19064,7 @@ - + <TFoot> shall not contain <Caption> parentStandardType != 'TFoot' @@ -19076,7 +19076,7 @@ - + <TFoot> shall not contain <Figure> parentStandardType != 'TFoot' @@ -19088,7 +19088,7 @@ - + <TFoot> shall not contain <Formula> parentStandardType != 'TFoot' @@ -19100,7 +19100,7 @@ - + <TFoot> shall not contain content items hasContentItems == false @@ -19112,7 +19112,7 @@ - + <Caption> shall not contain <Document> parentStandardType != 'Caption' @@ -19124,7 +19124,7 @@ - + <Caption> shall not contain <TOC> parentStandardType != 'Caption' @@ -19136,7 +19136,7 @@ - + <Caption> shall not contain <TOCI> parentStandardType != 'Caption' @@ -19148,7 +19148,7 @@ - + <Caption> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -19160,7 +19160,7 @@ - + <Caption> shall not contain <Title> parentStandardType != 'Caption' @@ -19172,7 +19172,7 @@ - + <Caption> shall not contain <RB> parentStandardType != 'Caption' @@ -19184,7 +19184,7 @@ - + <Caption> shall not contain <RT> parentStandardType != 'Caption' @@ -19196,7 +19196,7 @@ - + <Caption> shall not contain <RP> parentStandardType != 'Caption' @@ -19208,7 +19208,7 @@ - + <Caption> shall not contain <WT> parentStandardType != 'Caption' @@ -19220,7 +19220,7 @@ - + <Caption> shall not contain <WP> parentStandardType != 'Caption' @@ -19232,7 +19232,7 @@ - + <Caption> shall not contain <LI> parentStandardType != 'Caption' @@ -19244,7 +19244,7 @@ - + <Caption> shall not contain <LBody> parentStandardType != 'Caption' @@ -19256,7 +19256,7 @@ - + <Caption> shall not contain <TR> parentStandardType != 'Caption' @@ -19268,7 +19268,7 @@ - + <Caption> shall not contain <TH> parentStandardType != 'Caption' @@ -19280,7 +19280,7 @@ - + <Caption> shall not contain <TD> parentStandardType != 'Caption' @@ -19292,7 +19292,7 @@ - + <Caption> shall not contain <THead> parentStandardType != 'Caption' @@ -19304,7 +19304,7 @@ - + <Caption> shall not contain <TBody> parentStandardType != 'Caption' @@ -19316,7 +19316,7 @@ - + <Caption> shall not contain <TFoot> parentStandardType != 'Caption' @@ -19328,7 +19328,7 @@ - + <Caption> shall not contain <Caption> parentStandardType != 'Caption' @@ -19340,7 +19340,7 @@ - + <Figure> shall not contain <Document> parentStandardType != 'Figure' @@ -19352,7 +19352,7 @@ - + <Figure> shall not contain <DocumentFragment> parentStandardType != 'Figure' @@ -19364,7 +19364,7 @@ - + <Figure> shall not contain <TOC> parentStandardType != 'Figure' @@ -19376,7 +19376,7 @@ - + <Figure> shall not contain <TOCI> parentStandardType != 'Figure' @@ -19388,7 +19388,7 @@ - + <Figure> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -19400,7 +19400,7 @@ - + <Figure> shall not contain <Title> parentStandardType != 'Figure' @@ -19412,7 +19412,7 @@ - + <Figure> shall not contain <RB> parentStandardType != 'Figure' @@ -19424,7 +19424,7 @@ - + <Figure> shall not contain <RT> parentStandardType != 'Figure' @@ -19436,7 +19436,7 @@ - + <Figure> shall not contain <RP> parentStandardType != 'Figure' @@ -19448,7 +19448,7 @@ - + <Figure> shall not contain <WT> parentStandardType != 'Figure' @@ -19460,7 +19460,7 @@ - + <Figure> shall not contain <WP> parentStandardType != 'Figure' @@ -19472,7 +19472,7 @@ - + <Figure> shall not contain <LI> parentStandardType != 'Figure' @@ -19484,7 +19484,7 @@ - + <Figure> shall not contain <LBody> parentStandardType != 'Figure' @@ -19496,7 +19496,7 @@ - + <Figure> shall not contain <TR> parentStandardType != 'Figure' @@ -19508,7 +19508,7 @@ - + <Figure> shall not contain <TH> parentStandardType != 'Figure' @@ -19520,7 +19520,7 @@ - + <Figure> shall not contain <TD> parentStandardType != 'Figure' @@ -19532,7 +19532,7 @@ - + <Figure> shall not contain <THead> parentStandardType != 'Figure' @@ -19544,7 +19544,7 @@ - + <Figure> shall not contain <TBody> parentStandardType != 'Figure' @@ -19556,7 +19556,7 @@ - + <Figure> shall not contain <TFoot> parentStandardType != 'Figure' @@ -19568,7 +19568,7 @@ - + <Figure> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -19580,7 +19580,7 @@ - + <Formula> shall not contain <Document> parentStandardType != 'Formula' @@ -19592,7 +19592,7 @@ - + <Formula> shall not contain <DocumentFragment> parentStandardType != 'Formula' @@ -19604,7 +19604,7 @@ - + <Formula> shall not contain <Art> parentStandardType != 'Formula' @@ -19616,7 +19616,7 @@ - + <Formula> shall not contain <Sect> parentStandardType != 'Formula' @@ -19628,7 +19628,7 @@ - + <Formula> shall not contain <TOC> parentStandardType != 'Formula' @@ -19640,7 +19640,7 @@ - + <Formula> shall not contain <TOCI> parentStandardType != 'Formula' @@ -19652,7 +19652,7 @@ - + <Formula> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -19664,7 +19664,7 @@ - + <Formula> shall not contain <Title> parentStandardType != 'Formula' @@ -19676,7 +19676,7 @@ - + <Formula> shall not contain <RB> parentStandardType != 'Formula' @@ -19688,7 +19688,7 @@ - + <Formula> shall not contain <RT> parentStandardType != 'Formula' @@ -19700,7 +19700,7 @@ - + <Formula> shall not contain <RP> parentStandardType != 'Formula' @@ -19712,7 +19712,7 @@ - + <Formula> shall not contain <WT> parentStandardType != 'Formula' @@ -19724,7 +19724,7 @@ - + <Formula> shall not contain <WP> parentStandardType != 'Formula' @@ -19736,7 +19736,7 @@ - + <Formula> shall not contain <LI> parentStandardType != 'Formula' @@ -19748,7 +19748,7 @@ - + <Formula> shall not contain <LBody> parentStandardType != 'Formula' @@ -19760,7 +19760,7 @@ - + <Formula> shall not contain <TR> parentStandardType != 'Formula' @@ -19772,7 +19772,7 @@ - + <Formula> shall not contain <TH> parentStandardType != 'Formula' @@ -19784,7 +19784,7 @@ - + <Formula> shall not contain <TD> parentStandardType != 'Formula' @@ -19796,7 +19796,7 @@ - + <Formula> shall not contain <THead> parentStandardType != 'Formula' @@ -19808,7 +19808,7 @@ - + <Formula> shall not contain <TBody> parentStandardType != 'Formula' @@ -19820,7 +19820,7 @@ - + <Formula> shall not contain <TFoot> parentStandardType != 'Formula' @@ -19832,7 +19832,7 @@ - + <Formula> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -19844,7 +19844,7 @@ - + <Artifact> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -19856,7 +19856,7 @@ - + <Artifact> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -19868,7 +19868,7 @@ - + A circular mapping shall not exist circularMappingExist != true @@ -19882,7 +19882,7 @@ - + Standard tags shall not be remapped to a non-standard type remappedStandardType == null @@ -19896,7 +19896,7 @@ - + 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 StructTreeRoot_size == 1 @@ -19908,7 +19908,7 @@ - + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true From e413fb3ce6b2216db452c324c784a5cd0976ac9e Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 23 Jan 2024 12:40:02 +0000 Subject: [PATCH 535/557] ISO 32005 profile. Add tags --- PDF_UA/PDFUA-2-ISO32005.xml | 3318 +++++++++++++++++------------------ 1 file changed, 1659 insertions(+), 1659 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 15cb4522..3b62f27f 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -1132,7 +1132,7 @@ - + Every structure type should be mapped to a standard structure type isNotMappedToStandardType == false @@ -1146,7 +1146,7 @@ - + StructTreeRoot shall contain exactly one <Document> kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 1 @@ -1158,7 +1158,7 @@ - + StructTreeRoot shall not contain <DocumentFragment> parentStandardType != 'StructTreeRoot' @@ -1170,7 +1170,7 @@ - + StructTreeRoot shall not contain <Part> parentStandardType != 'StructTreeRoot' @@ -1182,7 +1182,7 @@ - + StructTreeRoot shall not contain <Art> parentStandardType != 'StructTreeRoot' @@ -1194,7 +1194,7 @@ - + StructTreeRoot shall not contain <Div> parentStandardType != 'StructTreeRoot' @@ -1206,7 +1206,7 @@ - + StructTreeRoot shall not contain <Sect> parentStandardType != 'StructTreeRoot' @@ -1218,7 +1218,7 @@ - + StructTreeRoot shall not contain <TOC> parentStandardType != 'StructTreeRoot' @@ -1230,7 +1230,7 @@ - + StructTreeRoot shall not contain <TOCI> parentStandardType != 'StructTreeRoot' @@ -1242,7 +1242,7 @@ - + StructTreeRoot shall not contain <Aside> parentStandardType != 'StructTreeRoot' @@ -1254,7 +1254,7 @@ - + StructTreeRoot shall not contain <BlockQuote> parentStandardType != 'StructTreeRoot' @@ -1266,7 +1266,7 @@ - + StructTreeRoot shall not contain <NonStruct> parentStandardType != 'StructTreeRoot' @@ -1278,7 +1278,7 @@ - + StructTreeRoot shall not contain <Private> parentStandardType != 'StructTreeRoot' @@ -1290,7 +1290,7 @@ - + StructTreeRoot shall not contain <P> parentStandardType != 'StructTreeRoot' @@ -1302,7 +1302,7 @@ - + StructTreeRoot shall not contain <Note> parentStandardType != 'StructTreeRoot' @@ -1314,7 +1314,7 @@ - + StructTreeRoot shall not contain <Code> parentStandardType != 'StructTreeRoot' @@ -1326,7 +1326,7 @@ - + StructTreeRoot shall not contain <Hn> parentStandardType != 'StructTreeRoot' @@ -1338,7 +1338,7 @@ - + StructTreeRoot shall not contain <H> parentStandardType != 'StructTreeRoot' @@ -1350,7 +1350,7 @@ - + StructTreeRoot shall not contain <Title> parentStandardType != 'StructTreeRoot' @@ -1362,7 +1362,7 @@ - + StructTreeRoot shall not contain <Sub> parentStandardType != 'StructTreeRoot' @@ -1374,7 +1374,7 @@ - + StructTreeRoot shall not contain <Lbl> parentStandardType != 'StructTreeRoot' @@ -1386,7 +1386,7 @@ - + StructTreeRoot shall not contain <Em> parentStandardType != 'StructTreeRoot' @@ -1398,7 +1398,7 @@ - + StructTreeRoot shall not contain <Strong> parentStandardType != 'StructTreeRoot' @@ -1410,7 +1410,7 @@ - + StructTreeRoot shall not contain <Span> parentStandardType != 'StructTreeRoot' @@ -1422,7 +1422,7 @@ - + StructTreeRoot shall not contain <Quote> parentStandardType != 'StructTreeRoot' @@ -1434,7 +1434,7 @@ - + StructTreeRoot shall not contain <Link> parentStandardType != 'StructTreeRoot' @@ -1446,7 +1446,7 @@ - + StructTreeRoot shall not contain <Reference> parentStandardType != 'StructTreeRoot' @@ -1458,7 +1458,7 @@ - + StructTreeRoot shall not contain <Annot> parentStandardType != 'StructTreeRoot' @@ -1470,7 +1470,7 @@ - + StructTreeRoot shall not contain <Form> parentStandardType != 'StructTreeRoot' @@ -1482,7 +1482,7 @@ - + StructTreeRoot shall not contain <Ruby> parentStandardType != 'StructTreeRoot' @@ -1494,7 +1494,7 @@ - + StructTreeRoot shall not contain <RB> parentStandardType != 'StructTreeRoot' @@ -1506,7 +1506,7 @@ - + StructTreeRoot shall not contain <RT> parentStandardType != 'StructTreeRoot' @@ -1518,7 +1518,7 @@ - + StructTreeRoot shall not contain <RP> parentStandardType != 'StructTreeRoot' @@ -1530,7 +1530,7 @@ - + StructTreeRoot shall not contain <Warichu> parentStandardType != 'StructTreeRoot' @@ -1542,7 +1542,7 @@ - + StructTreeRoot shall not contain <WT> parentStandardType != 'StructTreeRoot' @@ -1554,7 +1554,7 @@ - + StructTreeRoot shall not contain <WP> parentStandardType != 'StructTreeRoot' @@ -1566,7 +1566,7 @@ - + StructTreeRoot shall not contain <FENote> parentStandardType != 'StructTreeRoot' @@ -1578,7 +1578,7 @@ - + StructTreeRoot shall not contain <Index> parentStandardType != 'StructTreeRoot' @@ -1590,7 +1590,7 @@ - + StructTreeRoot shall not contain <L> parentStandardType != 'StructTreeRoot' @@ -1602,7 +1602,7 @@ - + StructTreeRoot shall not contain <LI> parentStandardType != 'StructTreeRoot' @@ -1614,7 +1614,7 @@ - + StructTreeRoot shall not contain <LBody> parentStandardType != 'StructTreeRoot' @@ -1626,7 +1626,7 @@ - + StructTreeRoot shall not contain <BibEntry> parentStandardType != 'StructTreeRoot' @@ -1638,7 +1638,7 @@ - + StructTreeRoot shall not contain <Table> parentStandardType != 'StructTreeRoot' @@ -1650,7 +1650,7 @@ - + StructTreeRoot shall not contain <TR> parentStandardType != 'StructTreeRoot' @@ -1662,7 +1662,7 @@ - + StructTreeRoot shall not contain <TH> parentStandardType != 'StructTreeRoot' @@ -1674,7 +1674,7 @@ - + StructTreeRoot shall not contain <TD> parentStandardType != 'StructTreeRoot' @@ -1686,7 +1686,7 @@ - + StructTreeRoot shall not contain <THead> parentStandardType != 'StructTreeRoot' @@ -1698,7 +1698,7 @@ - + StructTreeRoot shall not contain <TBody> parentStandardType != 'StructTreeRoot' @@ -1710,7 +1710,7 @@ - + StructTreeRoot shall not contain <TFoot> parentStandardType != 'StructTreeRoot' @@ -1722,7 +1722,7 @@ - + StructTreeRoot shall not contain <Caption> parentStandardType != 'StructTreeRoot' @@ -1734,7 +1734,7 @@ - + StructTreeRoot shall not contain <Figure> parentStandardType != 'StructTreeRoot' @@ -1746,7 +1746,7 @@ - + StructTreeRoot shall not contain <Formula> parentStandardType != 'StructTreeRoot' @@ -1758,7 +1758,7 @@ - + StructTreeRoot shall not contain <Artifact> parentStandardType != 'StructTreeRoot' @@ -1770,7 +1770,7 @@ - + StructTreeRoot shall not contain content items hasContentItems == false @@ -1782,7 +1782,7 @@ - + <Document> shall not contain <TOCI> parentStandardType != 'Document' @@ -1794,7 +1794,7 @@ - + <Document> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -1806,7 +1806,7 @@ - + <Document> shall not contain <Sub> parentStandardType != 'Document' @@ -1818,7 +1818,7 @@ - + <Document> shall not contain <Lbl> parentStandardType != 'Document' @@ -1830,7 +1830,7 @@ - + <Document> shall not contain <Em> parentStandardType != 'Document' @@ -1842,7 +1842,7 @@ - + <Document> shall not contain <Strong> parentStandardType != 'Document' @@ -1854,7 +1854,7 @@ - + <Document> shall not contain <Span> parentStandardType != 'Document' @@ -1866,7 +1866,7 @@ - + <Document> shall not contain <Quote> parentStandardType != 'Document' @@ -1878,7 +1878,7 @@ - + <Document> shall not contain <Reference> parentStandardType != 'Document' @@ -1890,7 +1890,7 @@ - + <Document> shall not contain <Ruby> parentStandardType != 'Document' @@ -1902,7 +1902,7 @@ - + <Document> shall not contain <RB> parentStandardType != 'Document' @@ -1914,7 +1914,7 @@ - + <Document> shall not contain <RT> parentStandardType != 'Document' @@ -1926,7 +1926,7 @@ - + <Document> shall not contain <RP> parentStandardType != 'Document' @@ -1938,7 +1938,7 @@ - + <Document> shall not contain <Warichu> parentStandardType != 'Document' @@ -1950,7 +1950,7 @@ - + <Document> shall not contain <WT> parentStandardType != 'Document' @@ -1962,7 +1962,7 @@ - + <Document> shall not contain <WP> parentStandardType != 'Document' @@ -1974,7 +1974,7 @@ - + <Document> shall not contain <LI> parentStandardType != 'Document' @@ -1986,7 +1986,7 @@ - + <Document> shall not contain <LBody> parentStandardType != 'Document' @@ -1998,7 +1998,7 @@ - + <Document> shall not contain <BibEntry> parentStandardType != 'Document' @@ -2010,7 +2010,7 @@ - + <Document> shall not contain <TR> parentStandardType != 'Document' @@ -2022,7 +2022,7 @@ - + <Document> shall not contain <TH> parentStandardType != 'Document' @@ -2034,7 +2034,7 @@ - + <Document> shall not contain <TD> parentStandardType != 'Document' @@ -2046,7 +2046,7 @@ - + <Document> shall not contain <THead> parentStandardType != 'Document' @@ -2058,7 +2058,7 @@ - + <Document> shall not contain <TBody> parentStandardType != 'Document' @@ -2070,7 +2070,7 @@ - + <Document> shall not contain <TFoot> parentStandardType != 'Document' @@ -2082,7 +2082,7 @@ - + <Document> shall not contain <Caption> parentStandardType != 'Document' @@ -2094,7 +2094,7 @@ - + <Document> shall not contain content items hasContentItems == false @@ -2106,7 +2106,7 @@ - + <DocumentFragment> shall not contain <TOCI> parentStandardType != 'DocumentFragment' @@ -2118,7 +2118,7 @@ - + <DocumentFragment> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -2130,7 +2130,7 @@ - + <DocumentFragment> shall not contain <Sub> parentStandardType != 'DocumentFragment' @@ -2142,7 +2142,7 @@ - + <DocumentFragment> shall not contain <Lbl> parentStandardType != 'DocumentFragment' @@ -2154,7 +2154,7 @@ - + <DocumentFragment> shall not contain <Em> parentStandardType != 'DocumentFragment' @@ -2166,7 +2166,7 @@ - + <DocumentFragment> shall not contain <Strong> parentStandardType != 'DocumentFragment' @@ -2178,7 +2178,7 @@ - + <DocumentFragment> shall not contain <Span> parentStandardType != 'DocumentFragment' @@ -2190,7 +2190,7 @@ - + <DocumentFragment> shall not contain <Quote> parentStandardType != 'DocumentFragment' @@ -2202,7 +2202,7 @@ - + <DocumentFragment> shall not contain <Reference> parentStandardType != 'DocumentFragment' @@ -2214,7 +2214,7 @@ - + <DocumentFragment> shall not contain <Ruby> parentStandardType != 'DocumentFragment' @@ -2226,7 +2226,7 @@ - + <DocumentFragment> shall not contain <RB> parentStandardType != 'DocumentFragment' @@ -2238,7 +2238,7 @@ - + <DocumentFragment> shall not contain <RT> parentStandardType != 'DocumentFragment' @@ -2250,7 +2250,7 @@ - + <DocumentFragment> shall not contain <RP> parentStandardType != 'DocumentFragment' @@ -2262,7 +2262,7 @@ - + <DocumentFragment> shall not contain <Warichu> parentStandardType != 'DocumentFragment' @@ -2274,7 +2274,7 @@ - + <DocumentFragment> shall not contain <WT> parentStandardType != 'DocumentFragment' @@ -2286,7 +2286,7 @@ - + <DocumentFragment> shall not contain <WP> parentStandardType != 'DocumentFragment' @@ -2298,7 +2298,7 @@ - + <DocumentFragment> shall not contain <LI> parentStandardType != 'DocumentFragment' @@ -2310,7 +2310,7 @@ - + <DocumentFragment> shall not contain <LBody> parentStandardType != 'DocumentFragment' @@ -2322,7 +2322,7 @@ - + <DocumentFragment> shall not contain <BibEntry> parentStandardType != 'DocumentFragment' @@ -2334,7 +2334,7 @@ - + <DocumentFragment> shall not contain <TR> parentStandardType != 'DocumentFragment' @@ -2346,7 +2346,7 @@ - + <DocumentFragment> shall not contain <TH> parentStandardType != 'DocumentFragment' @@ -2358,7 +2358,7 @@ - + <DocumentFragment> shall not contain <TD> parentStandardType != 'DocumentFragment' @@ -2370,7 +2370,7 @@ - + <DocumentFragment> shall not contain <THead> parentStandardType != 'DocumentFragment' @@ -2382,7 +2382,7 @@ - + <DocumentFragment> shall not contain <TBody> parentStandardType != 'DocumentFragment' @@ -2394,7 +2394,7 @@ - + <DocumentFragment> shall not contain <TFoot> parentStandardType != 'DocumentFragment' @@ -2406,7 +2406,7 @@ - + <DocumentFragment> shall not contain <Caption> parentStandardType != 'DocumentFragment' @@ -2418,7 +2418,7 @@ - + <DocumentFragment> shall not contain content items hasContentItems == false @@ -2430,7 +2430,7 @@ - + <Part> shall not contain <Em> parentStandardType != 'Part' @@ -2442,7 +2442,7 @@ - + <Part> shall not contain <Strong> parentStandardType != 'Part' @@ -2454,7 +2454,7 @@ - + <Part> shall not contain <Span> parentStandardType != 'Part' @@ -2466,7 +2466,7 @@ - + <Part> shall not contain <Quote> parentStandardType != 'Part' @@ -2478,7 +2478,7 @@ - + <Part> shall not contain <Ruby> parentStandardType != 'Part' @@ -2490,7 +2490,7 @@ - + <Part> shall not contain <RB> parentStandardType != 'Part' @@ -2502,7 +2502,7 @@ - + <Part> shall not contain <RT> parentStandardType != 'Part' @@ -2514,7 +2514,7 @@ - + <Part> shall not contain <RP> parentStandardType != 'Part' @@ -2526,7 +2526,7 @@ - + <Part> shall not contain <Warichu> parentStandardType != 'Part' @@ -2538,7 +2538,7 @@ - + <Part> shall not contain <WT> parentStandardType != 'Part' @@ -2550,7 +2550,7 @@ - + <Part> shall not contain <WP> parentStandardType != 'Part' @@ -2562,7 +2562,7 @@ - + <Part> shall not contain <LI> parentStandardType != 'Part' @@ -2574,7 +2574,7 @@ - + <Part> shall not contain <LBody> parentStandardType != 'Part' @@ -2586,7 +2586,7 @@ - + <Part> shall not contain <TR> parentStandardType != 'Part' @@ -2598,7 +2598,7 @@ - + <Part> shall not contain <TH> parentStandardType != 'Part' @@ -2610,7 +2610,7 @@ - + <Part> shall not contain <TD> parentStandardType != 'Part' @@ -2622,7 +2622,7 @@ - + <Part> shall not contain <THead> parentStandardType != 'Part' @@ -2634,7 +2634,7 @@ - + <Part> shall not contain <TBody> parentStandardType != 'Part' @@ -2646,7 +2646,7 @@ - + <Part> shall not contain <TFoot> parentStandardType != 'Part' @@ -2658,7 +2658,7 @@ - + <Part> shall not contain content items hasContentItems == false @@ -2670,7 +2670,7 @@ - + <Div> shall not contain content items hasContentItems == false @@ -2682,7 +2682,7 @@ - + <Art> shall not contain <Document> parentStandardType != 'Art' @@ -2694,7 +2694,7 @@ - + <Art> shall not contain <Art> parentStandardType != 'Art' @@ -2706,7 +2706,7 @@ - + <Art> shall not contain <TOCI> parentStandardType != 'Art' @@ -2718,7 +2718,7 @@ - + <Art> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -2730,7 +2730,7 @@ - + <Art> shall not contain <Sub> parentStandardType != 'Art' @@ -2742,7 +2742,7 @@ - + <Art> shall not contain <Em> parentStandardType != 'Art' @@ -2754,7 +2754,7 @@ - + <Art> shall not contain <Strong> parentStandardType != 'Art' @@ -2766,7 +2766,7 @@ - + <Art> shall not contain <Span> parentStandardType != 'Art' @@ -2778,7 +2778,7 @@ - + <Art> shall not contain <Quote> parentStandardType != 'Art' @@ -2790,7 +2790,7 @@ - + <Art> shall not contain <Reference> parentStandardType != 'Art' @@ -2802,7 +2802,7 @@ - + <Art> shall not contain <Ruby> parentStandardType != 'Art' @@ -2814,7 +2814,7 @@ - + <Art> shall not contain <RB> parentStandardType != 'Art' @@ -2826,7 +2826,7 @@ - + <Art> shall not contain <RT> parentStandardType != 'Art' @@ -2838,7 +2838,7 @@ - + <Art> shall not contain <RP> parentStandardType != 'Art' @@ -2850,7 +2850,7 @@ - + <Art> shall not contain <Warichu> parentStandardType != 'Art' @@ -2862,7 +2862,7 @@ - + <Art> shall not contain <WT> parentStandardType != 'Art' @@ -2874,7 +2874,7 @@ - + <Art> shall not contain <WP> parentStandardType != 'Art' @@ -2886,7 +2886,7 @@ - + <Art> shall not contain <LI> parentStandardType != 'Art' @@ -2898,7 +2898,7 @@ - + <Art> shall not contain <LBody> parentStandardType != 'Art' @@ -2910,7 +2910,7 @@ - + <Art> shall not contain <BibEntry> parentStandardType != 'Art' @@ -2922,7 +2922,7 @@ - + <Art> shall not contain <TR> parentStandardType != 'Art' @@ -2934,7 +2934,7 @@ - + <Art> shall not contain <TH> parentStandardType != 'Art' @@ -2946,7 +2946,7 @@ - + <Art> shall not contain <TD> parentStandardType != 'Art' @@ -2958,7 +2958,7 @@ - + <Art> shall not contain <THead> parentStandardType != 'Art' @@ -2970,7 +2970,7 @@ - + <Art> shall not contain <TBody> parentStandardType != 'Art' @@ -2982,7 +2982,7 @@ - + <Art> shall not contain <TFoot> parentStandardType != 'Art' @@ -2994,7 +2994,7 @@ - + <Art> shall not contain content items hasContentItems == false @@ -3006,7 +3006,7 @@ - + <Sect> shall not contain <Document> parentStandardType != 'Sect' @@ -3018,7 +3018,7 @@ - + <Sect> shall not contain <TOCI> parentStandardType != 'Sect' @@ -3030,7 +3030,7 @@ - + <Sect> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -3042,7 +3042,7 @@ - + <Sect> shall not contain <Sub> parentStandardType != 'Sect' @@ -3054,7 +3054,7 @@ - + <Sect> shall not contain <Em> parentStandardType != 'Sect' @@ -3066,7 +3066,7 @@ - + <Sect> shall not contain <Strong> parentStandardType != 'Sect' @@ -3078,7 +3078,7 @@ - + <Sect> shall not contain <Span> parentStandardType != 'Sect' @@ -3090,7 +3090,7 @@ - + <Sect> shall not contain <Quote> parentStandardType != 'Sect' @@ -3102,7 +3102,7 @@ - + <Sect> shall not contain <Reference> parentStandardType != 'Sect' @@ -3114,7 +3114,7 @@ - + <Sect> shall not contain <Ruby> parentStandardType != 'Sect' @@ -3126,7 +3126,7 @@ - + <Sect> shall not contain <RB> parentStandardType != 'Sect' @@ -3138,7 +3138,7 @@ - + <Sect> shall not contain <RT> parentStandardType != 'Sect' @@ -3150,7 +3150,7 @@ - + <Sect> shall not contain <RP> parentStandardType != 'Sect' @@ -3162,7 +3162,7 @@ - + <Sect> shall not contain <Warichu> parentStandardType != 'Sect' @@ -3174,7 +3174,7 @@ - + <Sect> shall not contain <WT> parentStandardType != 'Sect' @@ -3186,7 +3186,7 @@ - + <Sect> shall not contain <WP> parentStandardType != 'Sect' @@ -3198,7 +3198,7 @@ - + <Sect> shall not contain <LI> parentStandardType != 'Sect' @@ -3210,7 +3210,7 @@ - + <Sect> shall not contain <LBody> parentStandardType != 'Sect' @@ -3222,7 +3222,7 @@ - + <Sect> shall not contain <BibEntry> parentStandardType != 'Sect' @@ -3234,7 +3234,7 @@ - + <Sect> shall not contain <TR> parentStandardType != 'Sect' @@ -3246,7 +3246,7 @@ - + <Sect> shall not contain <TH> parentStandardType != 'Sect' @@ -3258,7 +3258,7 @@ - + <Sect> shall not contain <TD> parentStandardType != 'Sect' @@ -3270,7 +3270,7 @@ - + <Sect> shall not contain <THead> parentStandardType != 'Sect' @@ -3282,7 +3282,7 @@ - + <Sect> shall not contain <TBody> parentStandardType != 'Sect' @@ -3294,7 +3294,7 @@ - + <Sect> shall not contain <TFoot> parentStandardType != 'Sect' @@ -3306,7 +3306,7 @@ - + <Sect> shall not contain content items hasContentItems == false @@ -3318,7 +3318,7 @@ - + <TOC> shall not contain <Document> parentStandardType != 'TOC' @@ -3330,7 +3330,7 @@ - + <TOC> shall not contain <DocumentFragment> parentStandardType != 'TOC' @@ -3342,7 +3342,7 @@ - + <TOC> shall not contain <Part> parentStandardType != 'TOC' @@ -3354,7 +3354,7 @@ - + <TOC> shall not contain <Art> parentStandardType != 'TOC' @@ -3366,7 +3366,7 @@ - + <TOC> shall not contain <Div> parentStandardType != 'TOC' @@ -3378,7 +3378,7 @@ - + <TOC> shall not contain <Sect> parentStandardType != 'TOC' @@ -3390,7 +3390,7 @@ - + <TOC> shall not contain <Aside> parentStandardType != 'TOC' @@ -3402,7 +3402,7 @@ - + <TOC> shall not contain <BlockQuote> parentStandardType != 'TOC' @@ -3414,7 +3414,7 @@ - + <TOC> shall not contain <P> parentStandardType != 'TOC' @@ -3426,7 +3426,7 @@ - + <TOC> shall not contain <Note> parentStandardType != 'TOC' @@ -3438,7 +3438,7 @@ - + <TOC> shall not contain <Code> parentStandardType != 'TOC' @@ -3450,7 +3450,7 @@ - + <TOC> shall not contain <Hn> parentStandardType != 'TOC' @@ -3462,7 +3462,7 @@ - + <TOC> shall not contain <H> parentStandardType != 'TOC' @@ -3474,7 +3474,7 @@ - + <TOC> shall not contain <Title> parentStandardType != 'TOC' @@ -3486,7 +3486,7 @@ - + <TOC> shall not contain <Sub> parentStandardType != 'TOC' @@ -3498,7 +3498,7 @@ - + <TOC> shall not contain <Lbl> parentStandardType != 'TOC' @@ -3510,7 +3510,7 @@ - + <TOC> shall not contain <Em> parentStandardType != 'TOC' @@ -3522,7 +3522,7 @@ - + <TOC> shall not contain <Strong> parentStandardType != 'TOC' @@ -3534,7 +3534,7 @@ - + <TOC> shall not contain <Span> parentStandardType != 'TOC' @@ -3546,7 +3546,7 @@ - + <TOC> shall not contain <Quote> parentStandardType != 'TOC' @@ -3558,7 +3558,7 @@ - + <TOC> shall not contain <Link> parentStandardType != 'TOC' @@ -3570,7 +3570,7 @@ - + <TOC> shall not contain <Reference> parentStandardType != 'TOC' @@ -3582,7 +3582,7 @@ - + <TOC> shall not contain <Annot> parentStandardType != 'TOC' @@ -3594,7 +3594,7 @@ - + <TOC> shall not contain <Form> parentStandardType != 'TOC' @@ -3606,7 +3606,7 @@ - + <TOC> shall not contain <Ruby> parentStandardType != 'TOC' @@ -3618,7 +3618,7 @@ - + <TOC> shall not contain <RB> parentStandardType != 'TOC' @@ -3630,7 +3630,7 @@ - + <TOC> shall not contain <RT> parentStandardType != 'TOC' @@ -3642,7 +3642,7 @@ - + <TOC> shall not contain <RP> parentStandardType != 'TOC' @@ -3654,7 +3654,7 @@ - + <TOC> shall not contain <Warichu> parentStandardType != 'TOC' @@ -3666,7 +3666,7 @@ - + <TOC> shall not contain <WT> parentStandardType != 'TOC' @@ -3678,7 +3678,7 @@ - + <TOC> shall not contain <WP> parentStandardType != 'TOC' @@ -3690,7 +3690,7 @@ - + <TOC> shall not contain <FENote> parentStandardType != 'TOC' @@ -3702,7 +3702,7 @@ - + <TOC> shall not contain <Index> parentStandardType != 'TOC' @@ -3714,7 +3714,7 @@ - + <TOC> shall not contain <L> parentStandardType != 'TOC' @@ -3726,7 +3726,7 @@ - + <TOC> shall not contain <LI> parentStandardType != 'TOC' @@ -3738,7 +3738,7 @@ - + <TOC> shall not contain <LBody> parentStandardType != 'TOC' @@ -3750,7 +3750,7 @@ - + <TOC> shall not contain <BibEntry> parentStandardType != 'TOC' @@ -3762,7 +3762,7 @@ - + <TOC> shall not contain <Table> parentStandardType != 'TOC' @@ -3774,7 +3774,7 @@ - + <TOC> shall not contain <TR> parentStandardType != 'TOC' @@ -3786,7 +3786,7 @@ - + <TOC> shall not contain <TH> parentStandardType != 'TOC' @@ -3798,7 +3798,7 @@ - + <TOC> shall not contain <TD> parentStandardType != 'TOC' @@ -3810,7 +3810,7 @@ - + <TOC> shall not contain <THead> parentStandardType != 'TOC' @@ -3822,7 +3822,7 @@ - + <TOC> shall not contain <TBody> parentStandardType != 'TOC' @@ -3834,7 +3834,7 @@ - + <TOC> shall not contain <TFoot> parentStandardType != 'TOC' @@ -3846,7 +3846,7 @@ - + <TOC> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -3858,7 +3858,7 @@ - + <TOC> shall not contain <Figure> parentStandardType != 'TOC' @@ -3870,7 +3870,7 @@ - + <TOC> shall not contain <Formula> parentStandardType != 'TOC' @@ -3882,7 +3882,7 @@ - + <TOC> shall not contain content items hasContentItems == false @@ -3894,7 +3894,7 @@ - + <TOCI> shall not contain <Document> parentStandardType != 'TOCI' @@ -3906,7 +3906,7 @@ - + <TOCI> shall not contain <DocumentFragment> parentStandardType != 'TOCI' @@ -3918,7 +3918,7 @@ - + <TOCI> shall not contain <Part> parentStandardType != 'TOCI' @@ -3930,7 +3930,7 @@ - + <TOCI> shall not contain <Art> parentStandardType != 'TOCI' @@ -3942,7 +3942,7 @@ - + <TOCI> shall not contain <Sect> parentStandardType != 'TOCI' @@ -3954,7 +3954,7 @@ - + <TOCI> shall not contain <TOCI> parentStandardType != 'TOCI' @@ -3966,7 +3966,7 @@ - + <TOCI> shall not contain <Aside> parentStandardType != 'TOCI' @@ -3978,7 +3978,7 @@ - + <TOCI> shall not contain <BlockQuote> parentStandardType != 'TOCI' @@ -3990,7 +3990,7 @@ - + <TOCI> shall not contain <Note> parentStandardType != 'TOCI' @@ -4002,7 +4002,7 @@ - + <TOCI> shall not contain <Code> parentStandardType != 'TOCI' @@ -4014,7 +4014,7 @@ - + <TOCI> shall not contain <Hn> parentStandardType != 'TOCI' @@ -4026,7 +4026,7 @@ - + <TOCI> shall not contain <H> parentStandardType != 'TOCI' @@ -4038,7 +4038,7 @@ - + <TOCI> shall not contain <Title> parentStandardType != 'TOCI' @@ -4050,7 +4050,7 @@ - + <TOCI> shall not contain <Sub> parentStandardType != 'TOCI' @@ -4062,7 +4062,7 @@ - + <TOCI> shall not contain <Em> parentStandardType != 'TOCI' @@ -4074,7 +4074,7 @@ - + <TOCI> shall not contain <Strong> parentStandardType != 'TOCI' @@ -4086,7 +4086,7 @@ - + <TOCI> shall not contain <Span> parentStandardType != 'TOCI' @@ -4098,7 +4098,7 @@ - + <TOCI> shall not contain <Quote> parentStandardType != 'TOCI' @@ -4110,7 +4110,7 @@ - + <TOCI> shall not contain <Link> parentStandardType != 'TOCI' @@ -4122,7 +4122,7 @@ - + <TOCI> shall not contain <Annot> parentStandardType != 'TOCI' @@ -4134,7 +4134,7 @@ - + <TOCI> shall not contain <Form> parentStandardType != 'TOCI' @@ -4146,7 +4146,7 @@ - + <TOCI> shall not contain <Ruby> parentStandardType != 'TOCI' @@ -4158,7 +4158,7 @@ - + <TOCI> shall not contain <RB> parentStandardType != 'TOCI' @@ -4170,7 +4170,7 @@ - + <TOCI> shall not contain <RT> parentStandardType != 'TOCI' @@ -4182,7 +4182,7 @@ - + <TOCI> shall not contain <RP> parentStandardType != 'TOCI' @@ -4194,7 +4194,7 @@ - + <TOCI> shall not contain <Warichu> parentStandardType != 'TOCI' @@ -4206,7 +4206,7 @@ - + <TOCI> shall not contain <WT> parentStandardType != 'TOCI' @@ -4218,7 +4218,7 @@ - + <TOCI> shall not contain <WP> parentStandardType != 'TOCI' @@ -4230,7 +4230,7 @@ - + <TOCI> shall not contain <FENote> parentStandardType != 'TOCI' @@ -4242,7 +4242,7 @@ - + <TOCI> shall not contain <Index> parentStandardType != 'TOCI' @@ -4254,7 +4254,7 @@ - + <TOCI> shall not contain <L> parentStandardType != 'TOCI' @@ -4266,7 +4266,7 @@ - + <TOCI> shall not contain <LI> parentStandardType != 'TOCI' @@ -4278,7 +4278,7 @@ - + <TOCI> shall not contain <LBody> parentStandardType != 'TOCI' @@ -4290,7 +4290,7 @@ - + <TOCI> shall not contain <BibEntry> parentStandardType != 'TOCI' @@ -4302,7 +4302,7 @@ - + <TOCI> shall not contain <Table> parentStandardType != 'TOCI' @@ -4314,7 +4314,7 @@ - + <TOCI> shall not contain <TR> parentStandardType != 'TOCI' @@ -4326,7 +4326,7 @@ - + <TOCI> shall not contain <TH> parentStandardType != 'TOCI' @@ -4338,7 +4338,7 @@ - + <TOCI> shall not contain <TD> parentStandardType != 'TOCI' @@ -4350,7 +4350,7 @@ - + <TOCI> shall not contain <THead> parentStandardType != 'TOCI' @@ -4362,7 +4362,7 @@ - + <TOCI> shall not contain <TBody> parentStandardType != 'TOCI' @@ -4374,7 +4374,7 @@ - + <TOCI> shall not contain <TFoot> parentStandardType != 'TOCI' @@ -4386,7 +4386,7 @@ - + <TOCI> shall not contain <Caption> parentStandardType != 'TOCI' @@ -4398,7 +4398,7 @@ - + <TOCI> shall not contain <Figure> parentStandardType != 'TOCI' @@ -4410,7 +4410,7 @@ - + <TOCI> shall not contain <Formula> parentStandardType != 'TOCI' @@ -4422,7 +4422,7 @@ - + <TOCI> shall not contain content items hasContentItems == false @@ -4434,7 +4434,7 @@ - + <Aside> shall not contain <TOCI> parentStandardType != 'Aside' @@ -4446,7 +4446,7 @@ - + <Aside> shall not contain <Aside> parentStandardType != 'Aside' @@ -4458,7 +4458,7 @@ - + <Aside> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -4470,7 +4470,7 @@ - + <Aside> shall not contain <Title> parentStandardType != 'Aside' @@ -4482,7 +4482,7 @@ - + <Aside> shall not contain <Sub> parentStandardType != 'Aside' @@ -4494,7 +4494,7 @@ - + <Aside> shall not contain <Em> parentStandardType != 'Aside' @@ -4506,7 +4506,7 @@ - + <Aside> shall not contain <Strong> parentStandardType != 'Aside' @@ -4518,7 +4518,7 @@ - + <Aside> shall not contain <Span> parentStandardType != 'Aside' @@ -4530,7 +4530,7 @@ - + <Aside> shall not contain <Quote> parentStandardType != 'Aside' @@ -4542,7 +4542,7 @@ - + <Aside> shall not contain <Ruby> parentStandardType != 'Aside' @@ -4554,7 +4554,7 @@ - + <Aside> shall not contain <RB> parentStandardType != 'Aside' @@ -4566,7 +4566,7 @@ - + <Aside> shall not contain <RT> parentStandardType != 'Aside' @@ -4578,7 +4578,7 @@ - + <Aside> shall not contain <RP> parentStandardType != 'Aside' @@ -4590,7 +4590,7 @@ - + <Aside> shall not contain <Warichu> parentStandardType != 'Aside' @@ -4602,7 +4602,7 @@ - + <Aside> shall not contain <WT> parentStandardType != 'Aside' @@ -4614,7 +4614,7 @@ - + <Aside> shall not contain <WP> parentStandardType != 'Aside' @@ -4626,7 +4626,7 @@ - + <Aside> shall not contain <LI> parentStandardType != 'Aside' @@ -4638,7 +4638,7 @@ - + <Aside> shall not contain <LBody> parentStandardType != 'Aside' @@ -4650,7 +4650,7 @@ - + <Aside> shall not contain <BibEntry> parentStandardType != 'Aside' @@ -4662,7 +4662,7 @@ - + <Aside> shall not contain <TR> parentStandardType != 'Aside' @@ -4674,7 +4674,7 @@ - + <Aside> shall not contain <TH> parentStandardType != 'Aside' @@ -4686,7 +4686,7 @@ - + <Aside> shall not contain <TD> parentStandardType != 'Aside' @@ -4698,7 +4698,7 @@ - + <Aside> shall not contain <THead> parentStandardType != 'Aside' @@ -4710,7 +4710,7 @@ - + <Aside> shall not contain <TBody> parentStandardType != 'Aside' @@ -4722,7 +4722,7 @@ - + <Aside> shall not contain <TFoot> parentStandardType != 'Aside' @@ -4734,7 +4734,7 @@ - + <Aside> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -4746,7 +4746,7 @@ - + <BlockQuote> shall not contain <TOCI> parentStandardType != 'BlockQuote' @@ -4758,7 +4758,7 @@ - + <BlockQuote> shall not contain <Aside> parentStandardType != 'BlockQuote' @@ -4770,7 +4770,7 @@ - + <BlockQuote> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -4782,7 +4782,7 @@ - + <BlockQuote> shall not contain <Title> parentStandardType != 'BlockQuote' @@ -4794,7 +4794,7 @@ - + <BlockQuote> shall not contain <Sub> parentStandardType != 'BlockQuote' @@ -4806,7 +4806,7 @@ - + <BlockQuote> shall not contain <Em> parentStandardType != 'BlockQuote' @@ -4818,7 +4818,7 @@ - + <BlockQuote> shall not contain <Strong> parentStandardType != 'BlockQuote' @@ -4830,7 +4830,7 @@ - + <BlockQuote> shall not contain <Span> parentStandardType != 'BlockQuote' @@ -4842,7 +4842,7 @@ - + <BlockQuote> shall not contain <Quote> parentStandardType != 'BlockQuote' @@ -4854,7 +4854,7 @@ - + <BlockQuote> shall not contain <Ruby> parentStandardType != 'BlockQuote' @@ -4866,7 +4866,7 @@ - + <BlockQuote> shall not contain <RB> parentStandardType != 'BlockQuote' @@ -4878,7 +4878,7 @@ - + <BlockQuote> shall not contain <RT> parentStandardType != 'BlockQuote' @@ -4890,7 +4890,7 @@ - + <BlockQuote> shall not contain <RP> parentStandardType != 'BlockQuote' @@ -4902,7 +4902,7 @@ - + <BlockQuote> shall not contain <Warichu> parentStandardType != 'BlockQuote' @@ -4914,7 +4914,7 @@ - + <BlockQuote> shall not contain <WT> parentStandardType != 'BlockQuote' @@ -4926,7 +4926,7 @@ - + <BlockQuote> shall not contain <WP> parentStandardType != 'BlockQuote' @@ -4938,7 +4938,7 @@ - + <BlockQuote> shall not contain <LI> parentStandardType != 'BlockQuote' @@ -4950,7 +4950,7 @@ - + <BlockQuote> shall not contain <LBody> parentStandardType != 'BlockQuote' @@ -4962,7 +4962,7 @@ - + <BlockQuote> shall not contain <BibEntry> parentStandardType != 'BlockQuote' @@ -4974,7 +4974,7 @@ - + <BlockQuote> shall not contain <TR> parentStandardType != 'BlockQuote' @@ -4986,7 +4986,7 @@ - + <BlockQuote> shall not contain <TH> parentStandardType != 'BlockQuote' @@ -4998,7 +4998,7 @@ - + <BlockQuote> shall not contain <TD> parentStandardType != 'BlockQuote' @@ -5010,7 +5010,7 @@ - + <BlockQuote> shall not contain <THead> parentStandardType != 'BlockQuote' @@ -5022,7 +5022,7 @@ - + <BlockQuote> shall not contain <TBody> parentStandardType != 'BlockQuote' @@ -5034,7 +5034,7 @@ - + <BlockQuote> shall not contain <TFoot> parentStandardType != 'BlockQuote' @@ -5046,7 +5046,7 @@ - + <BlockQuote> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -5058,7 +5058,7 @@ - + <Title> shall not contain <Document> parentStandardType != 'Title' @@ -5070,7 +5070,7 @@ - + <Title> shall not contain <DocumentFragment> parentStandardType != 'Title' @@ -5082,7 +5082,7 @@ - + <Title> shall not contain <Art> parentStandardType != 'Title' @@ -5094,7 +5094,7 @@ - + <Title> shall not contain <Sect> parentStandardType != 'Title' @@ -5106,7 +5106,7 @@ - + <Title> shall not contain <TOC> parentStandardType != 'Title' @@ -5118,7 +5118,7 @@ - + <Title> shall not contain <TOCI> parentStandardType != 'Title' @@ -5130,7 +5130,7 @@ - + <Title> shall not contain <BlockQuote> parentStandardType != 'Title' @@ -5142,7 +5142,7 @@ - + <Title> shall not contain <Hn> parentStandardType != 'Title' @@ -5154,7 +5154,7 @@ - + <Title> shall not contain <H> parentStandardType != 'Title' @@ -5166,7 +5166,7 @@ - + <Title> shall not contain <Title> parentStandardType != 'Title' @@ -5178,7 +5178,7 @@ - + <Title> shall not contain <Sub> parentStandardType != 'Title' @@ -5190,7 +5190,7 @@ - + <Title> shall not contain <RB> parentStandardType != 'Title' @@ -5202,7 +5202,7 @@ - + <Title> shall not contain <RT> parentStandardType != 'Title' @@ -5214,7 +5214,7 @@ - + <Title> shall not contain <RP> parentStandardType != 'Title' @@ -5226,7 +5226,7 @@ - + <Title> shall not contain <WT> parentStandardType != 'Title' @@ -5238,7 +5238,7 @@ - + <Title> shall not contain <WP> parentStandardType != 'Title' @@ -5250,7 +5250,7 @@ - + <Title> shall not contain <Index> parentStandardType != 'Title' @@ -5262,7 +5262,7 @@ - + <Title> shall not contain <LI> parentStandardType != 'Title' @@ -5274,7 +5274,7 @@ - + <Title> shall not contain <LBody> parentStandardType != 'Title' @@ -5286,7 +5286,7 @@ - + <Title> shall not contain <TR> parentStandardType != 'Title' @@ -5298,7 +5298,7 @@ - + <Title> shall not contain <TH> parentStandardType != 'Title' @@ -5310,7 +5310,7 @@ - + <Title> shall not contain <TD> parentStandardType != 'Title' @@ -5322,7 +5322,7 @@ - + <Title> shall not contain <THead> parentStandardType != 'Title' @@ -5334,7 +5334,7 @@ - + <Title> shall not contain <TBody> parentStandardType != 'Title' @@ -5346,7 +5346,7 @@ - + <Title> shall not contain <TFoot> parentStandardType != 'Title' @@ -5358,7 +5358,7 @@ - + <Title> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -5370,7 +5370,7 @@ - + <Sub> shall not contain <Document> parentStandardType != 'Sub' @@ -5382,7 +5382,7 @@ - + <Sub> shall not contain <DocumentFragment> parentStandardType != 'Sub' @@ -5394,7 +5394,7 @@ - + <Sub> shall not contain <Part> parentStandardType != 'Sub' @@ -5406,7 +5406,7 @@ - + <Sub> shall not contain <Art> parentStandardType != 'Sub' @@ -5418,7 +5418,7 @@ - + <Sub> shall not contain <Div> parentStandardType != 'Sub' @@ -5430,7 +5430,7 @@ - + <Sub> shall not contain <Sect> parentStandardType != 'Sub' @@ -5442,7 +5442,7 @@ - + <Sub> shall not contain <TOC> parentStandardType != 'Sub' @@ -5454,7 +5454,7 @@ - + <Sub> shall not contain <TOCI> parentStandardType != 'Sub' @@ -5466,7 +5466,7 @@ - + <Sub> shall not contain <Aside> parentStandardType != 'Sub' @@ -5478,7 +5478,7 @@ - + <Sub> shall not contain <BlockQuote> parentStandardType != 'Sub' @@ -5490,7 +5490,7 @@ - + <Sub> shall not contain <P> parentStandardType != 'Sub' @@ -5502,7 +5502,7 @@ - + <Sub> shall not contain <Hn> parentStandardType != 'Sub' @@ -5514,7 +5514,7 @@ - + <Sub> shall not contain <H> parentStandardType != 'Sub' @@ -5526,7 +5526,7 @@ - + <Sub> shall not contain <Title> parentStandardType != 'Sub' @@ -5538,7 +5538,7 @@ - + <Sub> shall not contain <Sub> parentStandardType != 'Sub' @@ -5550,7 +5550,7 @@ - + <Sub> shall not contain <RB> parentStandardType != 'Sub' @@ -5562,7 +5562,7 @@ - + <Sub> shall not contain <RT> parentStandardType != 'Sub' @@ -5574,7 +5574,7 @@ - + <Sub> shall not contain <RP> parentStandardType != 'Sub' @@ -5586,7 +5586,7 @@ - + <Sub> shall not contain <WT> parentStandardType != 'Sub' @@ -5598,7 +5598,7 @@ - + <Sub> shall not contain <WP> parentStandardType != 'Sub' @@ -5610,7 +5610,7 @@ - + <Sub> shall not contain <Index> parentStandardType != 'Sub' @@ -5622,7 +5622,7 @@ - + <Sub> shall not contain <LI> parentStandardType != 'Sub' @@ -5634,7 +5634,7 @@ - + <Sub> shall not contain <LBody> parentStandardType != 'Sub' @@ -5646,7 +5646,7 @@ - + <Sub> shall not contain <Table> parentStandardType != 'Sub' @@ -5658,7 +5658,7 @@ - + <Sub> shall not contain <TR> parentStandardType != 'Sub' @@ -5670,7 +5670,7 @@ - + <Sub> shall not contain <TH> parentStandardType != 'Sub' @@ -5682,7 +5682,7 @@ - + <Sub> shall not contain <TD> parentStandardType != 'Sub' @@ -5694,7 +5694,7 @@ - + <Sub> shall not contain <THead> parentStandardType != 'Sub' @@ -5706,7 +5706,7 @@ - + <Sub> shall not contain <TBody> parentStandardType != 'Sub' @@ -5718,7 +5718,7 @@ - + <Sub> shall not contain <TFoot> parentStandardType != 'Sub' @@ -5730,7 +5730,7 @@ - + <Sub> shall not contain <Caption> parentStandardType != 'Sub' @@ -5742,7 +5742,7 @@ - + <P> shall not contain <Document> parentStandardType != 'P' @@ -5754,7 +5754,7 @@ - + <P> shall not contain <DocumentFragment> parentStandardType != 'P' @@ -5766,7 +5766,7 @@ - + <P> shall not contain <Part> parentStandardType != 'P' @@ -5778,7 +5778,7 @@ - + <P> shall not contain <Art> parentStandardType != 'P' @@ -5790,7 +5790,7 @@ - + <P> shall not contain <Div> parentStandardType != 'P' @@ -5802,7 +5802,7 @@ - + <P> shall not contain <Sect> parentStandardType != 'P' @@ -5814,7 +5814,7 @@ - + <P> shall not contain <TOC> parentStandardType != 'P' @@ -5826,7 +5826,7 @@ - + <P> shall not contain <TOCI> parentStandardType != 'P' @@ -5838,7 +5838,7 @@ - + <P> shall not contain <Aside> parentStandardType != 'P' @@ -5850,7 +5850,7 @@ - + <P> shall not contain <BlockQuote> parentStandardType != 'P' @@ -5862,7 +5862,7 @@ - + <P> shall not contain <P> parentStandardType != 'P' @@ -5874,7 +5874,7 @@ - + <P> shall not contain <Hn> parentStandardType != 'P' @@ -5886,7 +5886,7 @@ - + <P> shall not contain <H> parentStandardType != 'P' @@ -5898,7 +5898,7 @@ - + <P> shall not contain <Title> parentStandardType != 'P' @@ -5910,7 +5910,7 @@ - + <P> shall not contain <RB> parentStandardType != 'P' @@ -5922,7 +5922,7 @@ - + <P> shall not contain <RT> parentStandardType != 'P' @@ -5934,7 +5934,7 @@ - + <P> shall not contain <RP> parentStandardType != 'P' @@ -5946,7 +5946,7 @@ - + <P> shall not contain <WT> parentStandardType != 'P' @@ -5958,7 +5958,7 @@ - + <P> shall not contain <WP> parentStandardType != 'P' @@ -5970,7 +5970,7 @@ - + <P> shall not contain <Index> parentStandardType != 'P' @@ -5982,7 +5982,7 @@ - + <P> shall not contain <LI> parentStandardType != 'P' @@ -5994,7 +5994,7 @@ - + <P> shall not contain <LBody> parentStandardType != 'P' @@ -6006,7 +6006,7 @@ - + <P> shall not contain <TR> parentStandardType != 'P' @@ -6018,7 +6018,7 @@ - + <P> shall not contain <TH> parentStandardType != 'P' @@ -6030,7 +6030,7 @@ - + <P> shall not contain <TD> parentStandardType != 'P' @@ -6042,7 +6042,7 @@ - + <P> shall not contain <THead> parentStandardType != 'P' @@ -6054,7 +6054,7 @@ - + <P> shall not contain <TBody> parentStandardType != 'P' @@ -6066,7 +6066,7 @@ - + <P> shall not contain <TFoot> parentStandardType != 'P' @@ -6078,7 +6078,7 @@ - + <P> shall not contain <Caption> parentStandardType != 'P' @@ -6090,7 +6090,7 @@ - + <Note> shall not contain <Document> parentStandardType != 'Note' @@ -6102,7 +6102,7 @@ - + <Note> shall not contain <TOC> parentStandardType != 'Note' @@ -6114,7 +6114,7 @@ - + <Note> shall not contain <TOCI> parentStandardType != 'Note' @@ -6126,7 +6126,7 @@ - + <Note> shall not contain <Hn> parentStandardType != 'Note' @@ -6138,7 +6138,7 @@ - + <Note> shall not contain <H> parentStandardType != 'Note' @@ -6150,7 +6150,7 @@ - + <Note> shall not contain <Title> parentStandardType != 'Note' @@ -6162,7 +6162,7 @@ - + <Note> shall not contain <RB> parentStandardType != 'Note' @@ -6174,7 +6174,7 @@ - + <Note> shall not contain <RT> parentStandardType != 'Note' @@ -6186,7 +6186,7 @@ - + <Note> shall not contain <RP> parentStandardType != 'Note' @@ -6198,7 +6198,7 @@ - + <Note> shall not contain <WT> parentStandardType != 'Note' @@ -6210,7 +6210,7 @@ - + <Note> shall not contain <WP> parentStandardType != 'Note' @@ -6222,7 +6222,7 @@ - + <Note> shall not contain <LI> parentStandardType != 'Note' @@ -6234,7 +6234,7 @@ - + <Note> shall not contain <LBody> parentStandardType != 'Note' @@ -6246,7 +6246,7 @@ - + <Note> shall not contain <TR> parentStandardType != 'Note' @@ -6258,7 +6258,7 @@ - + <Note> shall not contain <TH> parentStandardType != 'Note' @@ -6270,7 +6270,7 @@ - + <Note> shall not contain <TD> parentStandardType != 'Note' @@ -6282,7 +6282,7 @@ - + <Note> shall not contain <THead> parentStandardType != 'Note' @@ -6294,7 +6294,7 @@ - + <Note> shall not contain <TBody> parentStandardType != 'Note' @@ -6306,7 +6306,7 @@ - + <Note> shall not contain <TFoot> parentStandardType != 'Note' @@ -6318,7 +6318,7 @@ - + <Code> shall not contain <Document> parentStandardType != 'Code' @@ -6330,7 +6330,7 @@ - + <Code> shall not contain <Art> parentStandardType != 'Code' @@ -6342,7 +6342,7 @@ - + <Code> shall not contain <Sect> parentStandardType != 'Code' @@ -6354,7 +6354,7 @@ - + <Code> shall not contain <TOC> parentStandardType != 'Code' @@ -6366,7 +6366,7 @@ - + <Code> shall not contain <TOCI> parentStandardType != 'Code' @@ -6378,7 +6378,7 @@ - + <Code> shall not contain <Aside> parentStandardType != 'Code' @@ -6390,7 +6390,7 @@ - + <Code> shall not contain <BlockQuote> parentStandardType != 'Code' @@ -6402,7 +6402,7 @@ - + <Code> shall not contain <P> parentStandardType != 'Code' @@ -6414,7 +6414,7 @@ - + <Code> shall not contain <Code> parentStandardType != 'Code' @@ -6426,7 +6426,7 @@ - + <Code> shall not contain <Hn> parentStandardType != 'Code' @@ -6438,7 +6438,7 @@ - + <Code> shall not contain <H> parentStandardType != 'Code' @@ -6450,7 +6450,7 @@ - + <Code> shall not contain <Title> parentStandardType != 'Code' @@ -6462,7 +6462,7 @@ - + <Code> shall not contain <Sub> parentStandardType != 'Code' @@ -6474,7 +6474,7 @@ - + <Code> shall not contain <Lbl> parentStandardType != 'Code' @@ -6486,7 +6486,7 @@ - + <Code> shall not contain <Quote> parentStandardType != 'Code' @@ -6498,7 +6498,7 @@ - + <Code> shall not contain <Form> parentStandardType != 'Code' @@ -6510,7 +6510,7 @@ - + <Code> shall not contain <Ruby> parentStandardType != 'Code' @@ -6522,7 +6522,7 @@ - + <Code> shall not contain <RB> parentStandardType != 'Code' @@ -6534,7 +6534,7 @@ - + <Code> shall not contain <RT> parentStandardType != 'Code' @@ -6546,7 +6546,7 @@ - + <Code> shall not contain <RP> parentStandardType != 'Code' @@ -6558,7 +6558,7 @@ - + <Code> shall not contain <Warichu> parentStandardType != 'Code' @@ -6570,7 +6570,7 @@ - + <Code> shall not contain <WT> parentStandardType != 'Code' @@ -6582,7 +6582,7 @@ - + <Code> shall not contain <WP> parentStandardType != 'Code' @@ -6594,7 +6594,7 @@ - + <Code> shall not contain <Index> parentStandardType != 'Code' @@ -6606,7 +6606,7 @@ - + <Code> shall not contain <L> parentStandardType != 'Code' @@ -6618,7 +6618,7 @@ - + <Code> shall not contain <LI> parentStandardType != 'Code' @@ -6630,7 +6630,7 @@ - + <Code> shall not contain <LBody> parentStandardType != 'Code' @@ -6642,7 +6642,7 @@ - + <Code> shall not contain <Table> parentStandardType != 'Code' @@ -6654,7 +6654,7 @@ - + <Code> shall not contain <TR> parentStandardType != 'Code' @@ -6666,7 +6666,7 @@ - + <Code> shall not contain <TH> parentStandardType != 'Code' @@ -6678,7 +6678,7 @@ - + <Code> shall not contain <TD> parentStandardType != 'Code' @@ -6690,7 +6690,7 @@ - + <Code> shall not contain <THead> parentStandardType != 'Code' @@ -6702,7 +6702,7 @@ - + <Code> shall not contain <TBody> parentStandardType != 'Code' @@ -6714,7 +6714,7 @@ - + <Code> shall not contain <TFoot> parentStandardType != 'Code' @@ -6726,7 +6726,7 @@ - + <Code> shall not contain <Caption> parentStandardType != 'Code' @@ -6738,7 +6738,7 @@ - + <Code> shall not contain <Figure> parentStandardType != 'Code' @@ -6750,7 +6750,7 @@ - + <Code> shall not contain <Formula> parentStandardType != 'Code' @@ -6762,7 +6762,7 @@ - + <Hn> shall not contain <Document> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6774,7 +6774,7 @@ - + <Hn> shall not contain <DocumentFragment> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6786,7 +6786,7 @@ - + <Hn> shall not contain <Part> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6798,7 +6798,7 @@ - + <Hn> shall contain at most one <Art> kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1 @@ -6810,7 +6810,7 @@ - + <Hn> shall not contain <Div> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6822,7 +6822,7 @@ - + <Hn> shall contain at most one <Sect> kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1 @@ -6834,7 +6834,7 @@ - + <Hn> shall not contain <TOC> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6846,7 +6846,7 @@ - + <Hn> shall not contain <TOCI> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6858,7 +6858,7 @@ - + <Hn> shall not contain <Aside> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6870,7 +6870,7 @@ - + <Hn> shall not contain <BlockQuote> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6882,7 +6882,7 @@ - + <Hn> shall not contain <P> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6894,7 +6894,7 @@ - + <Hn> shall not contain <Hn> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6906,7 +6906,7 @@ - + <Hn> shall not contain <H> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6918,7 +6918,7 @@ - + <Hn> shall not contain <Title> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6930,7 +6930,7 @@ - + <Hn> shall not contain <RB> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6942,7 +6942,7 @@ - + <Hn> shall not contain <RT> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6954,7 +6954,7 @@ - + <Hn> shall not contain <RP> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6966,7 +6966,7 @@ - + <Hn> shall not contain <WT> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6978,7 +6978,7 @@ - + <Hn> shall not contain <WP> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -6990,7 +6990,7 @@ - + <Hn> shall not contain <Index> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7002,7 +7002,7 @@ - + <Hn> shall not contain <L> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7014,7 +7014,7 @@ - + <Hn> shall not contain <LI> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7026,7 +7026,7 @@ - + <Hn> shall not contain <LBody> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7038,7 +7038,7 @@ - + <Hn> shall not contain <Table> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7050,7 +7050,7 @@ - + <Hn> shall not contain <TR> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7062,7 +7062,7 @@ - + <Hn> shall not contain <TH> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7074,7 +7074,7 @@ - + <Hn> shall not contain <TD> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7086,7 +7086,7 @@ - + <Hn> shall not contain <THead> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7098,7 +7098,7 @@ - + <Hn> shall not contain <TBody> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7110,7 +7110,7 @@ - + <Hn> shall not contain <TFoot> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7122,7 +7122,7 @@ - + <Hn> shall not contain <Caption> /^H[1-9][0-9]*$/.test(parentStandardType) == false @@ -7134,7 +7134,7 @@ - + <H> shall not contain <Document> parentStandardType != 'H' @@ -7146,7 +7146,7 @@ - + <H> shall not contain <DocumentFragment> parentStandardType != 'H' @@ -7158,7 +7158,7 @@ - + <H> shall not contain <Part> parentStandardType != 'H' @@ -7170,7 +7170,7 @@ - + <H> shall contain at most one <Art> kidsStandardTypes.split('&').filter(elem => elem == 'Art').length <= 1 @@ -7182,7 +7182,7 @@ - + <H> shall not contain <Div> parentStandardType != 'H' @@ -7194,7 +7194,7 @@ - + <H> shall contain at most one <Sect> kidsStandardTypes.split('&').filter(elem => elem == 'Sect').length <= 1 @@ -7206,7 +7206,7 @@ - + <H> shall not contain <TOC> parentStandardType != 'H' @@ -7218,7 +7218,7 @@ - + <H> shall not contain <TOCI> parentStandardType != 'H' @@ -7230,7 +7230,7 @@ - + <H> shall not contain <Aside> parentStandardType != 'H' @@ -7242,7 +7242,7 @@ - + <H> shall not contain <BlockQuote> parentStandardType != 'H' @@ -7254,7 +7254,7 @@ - + <H> shall not contain <P> parentStandardType != 'H' @@ -7266,7 +7266,7 @@ - + <H> shall not contain <Hn> parentStandardType != 'H' @@ -7278,7 +7278,7 @@ - + <H> shall not contain <H> parentStandardType != 'H' @@ -7290,7 +7290,7 @@ - + <H> shall not contain <Title> parentStandardType != 'H' @@ -7302,7 +7302,7 @@ - + <H> shall not contain <RB> parentStandardType != 'H' @@ -7314,7 +7314,7 @@ - + <H> shall not contain <RT> parentStandardType != 'H' @@ -7326,7 +7326,7 @@ - + <H> shall not contain <RP> parentStandardType != 'H' @@ -7338,7 +7338,7 @@ - + <H> shall not contain <WT> parentStandardType != 'H' @@ -7350,7 +7350,7 @@ - + <H> shall not contain <WP> parentStandardType != 'H' @@ -7362,7 +7362,7 @@ - + <H> shall not contain <Index> parentStandardType != 'H' @@ -7374,7 +7374,7 @@ - + <H> shall not contain <L> parentStandardType != 'H' @@ -7386,7 +7386,7 @@ - + <H> shall not contain <LI> parentStandardType != 'H' @@ -7398,7 +7398,7 @@ - + <H> shall not contain <LBody> parentStandardType != 'H' @@ -7410,7 +7410,7 @@ - + <H> shall not contain <Table> parentStandardType != 'H' @@ -7422,7 +7422,7 @@ - + <H> shall not contain <TR> parentStandardType != 'H' @@ -7434,7 +7434,7 @@ - + <H> shall not contain <TH> parentStandardType != 'H' @@ -7446,7 +7446,7 @@ - + <H> shall not contain <TD> parentStandardType != 'H' @@ -7458,7 +7458,7 @@ - + <H> shall not contain <THead> parentStandardType != 'H' @@ -7470,7 +7470,7 @@ - + <H> shall not contain <TBody> parentStandardType != 'H' @@ -7482,7 +7482,7 @@ - + <H> shall not contain <TFoot> parentStandardType != 'H' @@ -7494,7 +7494,7 @@ - + <H> shall not contain <Caption> parentStandardType != 'H' @@ -7506,7 +7506,7 @@ - + <Lbl> shall not contain <Document> parentStandardType != 'Lbl' @@ -7518,7 +7518,7 @@ - + <Lbl> shall not contain <DocumentFragment> parentStandardType != 'Lbl' @@ -7530,7 +7530,7 @@ - + <Lbl> shall not contain <Part> parentStandardType != 'Lbl' @@ -7542,7 +7542,7 @@ - + <Lbl> shall not contain <Art> parentStandardType != 'Lbl' @@ -7554,7 +7554,7 @@ - + <Lbl> shall not contain <Div> parentStandardType != 'Lbl' @@ -7566,7 +7566,7 @@ - + <Lbl> shall not contain <Sect> parentStandardType != 'Lbl' @@ -7578,7 +7578,7 @@ - + <Lbl> shall not contain <TOC> parentStandardType != 'Lbl' @@ -7590,7 +7590,7 @@ - + <Lbl> shall not contain <TOCI> parentStandardType != 'Lbl' @@ -7602,7 +7602,7 @@ - + <Lbl> shall not contain <Aside> parentStandardType != 'Lbl' @@ -7614,7 +7614,7 @@ - + <Lbl> shall not contain <BlockQuote> parentStandardType != 'Lbl' @@ -7626,7 +7626,7 @@ - + <Lbl> shall not contain <P> parentStandardType != 'Lbl' @@ -7638,7 +7638,7 @@ - + <Lbl> shall not contain <Hn> parentStandardType != 'Lbl' @@ -7650,7 +7650,7 @@ - + <Lbl> shall not contain <H> parentStandardType != 'Lbl' @@ -7662,7 +7662,7 @@ - + <Lbl> shall not contain <Title> parentStandardType != 'Lbl' @@ -7674,7 +7674,7 @@ - + <Lbl> shall not contain <Lbl> parentStandardType != 'Lbl' @@ -7686,7 +7686,7 @@ - + <Lbl> shall not contain <RB> parentStandardType != 'Lbl' @@ -7698,7 +7698,7 @@ - + <Lbl> shall not contain <RT> parentStandardType != 'Lbl' @@ -7710,7 +7710,7 @@ - + <Lbl> shall not contain <RP> parentStandardType != 'Lbl' @@ -7722,7 +7722,7 @@ - + <Lbl> shall not contain <WT> parentStandardType != 'Lbl' @@ -7734,7 +7734,7 @@ - + <Lbl> shall not contain <WP> parentStandardType != 'Lbl' @@ -7746,7 +7746,7 @@ - + <Lbl> shall not contain <Index> parentStandardType != 'Lbl' @@ -7758,7 +7758,7 @@ - + <Lbl> shall not contain <L> parentStandardType != 'Lbl' @@ -7770,7 +7770,7 @@ - + <Lbl> shall not contain <LI> parentStandardType != 'Lbl' @@ -7782,7 +7782,7 @@ - + <Lbl> shall not contain <LBody> parentStandardType != 'Lbl' @@ -7794,7 +7794,7 @@ - + <Lbl> shall not contain <Table> parentStandardType != 'Lbl' @@ -7806,7 +7806,7 @@ - + <Lbl> shall not contain <TR> parentStandardType != 'Lbl' @@ -7818,7 +7818,7 @@ - + <Lbl> shall not contain <TH> parentStandardType != 'Lbl' @@ -7830,7 +7830,7 @@ - + <Lbl> shall not contain <TD> parentStandardType != 'Lbl' @@ -7842,7 +7842,7 @@ - + <Lbl> shall not contain <THead> parentStandardType != 'Lbl' @@ -7854,7 +7854,7 @@ - + <Lbl> shall not contain <TBody> parentStandardType != 'Lbl' @@ -7866,7 +7866,7 @@ - + <Lbl> shall not contain <TFoot> parentStandardType != 'Lbl' @@ -7878,7 +7878,7 @@ - + <Lbl> shall not contain <Caption> parentStandardType != 'Lbl' @@ -7890,7 +7890,7 @@ - + <Em> shall not contain <Document> parentStandardType != 'Em' @@ -7902,7 +7902,7 @@ - + <Em> shall not contain <DocumentFragment> parentStandardType != 'Em' @@ -7914,7 +7914,7 @@ - + <Em> shall not contain <Part> parentStandardType != 'Em' @@ -7926,7 +7926,7 @@ - + <Em> shall not contain <Art> parentStandardType != 'Em' @@ -7938,7 +7938,7 @@ - + <Em> shall not contain <Div> parentStandardType != 'Em' @@ -7950,7 +7950,7 @@ - + <Em> shall not contain <Sect> parentStandardType != 'Em' @@ -7962,7 +7962,7 @@ - + <Em> shall not contain <TOC> parentStandardType != 'Em' @@ -7974,7 +7974,7 @@ - + <Em> shall not contain <TOCI> parentStandardType != 'Em' @@ -7986,7 +7986,7 @@ - + <Em> shall not contain <Aside> parentStandardType != 'Em' @@ -7998,7 +7998,7 @@ - + <Em> shall not contain <BlockQuote> parentStandardType != 'Em' @@ -8010,7 +8010,7 @@ - + <Em> shall not contain <P> parentStandardType != 'Em' @@ -8022,7 +8022,7 @@ - + <Em> shall not contain <Hn> parentStandardType != 'Em' @@ -8034,7 +8034,7 @@ - + <Em> shall not contain <H> parentStandardType != 'Em' @@ -8046,7 +8046,7 @@ - + <Em> shall not contain <Title> parentStandardType != 'Em' @@ -8058,7 +8058,7 @@ - + <Em> shall not contain <RB> parentStandardType != 'Em' @@ -8070,7 +8070,7 @@ - + <Em> shall not contain <RT> parentStandardType != 'Em' @@ -8082,7 +8082,7 @@ - + <Em> shall not contain <RP> parentStandardType != 'Em' @@ -8094,7 +8094,7 @@ - + <Em> shall not contain <WT> parentStandardType != 'Em' @@ -8106,7 +8106,7 @@ - + <Em> shall not contain <WP> parentStandardType != 'Em' @@ -8118,7 +8118,7 @@ - + <Em> shall not contain <Index> parentStandardType != 'Em' @@ -8130,7 +8130,7 @@ - + <Em> shall not contain <L> parentStandardType != 'Em' @@ -8142,7 +8142,7 @@ - + <Em> shall not contain <LI> parentStandardType != 'Em' @@ -8154,7 +8154,7 @@ - + <Em> shall not contain <LBody> parentStandardType != 'Em' @@ -8166,7 +8166,7 @@ - + <Em> shall not contain <Table> parentStandardType != 'Em' @@ -8178,7 +8178,7 @@ - + <Em> shall not contain <TR> parentStandardType != 'Em' @@ -8190,7 +8190,7 @@ - + <Em> shall not contain <TH> parentStandardType != 'Em' @@ -8202,7 +8202,7 @@ - + <Em> shall not contain <TD> parentStandardType != 'Em' @@ -8214,7 +8214,7 @@ - + <Em> shall not contain <THead> parentStandardType != 'Em' @@ -8226,7 +8226,7 @@ - + <Em> shall not contain <TBody> parentStandardType != 'Em' @@ -8238,7 +8238,7 @@ - + <Em> shall not contain <TFoot> parentStandardType != 'Em' @@ -8250,7 +8250,7 @@ - + <Em> shall not contain <Caption> parentStandardType != 'Em' @@ -8262,7 +8262,7 @@ - + <Strong> shall not contain <Document> parentStandardType != 'Strong' @@ -8274,7 +8274,7 @@ - + <Strong> shall not contain <DocumentFragment> parentStandardType != 'Strong' @@ -8286,7 +8286,7 @@ - + <Strong> shall not contain <Part> parentStandardType != 'Strong' @@ -8298,7 +8298,7 @@ - + <Strong> shall not contain <Art> parentStandardType != 'Strong' @@ -8310,7 +8310,7 @@ - + <Strong> shall not contain <Div> parentStandardType != 'Strong' @@ -8322,7 +8322,7 @@ - + <Strong> shall not contain <Sect> parentStandardType != 'Strong' @@ -8334,7 +8334,7 @@ - + <Strong> shall not contain <TOC> parentStandardType != 'Strong' @@ -8346,7 +8346,7 @@ - + <Strong> shall not contain <TOCI> parentStandardType != 'Strong' @@ -8358,7 +8358,7 @@ - + <Strong> shall not contain <Aside> parentStandardType != 'Strong' @@ -8370,7 +8370,7 @@ - + <Strong> shall not contain <BlockQuote> parentStandardType != 'Strong' @@ -8382,7 +8382,7 @@ - + <Strong> shall not contain <P> parentStandardType != 'Strong' @@ -8394,7 +8394,7 @@ - + <Strong> shall not contain <Hn> parentStandardType != 'Strong' @@ -8406,7 +8406,7 @@ - + <Strong> shall not contain <H> parentStandardType != 'Strong' @@ -8418,7 +8418,7 @@ - + <Strong> shall not contain <Title> parentStandardType != 'Strong' @@ -8430,7 +8430,7 @@ - + <Strong> shall not contain <RB> parentStandardType != 'Strong' @@ -8442,7 +8442,7 @@ - + <Strong> shall not contain <RT> parentStandardType != 'Strong' @@ -8454,7 +8454,7 @@ - + <Strong> shall not contain <RP> parentStandardType != 'Strong' @@ -8466,7 +8466,7 @@ - + <Strong> shall not contain <WT> parentStandardType != 'Strong' @@ -8478,7 +8478,7 @@ - + <Strong> shall not contain <WP> parentStandardType != 'Strong' @@ -8490,7 +8490,7 @@ - + <Strong> shall not contain <Index> parentStandardType != 'Strong' @@ -8502,7 +8502,7 @@ - + <Strong> shall not contain <L> parentStandardType != 'Strong' @@ -8514,7 +8514,7 @@ - + <Strong> shall not contain <LI> parentStandardType != 'Strong' @@ -8526,7 +8526,7 @@ - + <Strong> shall not contain <LBody> parentStandardType != 'Strong' @@ -8538,7 +8538,7 @@ - + <Strong> shall not contain <Table> parentStandardType != 'Strong' @@ -8550,7 +8550,7 @@ - + <Strong> shall not contain <TR> parentStandardType != 'Strong' @@ -8562,7 +8562,7 @@ - + <Strong> shall not contain <TH> parentStandardType != 'Strong' @@ -8574,7 +8574,7 @@ - + <Strong> shall not contain <TD> parentStandardType != 'Strong' @@ -8586,7 +8586,7 @@ - + <Strong> shall not contain <THead> parentStandardType != 'Strong' @@ -8598,7 +8598,7 @@ - + <Strong> shall not contain <TBody> parentStandardType != 'Strong' @@ -8610,7 +8610,7 @@ - + <Strong> shall not contain <TFoot> parentStandardType != 'Strong' @@ -8622,7 +8622,7 @@ - + <Strong> shall not contain <Caption> parentStandardType != 'Strong' @@ -8634,7 +8634,7 @@ - + <Span> shall not contain <Document> parentStandardType != 'Span' @@ -8646,7 +8646,7 @@ - + <Span> shall not contain <DocumentFragment> parentStandardType != 'Span' @@ -8658,7 +8658,7 @@ - + <Span> shall not contain <Part> parentStandardType != 'Span' @@ -8670,7 +8670,7 @@ - + <Span> shall not contain <Art> parentStandardType != 'Span' @@ -8682,7 +8682,7 @@ - + <Span> shall not contain <Div> parentStandardType != 'Span' @@ -8694,7 +8694,7 @@ - + <Span> shall not contain <Sect> parentStandardType != 'Span' @@ -8706,7 +8706,7 @@ - + <Span> shall not contain <TOC> parentStandardType != 'Span' @@ -8718,7 +8718,7 @@ - + <Span> shall not contain <TOCI> parentStandardType != 'Span' @@ -8730,7 +8730,7 @@ - + <Span> shall not contain <Aside> parentStandardType != 'Span' @@ -8742,7 +8742,7 @@ - + <Span> shall not contain <BlockQuote> parentStandardType != 'Span' @@ -8754,7 +8754,7 @@ - + <Span> shall not contain <P> parentStandardType != 'Span' @@ -8766,7 +8766,7 @@ - + <Span> shall not contain <Hn> parentStandardType != 'Span' @@ -8778,7 +8778,7 @@ - + <Span> shall not contain <H> parentStandardType != 'Span' @@ -8790,7 +8790,7 @@ - + <Span> shall not contain <Title> parentStandardType != 'Span' @@ -8802,7 +8802,7 @@ - + <Span> shall not contain <RB> parentStandardType != 'Span' @@ -8814,7 +8814,7 @@ - + <Span> shall not contain <RT> parentStandardType != 'Span' @@ -8826,7 +8826,7 @@ - + <Span> shall not contain <RP> parentStandardType != 'Span' @@ -8838,7 +8838,7 @@ - + <Span> shall not contain <WT> parentStandardType != 'Span' @@ -8850,7 +8850,7 @@ - + <Span> shall not contain <WP> parentStandardType != 'Span' @@ -8862,7 +8862,7 @@ - + <Span> shall not contain <Index> parentStandardType != 'Span' @@ -8874,7 +8874,7 @@ - + <Span> shall not contain <L> parentStandardType != 'Span' @@ -8886,7 +8886,7 @@ - + <Span> shall not contain <LI> parentStandardType != 'Span' @@ -8898,7 +8898,7 @@ - + <Span> shall not contain <LBody> parentStandardType != 'Span' @@ -8910,7 +8910,7 @@ - + <Span> shall not contain <Table> parentStandardType != 'Span' @@ -8922,7 +8922,7 @@ - + <Span> shall not contain <TR> parentStandardType != 'Span' @@ -8934,7 +8934,7 @@ - + <Span> shall not contain <TH> parentStandardType != 'Span' @@ -8946,7 +8946,7 @@ - + <Span> shall not contain <TD> parentStandardType != 'Span' @@ -8958,7 +8958,7 @@ - + <Span> shall not contain <THead> parentStandardType != 'Span' @@ -8970,7 +8970,7 @@ - + <Span> shall not contain <TBody> parentStandardType != 'Span' @@ -8982,7 +8982,7 @@ - + <Span> shall not contain <TFoot> parentStandardType != 'Span' @@ -8994,7 +8994,7 @@ - + <Span> shall not contain <Caption> parentStandardType != 'Span' @@ -9006,7 +9006,7 @@ - + <Quote> shall not contain <Document> parentStandardType != 'Quote' @@ -9018,7 +9018,7 @@ - + <Quote> shall not contain <DocumentFragment> parentStandardType != 'Quote' @@ -9030,7 +9030,7 @@ - + <Quote> shall not contain <Part> parentStandardType != 'Quote' @@ -9042,7 +9042,7 @@ - + <Quote> shall not contain <Art> parentStandardType != 'Quote' @@ -9054,7 +9054,7 @@ - + <Quote> shall not contain <Div> parentStandardType != 'Quote' @@ -9066,7 +9066,7 @@ - + <Quote> shall not contain <Sect> parentStandardType != 'Quote' @@ -9078,7 +9078,7 @@ - + <Quote> shall not contain <TOC> parentStandardType != 'Quote' @@ -9090,7 +9090,7 @@ - + <Quote> shall not contain <TOCI> parentStandardType != 'Quote' @@ -9102,7 +9102,7 @@ - + <Quote> shall not contain <Aside> parentStandardType != 'Quote' @@ -9114,7 +9114,7 @@ - + <Quote> shall not contain <BlockQuote> parentStandardType != 'Quote' @@ -9126,7 +9126,7 @@ - + <Quote> shall not contain <P> parentStandardType != 'Quote' @@ -9138,7 +9138,7 @@ - + <Quote> shall not contain <Hn> parentStandardType != 'Quote' @@ -9150,7 +9150,7 @@ - + <Quote> shall not contain <H> parentStandardType != 'Quote' @@ -9162,7 +9162,7 @@ - + <Quote> shall not contain <Title> parentStandardType != 'Quote' @@ -9174,7 +9174,7 @@ - + <Quote> shall not contain <RB> parentStandardType != 'Quote' @@ -9186,7 +9186,7 @@ - + <Quote> shall not contain <RT> parentStandardType != 'Quote' @@ -9198,7 +9198,7 @@ - + <Quote> shall not contain <RP> parentStandardType != 'Quote' @@ -9210,7 +9210,7 @@ - + <Quote> shall not contain <WT> parentStandardType != 'Quote' @@ -9222,7 +9222,7 @@ - + <Quote> shall not contain <WP> parentStandardType != 'Quote' @@ -9234,7 +9234,7 @@ - + <Quote> shall not contain <Index> parentStandardType != 'Quote' @@ -9246,7 +9246,7 @@ - + <Quote> shall not contain <L> parentStandardType != 'Quote' @@ -9258,7 +9258,7 @@ - + <Quote> shall not contain <LI> parentStandardType != 'Quote' @@ -9270,7 +9270,7 @@ - + <Quote> shall not contain <LBody> parentStandardType != 'Quote' @@ -9282,7 +9282,7 @@ - + <Quote> shall not contain <Table> parentStandardType != 'Quote' @@ -9294,7 +9294,7 @@ - + <Quote> shall not contain <TR> parentStandardType != 'Quote' @@ -9306,7 +9306,7 @@ - + <Quote> shall not contain <TH> parentStandardType != 'Quote' @@ -9318,7 +9318,7 @@ - + <Quote> shall not contain <TD> parentStandardType != 'Quote' @@ -9330,7 +9330,7 @@ - + <Quote> shall not contain <THead> parentStandardType != 'Quote' @@ -9342,7 +9342,7 @@ - + <Quote> shall not contain <TBody> parentStandardType != 'Quote' @@ -9354,7 +9354,7 @@ - + <Quote> shall not contain <TFoot> parentStandardType != 'Quote' @@ -9366,7 +9366,7 @@ - + <Quote> shall not contain <Caption> parentStandardType != 'Quote' @@ -9378,7 +9378,7 @@ - + <Link> shall not contain <Document> parentStandardType != 'Link' @@ -9390,7 +9390,7 @@ - + <Link> shall not contain <TOC> parentStandardType != 'Link' @@ -9402,7 +9402,7 @@ - + <Link> shall not contain <TOCI> parentStandardType != 'Link' @@ -9414,7 +9414,7 @@ - + <Link> shall not contain <Link> parentStandardType != 'Link' @@ -9426,7 +9426,7 @@ - + <Link> shall not contain <RB> parentStandardType != 'Link' @@ -9438,7 +9438,7 @@ - + <Link> shall not contain <RT> parentStandardType != 'Link' @@ -9450,7 +9450,7 @@ - + <Link> shall not contain <RP> parentStandardType != 'Link' @@ -9462,7 +9462,7 @@ - + <Link> shall not contain <WT> parentStandardType != 'Link' @@ -9474,7 +9474,7 @@ - + <Link> shall not contain <WP> parentStandardType != 'Link' @@ -9486,7 +9486,7 @@ - + <Link> shall not contain <Index> parentStandardType != 'Link' @@ -9498,7 +9498,7 @@ - + <Link> shall not contain <LI> parentStandardType != 'Link' @@ -9510,7 +9510,7 @@ - + <Link> shall not contain <LBody> parentStandardType != 'Link' @@ -9522,7 +9522,7 @@ - + <Link> shall not contain <TR> parentStandardType != 'Link' @@ -9534,7 +9534,7 @@ - + <Link> shall not contain <TH> parentStandardType != 'Link' @@ -9546,7 +9546,7 @@ - + <Link> shall not contain <TD> parentStandardType != 'Link' @@ -9558,7 +9558,7 @@ - + <Link> shall not contain <THead> parentStandardType != 'Link' @@ -9570,7 +9570,7 @@ - + <Link> shall not contain <TBody> parentStandardType != 'Link' @@ -9582,7 +9582,7 @@ - + <Link> shall not contain <TFoot> parentStandardType != 'Link' @@ -9594,7 +9594,7 @@ - + <Reference> shall not contain <Document> parentStandardType != 'Reference' @@ -9606,7 +9606,7 @@ - + <Reference> shall not contain <DocumentFragment> parentStandardType != 'Reference' @@ -9618,7 +9618,7 @@ - + <Reference> shall not contain <Part> parentStandardType != 'Reference' @@ -9630,7 +9630,7 @@ - + <Reference> shall not contain <Art> parentStandardType != 'Reference' @@ -9642,7 +9642,7 @@ - + <Reference> shall not contain <Div> parentStandardType != 'Reference' @@ -9654,7 +9654,7 @@ - + <Reference> shall not contain <Sect> parentStandardType != 'Reference' @@ -9666,7 +9666,7 @@ - + <Reference> shall not contain <TOC> parentStandardType != 'Reference' @@ -9678,7 +9678,7 @@ - + <Reference> shall not contain <TOCI> parentStandardType != 'Reference' @@ -9690,7 +9690,7 @@ - + <Reference> shall not contain <Aside> parentStandardType != 'Reference' @@ -9702,7 +9702,7 @@ - + <Reference> shall not contain <BlockQuote> parentStandardType != 'Reference' @@ -9714,7 +9714,7 @@ - + <Reference> shall not contain <P> parentStandardType != 'Reference' @@ -9726,7 +9726,7 @@ - + <Reference> shall not contain <Code> parentStandardType != 'Reference' @@ -9738,7 +9738,7 @@ - + <Reference> shall not contain <Hn> parentStandardType != 'Reference' @@ -9750,7 +9750,7 @@ - + <Reference> shall not contain <H> parentStandardType != 'Reference' @@ -9762,7 +9762,7 @@ - + <Reference> shall not contain <Title> parentStandardType != 'Reference' @@ -9774,7 +9774,7 @@ - + <Reference> shall not contain <Sub> parentStandardType != 'Reference' @@ -9786,7 +9786,7 @@ - + <Reference> shall not contain <Quote> parentStandardType != 'Reference' @@ -9798,7 +9798,7 @@ - + <Reference> shall not contain <Reference> parentStandardType != 'Reference' @@ -9810,7 +9810,7 @@ - + <Reference> shall not contain <Form> parentStandardType != 'Reference' @@ -9822,7 +9822,7 @@ - + <Reference> shall not contain <Ruby> parentStandardType != 'Reference' @@ -9834,7 +9834,7 @@ - + <Reference> shall not contain <RB> parentStandardType != 'Reference' @@ -9846,7 +9846,7 @@ - + <Reference> shall not contain <RT> parentStandardType != 'Reference' @@ -9858,7 +9858,7 @@ - + <Reference> shall not contain <RP> parentStandardType != 'Reference' @@ -9870,7 +9870,7 @@ - + <Reference> shall not contain <Warichu> parentStandardType != 'Reference' @@ -9882,7 +9882,7 @@ - + <Reference> shall not contain <WT> parentStandardType != 'Reference' @@ -9894,7 +9894,7 @@ - + <Reference> shall not contain <WP> parentStandardType != 'Reference' @@ -9906,7 +9906,7 @@ - + <Reference> shall not contain <Index> parentStandardType != 'Reference' @@ -9918,7 +9918,7 @@ - + <Reference> shall not contain <L> parentStandardType != 'Reference' @@ -9930,7 +9930,7 @@ - + <Reference> shall not contain <LI> parentStandardType != 'Reference' @@ -9942,7 +9942,7 @@ - + <Reference> shall not contain <LBody> parentStandardType != 'Reference' @@ -9954,7 +9954,7 @@ - + <Reference> shall not contain <Table> parentStandardType != 'Reference' @@ -9966,7 +9966,7 @@ - + <Reference> shall not contain <TR> parentStandardType != 'Reference' @@ -9978,7 +9978,7 @@ - + <Reference> shall not contain <TH> parentStandardType != 'Reference' @@ -9990,7 +9990,7 @@ - + <Reference> shall not contain <TD> parentStandardType != 'Reference' @@ -10002,7 +10002,7 @@ - + <Reference> shall not contain <THead> parentStandardType != 'Reference' @@ -10014,7 +10014,7 @@ - + <Reference> shall not contain <TBody> parentStandardType != 'Reference' @@ -10026,7 +10026,7 @@ - + <Reference> shall not contain <TFoot> parentStandardType != 'Reference' @@ -10038,7 +10038,7 @@ - + <Reference> shall not contain <Caption> parentStandardType != 'Reference' @@ -10050,7 +10050,7 @@ - + <Reference> shall not contain <Formula> parentStandardType != 'Reference' @@ -10062,7 +10062,7 @@ - + <Annot> shall not contain <Document> parentStandardType != 'Annot' @@ -10074,7 +10074,7 @@ - + <Annot> shall not contain <TOC> parentStandardType != 'Annot' @@ -10086,7 +10086,7 @@ - + <Annot> shall not contain <TOCI> parentStandardType != 'Annot' @@ -10098,7 +10098,7 @@ - + <Annot> shall not contain <Private> parentStandardType != 'Annot' @@ -10110,7 +10110,7 @@ - + <Annot> shall not contain <RB> parentStandardType != 'Annot' @@ -10122,7 +10122,7 @@ - + <Annot> shall not contain <RT> parentStandardType != 'Annot' @@ -10134,7 +10134,7 @@ - + <Annot> shall not contain <RP> parentStandardType != 'Annot' @@ -10146,7 +10146,7 @@ - + <Annot> shall not contain <WT> parentStandardType != 'Annot' @@ -10158,7 +10158,7 @@ - + <Annot> shall not contain <WP> parentStandardType != 'Annot' @@ -10170,7 +10170,7 @@ - + <Annot> shall not contain <Index> parentStandardType != 'Annot' @@ -10182,7 +10182,7 @@ - + <Annot> shall not contain <LI> parentStandardType != 'Annot' @@ -10194,7 +10194,7 @@ - + <Annot> shall not contain <LBody> parentStandardType != 'Annot' @@ -10206,7 +10206,7 @@ - + <Annot> shall not contain <TR> parentStandardType != 'Annot' @@ -10218,7 +10218,7 @@ - + <Annot> shall not contain <TH> parentStandardType != 'Annot' @@ -10230,7 +10230,7 @@ - + <Annot> shall not contain <TD> parentStandardType != 'Annot' @@ -10242,7 +10242,7 @@ - + <Annot> shall not contain <THead> parentStandardType != 'Annot' @@ -10254,7 +10254,7 @@ - + <Annot> shall not contain <TBody> parentStandardType != 'Annot' @@ -10266,7 +10266,7 @@ - + <Annot> shall not contain <TFoot> parentStandardType != 'Annot' @@ -10278,7 +10278,7 @@ - + <Form> shall not contain <Document> parentStandardType != 'Form' @@ -10290,7 +10290,7 @@ - + <Form> shall not contain <DocumentFragment> parentStandardType != 'Form' @@ -10302,7 +10302,7 @@ - + <Form> shall not contain <Art> parentStandardType != 'Form' @@ -10314,7 +10314,7 @@ - + <Form> shall not contain <Sect> parentStandardType != 'Form' @@ -10326,7 +10326,7 @@ - + <Form> shall not contain <TOC> parentStandardType != 'Form' @@ -10338,7 +10338,7 @@ - + <Form> shall not contain <TOCI> parentStandardType != 'Form' @@ -10350,7 +10350,7 @@ - + <Form> shall not contain <Aside> parentStandardType != 'Form' @@ -10362,7 +10362,7 @@ - + <Form> shall not contain <BlockQuote> parentStandardType != 'Form' @@ -10374,7 +10374,7 @@ - + <Form> shall not contain <P> parentStandardType != 'Form' @@ -10386,7 +10386,7 @@ - + <Form> shall not contain <Hn> parentStandardType != 'Form' @@ -10398,7 +10398,7 @@ - + <Form> shall not contain <H> parentStandardType != 'Form' @@ -10410,7 +10410,7 @@ - + <Form> shall not contain <Title> parentStandardType != 'Form' @@ -10422,7 +10422,7 @@ - + <Form> shall not contain <Sub> parentStandardType != 'Form' @@ -10434,7 +10434,7 @@ - + <Form> shall not contain <Em> parentStandardType != 'Form' @@ -10446,7 +10446,7 @@ - + <Form> shall not contain <Strong> parentStandardType != 'Form' @@ -10458,7 +10458,7 @@ - + <Form> shall not contain <Span> parentStandardType != 'Form' @@ -10470,7 +10470,7 @@ - + <Form> shall not contain <Quote> parentStandardType != 'Form' @@ -10482,7 +10482,7 @@ - + <Form> shall not contain <Link> parentStandardType != 'Form' @@ -10494,7 +10494,7 @@ - + <Form> shall not contain <Annot> parentStandardType != 'Form' @@ -10506,7 +10506,7 @@ - + <Form> shall not contain <Form> parentStandardType != 'Form' @@ -10518,7 +10518,7 @@ - + <Form> shall not contain <Ruby> parentStandardType != 'Form' @@ -10530,7 +10530,7 @@ - + <Form> shall not contain <RB> parentStandardType != 'Form' @@ -10542,7 +10542,7 @@ - + <Form> shall not contain <RT> parentStandardType != 'Form' @@ -10554,7 +10554,7 @@ - + <Form> shall not contain <RP> parentStandardType != 'Form' @@ -10566,7 +10566,7 @@ - + <Form> shall not contain <Warichu> parentStandardType != 'Form' @@ -10578,7 +10578,7 @@ - + <Form> shall not contain <WT> parentStandardType != 'Form' @@ -10590,7 +10590,7 @@ - + <Form> shall not contain <WP> parentStandardType != 'Form' @@ -10602,7 +10602,7 @@ - + <Form> shall not contain <Index> parentStandardType != 'Form' @@ -10614,7 +10614,7 @@ - + <Form> shall not contain <LI> parentStandardType != 'Form' @@ -10626,7 +10626,7 @@ - + <Form> shall not contain <LBody> parentStandardType != 'Form' @@ -10638,7 +10638,7 @@ - + <Form> shall not contain <TR> parentStandardType != 'Form' @@ -10650,7 +10650,7 @@ - + <Form> shall not contain <TH> parentStandardType != 'Form' @@ -10662,7 +10662,7 @@ - + <Form> shall not contain <TD> parentStandardType != 'Form' @@ -10674,7 +10674,7 @@ - + <Form> shall not contain <THead> parentStandardType != 'Form' @@ -10686,7 +10686,7 @@ - + <Form> shall not contain <TBody> parentStandardType != 'Form' @@ -10698,7 +10698,7 @@ - + <Form> shall not contain <TFoot> parentStandardType != 'Form' @@ -10710,7 +10710,7 @@ - + <Form> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -10722,7 +10722,7 @@ - + <Ruby> shall not contain <Document> parentStandardType != 'Ruby' @@ -10734,7 +10734,7 @@ - + <Ruby> shall not contain <DocumentFragment> parentStandardType != 'Ruby' @@ -10746,7 +10746,7 @@ - + <Ruby> shall not contain <Part> parentStandardType != 'Ruby' @@ -10758,7 +10758,7 @@ - + <Ruby> shall not contain <Art> parentStandardType != 'Ruby' @@ -10770,7 +10770,7 @@ - + <Ruby> shall not contain <Div> parentStandardType != 'Ruby' @@ -10782,7 +10782,7 @@ - + <Ruby> shall not contain <Sect> parentStandardType != 'Ruby' @@ -10794,7 +10794,7 @@ - + <Ruby> shall not contain <TOC> parentStandardType != 'Ruby' @@ -10806,7 +10806,7 @@ - + <Ruby> shall not contain <TOCI> parentStandardType != 'Ruby' @@ -10818,7 +10818,7 @@ - + <Ruby> shall not contain <Aside> parentStandardType != 'Ruby' @@ -10830,7 +10830,7 @@ - + <Ruby> shall not contain <BlockQuote> parentStandardType != 'Ruby' @@ -10842,7 +10842,7 @@ - + <Ruby> shall not contain <P> parentStandardType != 'Ruby' @@ -10854,7 +10854,7 @@ - + <Ruby> shall not contain <Note> parentStandardType != 'Ruby' @@ -10866,7 +10866,7 @@ - + <Ruby> shall not contain <Code> parentStandardType != 'Ruby' @@ -10878,7 +10878,7 @@ - + <Ruby> shall not contain <Hn> parentStandardType != 'Ruby' @@ -10890,7 +10890,7 @@ - + <Ruby> shall not contain <H> parentStandardType != 'Ruby' @@ -10902,7 +10902,7 @@ - + <Ruby> shall not contain <Title> parentStandardType != 'Ruby' @@ -10914,7 +10914,7 @@ - + <Ruby> shall not contain <Sub> parentStandardType != 'Ruby' @@ -10926,7 +10926,7 @@ - + <Ruby> shall not contain <Lbl> parentStandardType != 'Ruby' @@ -10938,7 +10938,7 @@ - + <Ruby> shall not contain <Em> parentStandardType != 'Ruby' @@ -10950,7 +10950,7 @@ - + <Ruby> shall not contain <Strong> parentStandardType != 'Ruby' @@ -10962,7 +10962,7 @@ - + <Ruby> shall not contain <Span> parentStandardType != 'Ruby' @@ -10974,7 +10974,7 @@ - + <Ruby> shall not contain <Quote> parentStandardType != 'Ruby' @@ -10986,7 +10986,7 @@ - + <Ruby> shall not contain <Link> parentStandardType != 'Ruby' @@ -10998,7 +10998,7 @@ - + <Ruby> shall not contain <Reference> parentStandardType != 'Ruby' @@ -11010,7 +11010,7 @@ - + <Ruby> shall not contain <Annot> parentStandardType != 'Ruby' @@ -11022,7 +11022,7 @@ - + <Ruby> shall not contain <Form> parentStandardType != 'Ruby' @@ -11034,7 +11034,7 @@ - + <Ruby> shall not contain <Ruby> parentStandardType != 'Ruby' @@ -11046,7 +11046,7 @@ - + <Ruby> shall not contain <Warichu> parentStandardType != 'Ruby' @@ -11058,7 +11058,7 @@ - + <Ruby> shall not contain <WT> parentStandardType != 'Ruby' @@ -11070,7 +11070,7 @@ - + <Ruby> shall not contain <WP> parentStandardType != 'Ruby' @@ -11082,7 +11082,7 @@ - + <Ruby> shall not contain <FENote> parentStandardType != 'Ruby' @@ -11094,7 +11094,7 @@ - + <Ruby> shall not contain <Index> parentStandardType != 'Ruby' @@ -11106,7 +11106,7 @@ - + <Ruby> shall not contain <L> parentStandardType != 'Ruby' @@ -11118,7 +11118,7 @@ - + <Ruby> shall not contain <LI> parentStandardType != 'Ruby' @@ -11130,7 +11130,7 @@ - + <Ruby> shall not contain <LBody> parentStandardType != 'Ruby' @@ -11142,7 +11142,7 @@ - + <Ruby> shall not contain <BibEntry> parentStandardType != 'Ruby' @@ -11154,7 +11154,7 @@ - + <Ruby> shall not contain <Table> parentStandardType != 'Ruby' @@ -11166,7 +11166,7 @@ - + <Ruby> shall not contain <TR> parentStandardType != 'Ruby' @@ -11178,7 +11178,7 @@ - + <Ruby> shall not contain <TH> parentStandardType != 'Ruby' @@ -11190,7 +11190,7 @@ - + <Ruby> shall not contain <TD> parentStandardType != 'Ruby' @@ -11202,7 +11202,7 @@ - + <Ruby> shall not contain <THead> parentStandardType != 'Ruby' @@ -11214,7 +11214,7 @@ - + <Ruby> shall not contain <TBody> parentStandardType != 'Ruby' @@ -11226,7 +11226,7 @@ - + <Ruby> shall not contain <TFoot> parentStandardType != 'Ruby' @@ -11238,7 +11238,7 @@ - + <Ruby> shall not contain <Caption> parentStandardType != 'Ruby' @@ -11250,7 +11250,7 @@ - + <Ruby> shall not contain <Figure> parentStandardType != 'Ruby' @@ -11262,7 +11262,7 @@ - + <Ruby> shall not contain <Formula> parentStandardType != 'Ruby' @@ -11274,7 +11274,7 @@ - + <Ruby> shall not contain <Artifact> parentStandardType != 'Ruby' @@ -11286,7 +11286,7 @@ - + <RB> shall not contain <Document> parentStandardType != 'RB' @@ -11298,7 +11298,7 @@ - + <RB> shall not contain <DocumentFragment> parentStandardType != 'RB' @@ -11310,7 +11310,7 @@ - + <RB> shall not contain <Part> parentStandardType != 'RB' @@ -11322,7 +11322,7 @@ - + <RB> shall not contain <Art> parentStandardType != 'RB' @@ -11334,7 +11334,7 @@ - + <RB> shall not contain <Div> parentStandardType != 'RB' @@ -11346,7 +11346,7 @@ - + <RB> shall not contain <Sect> parentStandardType != 'RB' @@ -11358,7 +11358,7 @@ - + <RB> shall not contain <TOC> parentStandardType != 'RB' @@ -11370,7 +11370,7 @@ - + <RB> shall not contain <TOCI> parentStandardType != 'RB' @@ -11382,7 +11382,7 @@ - + <RB> shall not contain <Aside> parentStandardType != 'RB' @@ -11394,7 +11394,7 @@ - + <RB> shall not contain <BlockQuote> parentStandardType != 'RB' @@ -11406,7 +11406,7 @@ - + <RB> shall not contain <P> parentStandardType != 'RB' @@ -11418,7 +11418,7 @@ - + <RB> shall not contain <Note> parentStandardType != 'RB' @@ -11430,7 +11430,7 @@ - + <RB> shall not contain <Code> parentStandardType != 'RB' @@ -11442,7 +11442,7 @@ - + <RB> shall not contain <Hn> parentStandardType != 'RB' @@ -11454,7 +11454,7 @@ - + <RB> shall not contain <H> parentStandardType != 'RB' @@ -11466,7 +11466,7 @@ - + <RB> shall not contain <Title> parentStandardType != 'RB' @@ -11478,7 +11478,7 @@ - + <RB> shall not contain <Lbl> parentStandardType != 'RB' @@ -11490,7 +11490,7 @@ - + <RB> shall not contain <Ruby> parentStandardType != 'RB' @@ -11502,7 +11502,7 @@ - + <RB> shall not contain <RB> parentStandardType != 'RB' @@ -11514,7 +11514,7 @@ - + <RB> shall not contain <RT> parentStandardType != 'RB' @@ -11526,7 +11526,7 @@ - + <RB> shall not contain <RP> parentStandardType != 'RB' @@ -11538,7 +11538,7 @@ - + <RB> shall not contain <Warichu> parentStandardType != 'RB' @@ -11550,7 +11550,7 @@ - + <RB> shall not contain <WT> parentStandardType != 'RB' @@ -11562,7 +11562,7 @@ - + <RB> shall not contain <WP> parentStandardType != 'RB' @@ -11574,7 +11574,7 @@ - + <RB> shall not contain <FENote> parentStandardType != 'RB' @@ -11586,7 +11586,7 @@ - + <RB> shall not contain <Index> parentStandardType != 'RB' @@ -11598,7 +11598,7 @@ - + <RB> shall not contain <L> parentStandardType != 'RB' @@ -11610,7 +11610,7 @@ - + <RB> shall not contain <LI> parentStandardType != 'RB' @@ -11622,7 +11622,7 @@ - + <RB> shall not contain <LBody> parentStandardType != 'RB' @@ -11634,7 +11634,7 @@ - + <RB> shall not contain <BibEntry> parentStandardType != 'RB' @@ -11646,7 +11646,7 @@ - + <RB> shall not contain <Table> parentStandardType != 'RB' @@ -11658,7 +11658,7 @@ - + <RB> shall not contain <TR> parentStandardType != 'RB' @@ -11670,7 +11670,7 @@ - + <RB> shall not contain <TH> parentStandardType != 'RB' @@ -11682,7 +11682,7 @@ - + <RB> shall not contain <TD> parentStandardType != 'RB' @@ -11694,7 +11694,7 @@ - + <RB> shall not contain <THead> parentStandardType != 'RB' @@ -11706,7 +11706,7 @@ - + <RB> shall not contain <TBody> parentStandardType != 'RB' @@ -11718,7 +11718,7 @@ - + <RB> shall not contain <TFoot> parentStandardType != 'RB' @@ -11730,7 +11730,7 @@ - + <RB> shall not contain <Caption> parentStandardType != 'RB' @@ -11742,7 +11742,7 @@ - + <RB> shall not contain <Figure> parentStandardType != 'RB' @@ -11754,7 +11754,7 @@ - + <RB> shall not contain <Formula> parentStandardType != 'RB' @@ -11766,7 +11766,7 @@ - + <RT> shall not contain <Document> parentStandardType != 'RT' @@ -11778,7 +11778,7 @@ - + <RT> shall not contain <DocumentFragment> parentStandardType != 'RT' @@ -11790,7 +11790,7 @@ - + <RT> shall not contain <Part> parentStandardType != 'RT' @@ -11802,7 +11802,7 @@ - + <RT> shall not contain <Art> parentStandardType != 'RT' @@ -11814,7 +11814,7 @@ - + <RT> shall not contain <Div> parentStandardType != 'RT' @@ -11826,7 +11826,7 @@ - + <RT> shall not contain <Sect> parentStandardType != 'RT' @@ -11838,7 +11838,7 @@ - + <RT> shall not contain <TOC> parentStandardType != 'RT' @@ -11850,7 +11850,7 @@ - + <RT> shall not contain <TOCI> parentStandardType != 'RT' @@ -11862,7 +11862,7 @@ - + <RT> shall not contain <Aside> parentStandardType != 'RT' @@ -11874,7 +11874,7 @@ - + <RT> shall not contain <BlockQuote> parentStandardType != 'RT' @@ -11886,7 +11886,7 @@ - + <RT> shall not contain <P> parentStandardType != 'RT' @@ -11898,7 +11898,7 @@ - + <RT> shall not contain <Note> parentStandardType != 'RT' @@ -11910,7 +11910,7 @@ - + <RT> shall not contain <Code> parentStandardType != 'RT' @@ -11922,7 +11922,7 @@ - + <RT> shall not contain <Hn> parentStandardType != 'RT' @@ -11934,7 +11934,7 @@ - + <RT> shall not contain <H> parentStandardType != 'RT' @@ -11946,7 +11946,7 @@ - + <RT> shall not contain <Title> parentStandardType != 'RT' @@ -11958,7 +11958,7 @@ - + <RT> shall not contain <Lbl> parentStandardType != 'RT' @@ -11970,7 +11970,7 @@ - + <RT> shall not contain <Ruby> parentStandardType != 'RT' @@ -11982,7 +11982,7 @@ - + <RT> shall not contain <RB> parentStandardType != 'RT' @@ -11994,7 +11994,7 @@ - + <RT> shall not contain <RT> parentStandardType != 'RT' @@ -12006,7 +12006,7 @@ - + <RT> shall not contain <RP> parentStandardType != 'RT' @@ -12018,7 +12018,7 @@ - + <RT> shall not contain <Warichu> parentStandardType != 'RT' @@ -12030,7 +12030,7 @@ - + <RT> shall not contain <WT> parentStandardType != 'RT' @@ -12042,7 +12042,7 @@ - + <RT> shall not contain <WP> parentStandardType != 'RT' @@ -12054,7 +12054,7 @@ - + <RT> shall not contain <FENote> parentStandardType != 'RT' @@ -12066,7 +12066,7 @@ - + <RT> shall not contain <Index> parentStandardType != 'RT' @@ -12078,7 +12078,7 @@ - + <RT> shall not contain <L> parentStandardType != 'RT' @@ -12090,7 +12090,7 @@ - + <RT> shall not contain <LI> parentStandardType != 'RT' @@ -12102,7 +12102,7 @@ - + <RT> shall not contain <LBody> parentStandardType != 'RT' @@ -12114,7 +12114,7 @@ - + <RT> shall not contain <BibEntry> parentStandardType != 'RT' @@ -12126,7 +12126,7 @@ - + <RT> shall not contain <Table> parentStandardType != 'RT' @@ -12138,7 +12138,7 @@ - + <RT> shall not contain <TR> parentStandardType != 'RT' @@ -12150,7 +12150,7 @@ - + <RT> shall not contain <TH> parentStandardType != 'RT' @@ -12162,7 +12162,7 @@ - + <RT> shall not contain <TD> parentStandardType != 'RT' @@ -12174,7 +12174,7 @@ - + <RT> shall not contain <THead> parentStandardType != 'RT' @@ -12186,7 +12186,7 @@ - + <RT> shall not contain <TBody> parentStandardType != 'RT' @@ -12198,7 +12198,7 @@ - + <RT> shall not contain <TFoot> parentStandardType != 'RT' @@ -12210,7 +12210,7 @@ - + <RT> shall not contain <Caption> parentStandardType != 'RT' @@ -12222,7 +12222,7 @@ - + <RT> shall not contain <Figure> parentStandardType != 'RT' @@ -12234,7 +12234,7 @@ - + <RT> shall not contain <Formula> parentStandardType != 'RT' @@ -12246,7 +12246,7 @@ - + <RP> shall not contain <Document> parentStandardType != 'RP' @@ -12258,7 +12258,7 @@ - + <RP> shall not contain <DocumentFragment> parentStandardType != 'RP' @@ -12270,7 +12270,7 @@ - + <RP> shall not contain <Part> parentStandardType != 'RP' @@ -12282,7 +12282,7 @@ - + <RP> shall not contain <Art> parentStandardType != 'RP' @@ -12294,7 +12294,7 @@ - + <RP> shall not contain <Div> parentStandardType != 'RP' @@ -12306,7 +12306,7 @@ - + <RP> shall not contain <Sect> parentStandardType != 'RP' @@ -12318,7 +12318,7 @@ - + <RP> shall not contain <TOC> parentStandardType != 'RP' @@ -12330,7 +12330,7 @@ - + <RP> shall not contain <TOCI> parentStandardType != 'RP' @@ -12342,7 +12342,7 @@ - + <RP> shall not contain <Aside> parentStandardType != 'RP' @@ -12354,7 +12354,7 @@ - + <RP> shall not contain <BlockQuote> parentStandardType != 'RP' @@ -12366,7 +12366,7 @@ - + <RP> shall not contain <P> parentStandardType != 'RP' @@ -12378,7 +12378,7 @@ - + <RP> shall not contain <Note> parentStandardType != 'RP' @@ -12390,7 +12390,7 @@ - + <RP> shall not contain <Code> parentStandardType != 'RP' @@ -12402,7 +12402,7 @@ - + <RP> shall not contain <Hn> parentStandardType != 'RP' @@ -12414,7 +12414,7 @@ - + <RP> shall not contain <H> parentStandardType != 'RP' @@ -12426,7 +12426,7 @@ - + <RP> shall not contain <Title> parentStandardType != 'RP' @@ -12438,7 +12438,7 @@ - + <RP> shall not contain <Lbl> parentStandardType != 'RP' @@ -12450,7 +12450,7 @@ - + <RP> shall not contain <Ruby> parentStandardType != 'RP' @@ -12462,7 +12462,7 @@ - + <RP> shall not contain <RB> parentStandardType != 'RP' @@ -12474,7 +12474,7 @@ - + <RP> shall not contain <RT> parentStandardType != 'RP' @@ -12486,7 +12486,7 @@ - + <RP> shall not contain <RP> parentStandardType != 'RP' @@ -12498,7 +12498,7 @@ - + <RP> shall not contain <Warichu> parentStandardType != 'RP' @@ -12510,7 +12510,7 @@ - + <RP> shall not contain <WT> parentStandardType != 'RP' @@ -12522,7 +12522,7 @@ - + <RP> shall not contain <WP> parentStandardType != 'RP' @@ -12534,7 +12534,7 @@ - + <RP> shall not contain <FENote> parentStandardType != 'RP' @@ -12546,7 +12546,7 @@ - + <RP> shall not contain <Index> parentStandardType != 'RP' @@ -12558,7 +12558,7 @@ - + <RP> shall not contain <L> parentStandardType != 'RP' @@ -12570,7 +12570,7 @@ - + <RP> shall not contain <LI> parentStandardType != 'RP' @@ -12582,7 +12582,7 @@ - + <RP> shall not contain <LBody> parentStandardType != 'RP' @@ -12594,7 +12594,7 @@ - + <RP> shall not contain <BibEntry> parentStandardType != 'RP' @@ -12606,7 +12606,7 @@ - + <RP> shall not contain <Table> parentStandardType != 'RP' @@ -12618,7 +12618,7 @@ - + <RP> shall not contain <TR> parentStandardType != 'RP' @@ -12630,7 +12630,7 @@ - + <RP> shall not contain <TH> parentStandardType != 'RP' @@ -12642,7 +12642,7 @@ - + <RP> shall not contain <TD> parentStandardType != 'RP' @@ -12654,7 +12654,7 @@ - + <RP> shall not contain <THead> parentStandardType != 'RP' @@ -12666,7 +12666,7 @@ - + <RP> shall not contain <TBody> parentStandardType != 'RP' @@ -12678,7 +12678,7 @@ - + <RP> shall not contain <TFoot> parentStandardType != 'RP' @@ -12690,7 +12690,7 @@ - + <RP> shall not contain <Caption> parentStandardType != 'RP' @@ -12702,7 +12702,7 @@ - + <RP> shall not contain <Figure> parentStandardType != 'RP' @@ -12714,7 +12714,7 @@ - + <RP> shall not contain <Formula> parentStandardType != 'RP' @@ -12726,7 +12726,7 @@ - + <Warichu> shall not contain <Document> parentStandardType != 'Warichu' @@ -12738,7 +12738,7 @@ - + <Warichu> shall not contain <DocumentFragment> parentStandardType != 'Warichu' @@ -12750,7 +12750,7 @@ - + <Warichu> shall not contain <Part> parentStandardType != 'Warichu' @@ -12762,7 +12762,7 @@ - + <Warichu> shall not contain <Art> parentStandardType != 'Warichu' @@ -12774,7 +12774,7 @@ - + <Warichu> shall not contain <Div> parentStandardType != 'Warichu' @@ -12786,7 +12786,7 @@ - + <Warichu> shall not contain <Sect> parentStandardType != 'Warichu' @@ -12798,7 +12798,7 @@ - + <Warichu> shall not contain <TOC> parentStandardType != 'Warichu' @@ -12810,7 +12810,7 @@ - + <Warichu> shall not contain <TOCI> parentStandardType != 'Warichu' @@ -12822,7 +12822,7 @@ - + <Warichu> shall not contain <Aside> parentStandardType != 'Warichu' @@ -12834,7 +12834,7 @@ - + <Warichu> shall not contain <BlockQuote> parentStandardType != 'Warichu' @@ -12846,7 +12846,7 @@ - + <Warichu> shall not contain <P> parentStandardType != 'Warichu' @@ -12858,7 +12858,7 @@ - + <Warichu> shall not contain <Note> parentStandardType != 'Warichu' @@ -12870,7 +12870,7 @@ - + <Warichu> shall not contain <Code> parentStandardType != 'Warichu' @@ -12882,7 +12882,7 @@ - + <Warichu> shall not contain <Hn> parentStandardType != 'Warichu' @@ -12894,7 +12894,7 @@ - + <Warichu> shall not contain <H> parentStandardType != 'Warichu' @@ -12906,7 +12906,7 @@ - + <Warichu> shall not contain <Title> parentStandardType != 'Warichu' @@ -12918,7 +12918,7 @@ - + <Warichu> shall not contain <Sub> parentStandardType != 'Warichu' @@ -12930,7 +12930,7 @@ - + <Warichu> shall not contain <Lbl> parentStandardType != 'Warichu' @@ -12942,7 +12942,7 @@ - + <Warichu> shall not contain <Em> parentStandardType != 'Warichu' @@ -12954,7 +12954,7 @@ - + <Warichu> shall not contain <Strong> parentStandardType != 'Warichu' @@ -12966,7 +12966,7 @@ - + <Warichu> shall not contain <Span> parentStandardType != 'Warichu' @@ -12978,7 +12978,7 @@ - + <Warichu> shall not contain <Quote> parentStandardType != 'Warichu' @@ -12990,7 +12990,7 @@ - + <Warichu> shall not contain <Link> parentStandardType != 'Warichu' @@ -13002,7 +13002,7 @@ - + <Warichu> shall not contain <Reference> parentStandardType != 'Warichu' @@ -13014,7 +13014,7 @@ - + <Warichu> shall not contain <Annot> parentStandardType != 'Warichu' @@ -13026,7 +13026,7 @@ - + <Warichu> shall not contain <Form> parentStandardType != 'Warichu' @@ -13038,7 +13038,7 @@ - + <Warichu> shall not contain <Ruby> parentStandardType != 'Warichu' @@ -13050,7 +13050,7 @@ - + <Warichu> shall not contain <RB> parentStandardType != 'Warichu' @@ -13062,7 +13062,7 @@ - + <Warichu> shall not contain <RT> parentStandardType != 'Warichu' @@ -13074,7 +13074,7 @@ - + <Warichu> shall not contain <RP> parentStandardType != 'Warichu' @@ -13086,7 +13086,7 @@ - + <Warichu> shall not contain <Warichu> parentStandardType != 'Warichu' @@ -13098,7 +13098,7 @@ - + <Warichu> shall not contain <FENote> parentStandardType != 'Warichu' @@ -13110,7 +13110,7 @@ - + <Warichu> shall not contain <Index> parentStandardType != 'Warichu' @@ -13122,7 +13122,7 @@ - + <Warichu> shall not contain <L> parentStandardType != 'Warichu' @@ -13134,7 +13134,7 @@ - + <Warichu> shall not contain <LI> parentStandardType != 'Warichu' @@ -13146,7 +13146,7 @@ - + <Warichu> shall not contain <LBody> parentStandardType != 'Warichu' @@ -13158,7 +13158,7 @@ - + <Warichu> shall not contain <BibEntry> parentStandardType != 'Warichu' @@ -13170,7 +13170,7 @@ - + <Warichu> shall not contain <Table> parentStandardType != 'Warichu' @@ -13182,7 +13182,7 @@ - + <Warichu> shall not contain <TR> parentStandardType != 'Warichu' @@ -13194,7 +13194,7 @@ - + <Warichu> shall not contain <TH> parentStandardType != 'Warichu' @@ -13206,7 +13206,7 @@ - + <Warichu> shall not contain <TD> parentStandardType != 'Warichu' @@ -13218,7 +13218,7 @@ - + <Warichu> shall not contain <THead> parentStandardType != 'Warichu' @@ -13230,7 +13230,7 @@ - + <Warichu> shall not contain <TBody> parentStandardType != 'Warichu' @@ -13242,7 +13242,7 @@ - + <Warichu> shall not contain <TFoot> parentStandardType != 'Warichu' @@ -13254,7 +13254,7 @@ - + <Warichu> shall not contain <Caption> parentStandardType != 'Warichu' @@ -13266,7 +13266,7 @@ - + <Warichu> shall not contain <Figure> parentStandardType != 'Warichu' @@ -13278,7 +13278,7 @@ - + <Warichu> shall not contain <Formula> parentStandardType != 'Warichu' @@ -13290,7 +13290,7 @@ - + <Warichu> shall not contain <Artifact> parentStandardType != 'Warichu' @@ -13302,7 +13302,7 @@ - + <WT> shall not contain <Document> parentStandardType != 'WT' @@ -13314,7 +13314,7 @@ - + <WT> shall not contain <DocumentFragment> parentStandardType != 'WT' @@ -13326,7 +13326,7 @@ - + <WT> shall not contain <Part> parentStandardType != 'WT' @@ -13338,7 +13338,7 @@ - + <WT> shall not contain <Art> parentStandardType != 'WT' @@ -13350,7 +13350,7 @@ - + <WT> shall not contain <Div> parentStandardType != 'WT' @@ -13362,7 +13362,7 @@ - + <WT> shall not contain <Sect> parentStandardType != 'WT' @@ -13374,7 +13374,7 @@ - + <WT> shall not contain <TOC> parentStandardType != 'WT' @@ -13386,7 +13386,7 @@ - + <WT> shall not contain <TOCI> parentStandardType != 'WT' @@ -13398,7 +13398,7 @@ - + <WT> shall not contain <Aside> parentStandardType != 'WT' @@ -13410,7 +13410,7 @@ - + <WT> shall not contain <BlockQuote> parentStandardType != 'WT' @@ -13422,7 +13422,7 @@ - + <WT> shall not contain <P> parentStandardType != 'WT' @@ -13434,7 +13434,7 @@ - + <WT> shall not contain <Note> parentStandardType != 'WT' @@ -13446,7 +13446,7 @@ - + <WT> shall not contain <Code> parentStandardType != 'WT' @@ -13458,7 +13458,7 @@ - + <WT> shall not contain <Hn> parentStandardType != 'WT' @@ -13470,7 +13470,7 @@ - + <WT> shall not contain <H> parentStandardType != 'WT' @@ -13482,7 +13482,7 @@ - + <WT> shall not contain <Title> parentStandardType != 'WT' @@ -13494,7 +13494,7 @@ - + <WT> shall not contain <Lbl> parentStandardType != 'WT' @@ -13506,7 +13506,7 @@ - + <WT> shall not contain <Ruby> parentStandardType != 'WT' @@ -13518,7 +13518,7 @@ - + <WT> shall not contain <RB> parentStandardType != 'WT' @@ -13530,7 +13530,7 @@ - + <WT> shall not contain <RT> parentStandardType != 'WT' @@ -13542,7 +13542,7 @@ - + <WT> shall not contain <RP> parentStandardType != 'WT' @@ -13554,7 +13554,7 @@ - + <WT> shall not contain <Warichu> parentStandardType != 'WT' @@ -13566,7 +13566,7 @@ - + <WT> shall not contain <WT> parentStandardType != 'WT' @@ -13578,7 +13578,7 @@ - + <WT> shall not contain <WP> parentStandardType != 'WT' @@ -13590,7 +13590,7 @@ - + <WT> shall not contain <FENote> parentStandardType != 'WT' @@ -13602,7 +13602,7 @@ - + <WT> shall not contain <Index> parentStandardType != 'WT' @@ -13614,7 +13614,7 @@ - + <WT> shall not contain <L> parentStandardType != 'WT' @@ -13626,7 +13626,7 @@ - + <WT> shall not contain <LI> parentStandardType != 'WT' @@ -13638,7 +13638,7 @@ - + <WT> shall not contain <LBody> parentStandardType != 'WT' @@ -13650,7 +13650,7 @@ - + <WT> shall not contain <BibEntry> parentStandardType != 'WT' @@ -13662,7 +13662,7 @@ - + <WT> shall not contain <Table> parentStandardType != 'WT' @@ -13674,7 +13674,7 @@ - + <WT> shall not contain <TR> parentStandardType != 'WT' @@ -13686,7 +13686,7 @@ - + <WT> shall not contain <TH> parentStandardType != 'WT' @@ -13698,7 +13698,7 @@ - + <WT> shall not contain <TD> parentStandardType != 'WT' @@ -13710,7 +13710,7 @@ - + <WT> shall not contain <THead> parentStandardType != 'WT' @@ -13722,7 +13722,7 @@ - + <WT> shall not contain <TBody> parentStandardType != 'WT' @@ -13734,7 +13734,7 @@ - + <WT> shall not contain <TFoot> parentStandardType != 'WT' @@ -13746,7 +13746,7 @@ - + <WT> shall not contain <Caption> parentStandardType != 'WT' @@ -13758,7 +13758,7 @@ - + <WT> shall not contain <Figure> parentStandardType != 'WT' @@ -13770,7 +13770,7 @@ - + <WT> shall not contain <Formula> parentStandardType != 'WT' @@ -13782,7 +13782,7 @@ - + <WP> shall not contain <Document> parentStandardType != 'WP' @@ -13794,7 +13794,7 @@ - + <WP> shall not contain <DocumentFragment> parentStandardType != 'WP' @@ -13806,7 +13806,7 @@ - + <WP> shall not contain <Part> parentStandardType != 'WP' @@ -13818,7 +13818,7 @@ - + <WP> shall not contain <Art> parentStandardType != 'WP' @@ -13830,7 +13830,7 @@ - + <WP> shall not contain <Div> parentStandardType != 'WP' @@ -13842,7 +13842,7 @@ - + <WP> shall not contain <Sect> parentStandardType != 'WP' @@ -13854,7 +13854,7 @@ - + <WP> shall not contain <TOC> parentStandardType != 'WP' @@ -13866,7 +13866,7 @@ - + <WP> shall not contain <TOCI> parentStandardType != 'WP' @@ -13878,7 +13878,7 @@ - + <WP> shall not contain <Aside> parentStandardType != 'WP' @@ -13890,7 +13890,7 @@ - + <WP> shall not contain <BlockQuote> parentStandardType != 'WP' @@ -13902,7 +13902,7 @@ - + <WP> shall not contain <P> parentStandardType != 'WP' @@ -13914,7 +13914,7 @@ - + <WP> shall not contain <Note> parentStandardType != 'WP' @@ -13926,7 +13926,7 @@ - + <WP> shall not contain <Code> parentStandardType != 'WP' @@ -13938,7 +13938,7 @@ - + <WP> shall not contain <Hn> parentStandardType != 'WP' @@ -13950,7 +13950,7 @@ - + <WP> shall not contain <H> parentStandardType != 'WP' @@ -13962,7 +13962,7 @@ - + <WP> shall not contain <Title> parentStandardType != 'WP' @@ -13974,7 +13974,7 @@ - + <WP> shall not contain <Lbl> parentStandardType != 'WP' @@ -13986,7 +13986,7 @@ - + <WP> shall not contain <Ruby> parentStandardType != 'WP' @@ -13998,7 +13998,7 @@ - + <WP> shall not contain <RB> parentStandardType != 'WP' @@ -14010,7 +14010,7 @@ - + <WP> shall not contain <RT> parentStandardType != 'WP' @@ -14022,7 +14022,7 @@ - + <WP> shall not contain <RP> parentStandardType != 'WP' @@ -14034,7 +14034,7 @@ - + <WP> shall not contain <Warichu> parentStandardType != 'WP' @@ -14046,7 +14046,7 @@ - + <WP> shall not contain <WT> parentStandardType != 'WP' @@ -14058,7 +14058,7 @@ - + <WP> shall not contain <WP> parentStandardType != 'WP' @@ -14070,7 +14070,7 @@ - + <WP> shall not contain <FENote> parentStandardType != 'WP' @@ -14082,7 +14082,7 @@ - + <WP> shall not contain <Index> parentStandardType != 'WP' @@ -14094,7 +14094,7 @@ - + <WP> shall not contain <L> parentStandardType != 'WP' @@ -14106,7 +14106,7 @@ - + <WP> shall not contain <LI> parentStandardType != 'WP' @@ -14118,7 +14118,7 @@ - + <WP> shall not contain <LBody> parentStandardType != 'WP' @@ -14130,7 +14130,7 @@ - + <WP> shall not contain <BibEntry> parentStandardType != 'WP' @@ -14142,7 +14142,7 @@ - + <WP> shall not contain <Table> parentStandardType != 'WP' @@ -14154,7 +14154,7 @@ - + <WP> shall not contain <TR> parentStandardType != 'WP' @@ -14166,7 +14166,7 @@ - + <WP> shall not contain <TH> parentStandardType != 'WP' @@ -14178,7 +14178,7 @@ - + <WP> shall not contain <TD> parentStandardType != 'WP' @@ -14190,7 +14190,7 @@ - + <WP> shall not contain <THead> parentStandardType != 'WP' @@ -14202,7 +14202,7 @@ - + <WP> shall not contain <TBody> parentStandardType != 'WP' @@ -14214,7 +14214,7 @@ - + <WP> shall not contain <TFoot> parentStandardType != 'WP' @@ -14226,7 +14226,7 @@ - + <WP> shall not contain <Caption> parentStandardType != 'WP' @@ -14238,7 +14238,7 @@ - + <WP> shall not contain <Figure> parentStandardType != 'WP' @@ -14250,7 +14250,7 @@ - + <WP> shall not contain <Formula> parentStandardType != 'WP' @@ -14262,7 +14262,7 @@ - + <FENote> shall not contain <Document> parentStandardType != 'FENote' @@ -14274,7 +14274,7 @@ - + <FENote> shall not contain <TOC> parentStandardType != 'FENote' @@ -14286,7 +14286,7 @@ - + <FENote> shall not contain <TOCI> parentStandardType != 'FENote' @@ -14298,7 +14298,7 @@ - + <FENote> shall not contain <Hn> parentStandardType != 'FENote' @@ -14310,7 +14310,7 @@ - + <FENote> shall not contain <H> parentStandardType != 'FENote' @@ -14322,7 +14322,7 @@ - + <FENote> shall not contain <Title> parentStandardType != 'FENote' @@ -14334,7 +14334,7 @@ - + <FENote> shall not contain <RB> parentStandardType != 'FENote' @@ -14346,7 +14346,7 @@ - + <FENote> shall not contain <RT> parentStandardType != 'FENote' @@ -14358,7 +14358,7 @@ - + <FENote> shall not contain <RP> parentStandardType != 'FENote' @@ -14370,7 +14370,7 @@ - + <FENote> shall not contain <WT> parentStandardType != 'FENote' @@ -14382,7 +14382,7 @@ - + <FENote> shall not contain <WP> parentStandardType != 'FENote' @@ -14394,7 +14394,7 @@ - + <FENote> shall not contain <Index> parentStandardType != 'FENote' @@ -14406,7 +14406,7 @@ - + <FENote> shall not contain <LI> parentStandardType != 'FENote' @@ -14418,7 +14418,7 @@ - + <FENote> shall not contain <LBody> parentStandardType != 'FENote' @@ -14430,7 +14430,7 @@ - + <FENote> shall not contain <BibEntry> parentStandardType != 'FENote' @@ -14442,7 +14442,7 @@ - + <FENote> shall not contain <TR> parentStandardType != 'FENote' @@ -14454,7 +14454,7 @@ - + <FENote> shall not contain <TH> parentStandardType != 'FENote' @@ -14466,7 +14466,7 @@ - + <FENote> shall not contain <TD> parentStandardType != 'FENote' @@ -14478,7 +14478,7 @@ - + <FENote> shall not contain <THead> parentStandardType != 'FENote' @@ -14490,7 +14490,7 @@ - + <FENote> shall not contain <TBody> parentStandardType != 'FENote' @@ -14502,7 +14502,7 @@ - + <FENote> shall not contain <TFoot> parentStandardType != 'FENote' @@ -14514,7 +14514,7 @@ - + <Index> shall not contain <Document> parentStandardType != 'Index' @@ -14526,7 +14526,7 @@ - + <Index> shall not contain <DocumentFragment> parentStandardType != 'Index' @@ -14538,7 +14538,7 @@ - + <Index> shall not contain <Art> parentStandardType != 'Index' @@ -14550,7 +14550,7 @@ - + <Index> shall not contain <TOC> parentStandardType != 'Index' @@ -14562,7 +14562,7 @@ - + <Index> shall not contain <TOCI> parentStandardType != 'Index' @@ -14574,7 +14574,7 @@ - + <Index> shall not contain <Aside> parentStandardType != 'Index' @@ -14586,7 +14586,7 @@ - + <Index> shall not contain <BlockQuote> parentStandardType != 'Index' @@ -14598,7 +14598,7 @@ - + <Index> shall not contain <Code> parentStandardType != 'Index' @@ -14610,7 +14610,7 @@ - + <Index> shall not contain <Title> parentStandardType != 'Index' @@ -14622,7 +14622,7 @@ - + <Index> shall not contain <Sub> parentStandardType != 'Index' @@ -14634,7 +14634,7 @@ - + <Index> shall not contain <Lbl> parentStandardType != 'Index' @@ -14646,7 +14646,7 @@ - + <Index> shall not contain <Em> parentStandardType != 'Index' @@ -14658,7 +14658,7 @@ - + <Index> shall not contain <Strong> parentStandardType != 'Index' @@ -14670,7 +14670,7 @@ - + <Index> shall not contain <Span> parentStandardType != 'Index' @@ -14682,7 +14682,7 @@ - + <Index> shall not contain <Quote> parentStandardType != 'Index' @@ -14694,7 +14694,7 @@ - + <Index> shall not contain <Link> parentStandardType != 'Index' @@ -14706,7 +14706,7 @@ - + <Index> shall not contain <Form> parentStandardType != 'Index' @@ -14718,7 +14718,7 @@ - + <Index> shall not contain <Ruby> parentStandardType != 'Index' @@ -14730,7 +14730,7 @@ - + <Index> shall not contain <RB> parentStandardType != 'Index' @@ -14742,7 +14742,7 @@ - + <Index> shall not contain <RT> parentStandardType != 'Index' @@ -14754,7 +14754,7 @@ - + <Index> shall not contain <RP> parentStandardType != 'Index' @@ -14766,7 +14766,7 @@ - + <Index> shall not contain <Warichu> parentStandardType != 'Index' @@ -14778,7 +14778,7 @@ - + <Index> shall not contain <WT> parentStandardType != 'Index' @@ -14790,7 +14790,7 @@ - + <Index> shall not contain <WP> parentStandardType != 'Index' @@ -14802,7 +14802,7 @@ - + <Index> shall not contain <Index> parentStandardType != 'Index' @@ -14814,7 +14814,7 @@ - + <Index> shall not contain <LI> parentStandardType != 'Index' @@ -14826,7 +14826,7 @@ - + <Index> shall not contain <LBody> parentStandardType != 'Index' @@ -14838,7 +14838,7 @@ - + <Index> shall not contain <BibEntry> parentStandardType != 'Index' @@ -14850,7 +14850,7 @@ - + <Index> shall not contain <TR> parentStandardType != 'Index' @@ -14862,7 +14862,7 @@ - + <Index> shall not contain <TH> parentStandardType != 'Index' @@ -14874,7 +14874,7 @@ - + <Index> shall not contain <TD> parentStandardType != 'Index' @@ -14886,7 +14886,7 @@ - + <Index> shall not contain <THead> parentStandardType != 'Index' @@ -14898,7 +14898,7 @@ - + <Index> shall not contain <TBody> parentStandardType != 'Index' @@ -14910,7 +14910,7 @@ - + <Index> shall not contain <TFoot> parentStandardType != 'Index' @@ -14922,7 +14922,7 @@ - + <Index> shall not contain content items hasContentItems == false @@ -14934,7 +14934,7 @@ - + <L> shall not contain <Document> parentStandardType != 'L' @@ -14946,7 +14946,7 @@ - + <L> shall not contain <DocumentFragment> parentStandardType != 'L' @@ -14958,7 +14958,7 @@ - + <L> shall not contain <Part> parentStandardType != 'L' @@ -14970,7 +14970,7 @@ - + <L> shall not contain <Art> parentStandardType != 'L' @@ -14982,7 +14982,7 @@ - + <L> shall not contain <Div> parentStandardType != 'L' @@ -14994,7 +14994,7 @@ - + <L> shall not contain <Sect> parentStandardType != 'L' @@ -15006,7 +15006,7 @@ - + <L> shall not contain <TOC> parentStandardType != 'L' @@ -15018,7 +15018,7 @@ - + <L> shall not contain <TOCI> parentStandardType != 'L' @@ -15030,7 +15030,7 @@ - + <L> shall not contain <Aside> parentStandardType != 'L' @@ -15042,7 +15042,7 @@ - + <L> shall not contain <BlockQuote> parentStandardType != 'L' @@ -15054,7 +15054,7 @@ - + <L> shall not contain <P> parentStandardType != 'L' @@ -15066,7 +15066,7 @@ - + <L> shall not contain <Note> parentStandardType != 'L' @@ -15078,7 +15078,7 @@ - + <L> shall not contain <Code> parentStandardType != 'L' @@ -15090,7 +15090,7 @@ - + <L> shall not contain <Hn> parentStandardType != 'L' @@ -15102,7 +15102,7 @@ - + <L> shall not contain <H> parentStandardType != 'L' @@ -15114,7 +15114,7 @@ - + <L> shall not contain <Title> parentStandardType != 'L' @@ -15126,7 +15126,7 @@ - + <L> shall not contain <Sub> parentStandardType != 'L' @@ -15138,7 +15138,7 @@ - + <L> shall not contain <Lbl> parentStandardType != 'L' @@ -15150,7 +15150,7 @@ - + <L> shall not contain <Em> parentStandardType != 'L' @@ -15162,7 +15162,7 @@ - + <L> shall not contain <Strong> parentStandardType != 'L' @@ -15174,7 +15174,7 @@ - + <L> shall not contain <Span> parentStandardType != 'L' @@ -15186,7 +15186,7 @@ - + <L> shall not contain <Quote> parentStandardType != 'L' @@ -15198,7 +15198,7 @@ - + <L> shall not contain <Link> parentStandardType != 'L' @@ -15210,7 +15210,7 @@ - + <L> shall not contain <Reference> parentStandardType != 'L' @@ -15222,7 +15222,7 @@ - + <L> shall not contain <Annot> parentStandardType != 'L' @@ -15234,7 +15234,7 @@ - + <L> shall not contain <Form> parentStandardType != 'L' @@ -15246,7 +15246,7 @@ - + <L> shall not contain <Ruby> parentStandardType != 'L' @@ -15258,7 +15258,7 @@ - + <L> shall not contain <RB> parentStandardType != 'L' @@ -15270,7 +15270,7 @@ - + <L> shall not contain <RT> parentStandardType != 'L' @@ -15282,7 +15282,7 @@ - + <L> shall not contain <RP> parentStandardType != 'L' @@ -15294,7 +15294,7 @@ - + <L> shall not contain <Warichu> parentStandardType != 'L' @@ -15306,7 +15306,7 @@ - + <L> shall not contain <WT> parentStandardType != 'L' @@ -15318,7 +15318,7 @@ - + <L> shall not contain <WP> parentStandardType != 'L' @@ -15330,7 +15330,7 @@ - + <L> shall not contain <FENote> parentStandardType != 'L' @@ -15342,7 +15342,7 @@ - + <L> shall not contain <Index> parentStandardType != 'L' @@ -15354,7 +15354,7 @@ - + <L> shall not contain <LBody> parentStandardType != 'L' @@ -15366,7 +15366,7 @@ - + <L> shall not contain <BibEntry> parentStandardType != 'L' @@ -15378,7 +15378,7 @@ - + <L> shall not contain <Table> parentStandardType != 'L' @@ -15390,7 +15390,7 @@ - + <L> shall not contain <TR> parentStandardType != 'L' @@ -15402,7 +15402,7 @@ - + <L> shall not contain <TH> parentStandardType != 'L' @@ -15414,7 +15414,7 @@ - + <L> shall not contain <TD> parentStandardType != 'L' @@ -15426,7 +15426,7 @@ - + <L> shall not contain <THead> parentStandardType != 'L' @@ -15438,7 +15438,7 @@ - + <L> shall not contain <TBody> parentStandardType != 'L' @@ -15450,7 +15450,7 @@ - + <L> shall not contain <TFoot> parentStandardType != 'L' @@ -15462,7 +15462,7 @@ - + <L> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -15474,7 +15474,7 @@ - + <L> shall not contain <Figure> parentStandardType != 'L' @@ -15486,7 +15486,7 @@ - + <L> shall not contain <Formula> parentStandardType != 'L' @@ -15498,7 +15498,7 @@ - + <L> shall not contain content items hasContentItems == false @@ -15510,7 +15510,7 @@ - + <LI> shall not contain <Document> parentStandardType != 'LI' @@ -15522,7 +15522,7 @@ - + <LI> shall not contain <DocumentFragment> parentStandardType != 'LI' @@ -15534,7 +15534,7 @@ - + <LI> shall not contain <Part> parentStandardType != 'LI' @@ -15546,7 +15546,7 @@ - + <LI> shall not contain <Art> parentStandardType != 'LI' @@ -15558,7 +15558,7 @@ - + <LI> shall not contain <Sect> parentStandardType != 'LI' @@ -15570,7 +15570,7 @@ - + <LI> shall not contain <TOC> parentStandardType != 'LI' @@ -15582,7 +15582,7 @@ - + <LI> shall not contain <TOCI> parentStandardType != 'LI' @@ -15594,7 +15594,7 @@ - + <LI> shall not contain <Aside> parentStandardType != 'LI' @@ -15606,7 +15606,7 @@ - + <LI> shall not contain <BlockQuote> parentStandardType != 'LI' @@ -15618,7 +15618,7 @@ - + <LI> shall not contain <P> parentStandardType != 'LI' @@ -15630,7 +15630,7 @@ - + <LI> shall not contain <Note> parentStandardType != 'LI' @@ -15642,7 +15642,7 @@ - + <LI> shall not contain <Code> parentStandardType != 'LI' @@ -15654,7 +15654,7 @@ - + <LI> shall not contain <Hn> parentStandardType != 'LI' @@ -15666,7 +15666,7 @@ - + <LI> shall not contain <H> parentStandardType != 'LI' @@ -15678,7 +15678,7 @@ - + <LI> shall not contain <Title> parentStandardType != 'LI' @@ -15690,7 +15690,7 @@ - + <LI> shall not contain <Sub> parentStandardType != 'LI' @@ -15702,7 +15702,7 @@ - + <LI> shall not contain <Em> parentStandardType != 'LI' @@ -15714,7 +15714,7 @@ - + <LI> shall not contain <Strong> parentStandardType != 'LI' @@ -15726,7 +15726,7 @@ - + <LI> shall not contain <Span> parentStandardType != 'LI' @@ -15738,7 +15738,7 @@ - + <LI> shall not contain <Quote> parentStandardType != 'LI' @@ -15750,7 +15750,7 @@ - + <LI> shall not contain <Link> parentStandardType != 'LI' @@ -15762,7 +15762,7 @@ - + <LI> shall not contain <Reference> parentStandardType != 'LI' @@ -15774,7 +15774,7 @@ - + <LI> shall not contain <Annot> parentStandardType != 'LI' @@ -15786,7 +15786,7 @@ - + <LI> shall not contain <Form> parentStandardType != 'LI' @@ -15798,7 +15798,7 @@ - + <LI> shall not contain <Ruby> parentStandardType != 'LI' @@ -15810,7 +15810,7 @@ - + <LI> shall not contain <RB> parentStandardType != 'LI' @@ -15822,7 +15822,7 @@ - + <LI> shall not contain <RT> parentStandardType != 'LI' @@ -15834,7 +15834,7 @@ - + <LI> shall not contain <RP> parentStandardType != 'LI' @@ -15846,7 +15846,7 @@ - + <LI> shall not contain <Warichu> parentStandardType != 'LI' @@ -15858,7 +15858,7 @@ - + <LI> shall not contain <WT> parentStandardType != 'LI' @@ -15870,7 +15870,7 @@ - + <LI> shall not contain <WP> parentStandardType != 'LI' @@ -15882,7 +15882,7 @@ - + <LI> shall not contain <FENote> parentStandardType != 'LI' @@ -15894,7 +15894,7 @@ - + <LI> shall not contain <Index> parentStandardType != 'LI' @@ -15906,7 +15906,7 @@ - + <LI> shall not contain <L> parentStandardType != 'LI' @@ -15918,7 +15918,7 @@ - + <LI> shall not contain <LI> parentStandardType != 'LI' @@ -15930,7 +15930,7 @@ - + <LI> shall not contain <BibEntry> parentStandardType != 'LI' @@ -15942,7 +15942,7 @@ - + <LI> shall not contain <Table> parentStandardType != 'LI' @@ -15954,7 +15954,7 @@ - + <LI> shall not contain <TR> parentStandardType != 'LI' @@ -15966,7 +15966,7 @@ - + <LI> shall not contain <TH> parentStandardType != 'LI' @@ -15978,7 +15978,7 @@ - + <LI> shall not contain <TD> parentStandardType != 'LI' @@ -15990,7 +15990,7 @@ - + <LI> shall not contain <THead> parentStandardType != 'LI' @@ -16002,7 +16002,7 @@ - + <LI> shall not contain <TBody> parentStandardType != 'LI' @@ -16014,7 +16014,7 @@ - + <LI> shall not contain <TFoot> parentStandardType != 'LI' @@ -16026,7 +16026,7 @@ - + <LI> shall not contain <Caption> parentStandardType != 'LI' @@ -16038,7 +16038,7 @@ - + <LI> shall not contain <Figure> parentStandardType != 'LI' @@ -16050,7 +16050,7 @@ - + <LI> shall not contain <Formula> parentStandardType != 'LI' @@ -16062,7 +16062,7 @@ - + <LBody> shall not contain <Document> parentStandardType != 'LBody' @@ -16074,7 +16074,7 @@ - + <LBody> shall not contain <DocumentFragment> parentStandardType != 'LBody' @@ -16086,7 +16086,7 @@ - + <LBody> shall not contain <TOC> parentStandardType != 'LBody' @@ -16098,7 +16098,7 @@ - + <LBody> shall not contain <TOCI> parentStandardType != 'LBody' @@ -16110,7 +16110,7 @@ - + <LBody> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -16122,7 +16122,7 @@ - + <LBody> shall not contain <Title> parentStandardType != 'LBody' @@ -16134,7 +16134,7 @@ - + <LBody> shall not contain <Lbl> parentStandardType != 'LBody' @@ -16146,7 +16146,7 @@ - + <LBody> shall not contain <RB> parentStandardType != 'LBody' @@ -16158,7 +16158,7 @@ - + <LBody> shall not contain <RT> parentStandardType != 'LBody' @@ -16170,7 +16170,7 @@ - + <LBody> shall not contain <RP> parentStandardType != 'LBody' @@ -16182,7 +16182,7 @@ - + <LBody> shall not contain <WT> parentStandardType != 'LBody' @@ -16194,7 +16194,7 @@ - + <LBody> shall not contain <WP> parentStandardType != 'LBody' @@ -16206,7 +16206,7 @@ - + <LBody> shall not contain <LI> parentStandardType != 'LBody' @@ -16218,7 +16218,7 @@ - + <LBody> shall not contain <LBody> parentStandardType != 'LBody' @@ -16230,7 +16230,7 @@ - + <LBody> shall not contain <TR> parentStandardType != 'LBody' @@ -16242,7 +16242,7 @@ - + <LBody> shall not contain <TH> parentStandardType != 'LBody' @@ -16254,7 +16254,7 @@ - + <LBody> shall not contain <TD> parentStandardType != 'LBody' @@ -16266,7 +16266,7 @@ - + <LBody> shall not contain <THead> parentStandardType != 'LBody' @@ -16278,7 +16278,7 @@ - + <LBody> shall not contain <TBody> parentStandardType != 'LBody' @@ -16290,7 +16290,7 @@ - + <LBody> shall not contain <TFoot> parentStandardType != 'LBody' @@ -16302,7 +16302,7 @@ - + <LBody> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -16314,7 +16314,7 @@ - + <BibEntry> shall not contain <Document> parentStandardType != 'BibEntry' @@ -16326,7 +16326,7 @@ - + <BibEntry> shall not contain <DocumentFragment> parentStandardType != 'BibEntry' @@ -16338,7 +16338,7 @@ - + <BibEntry> shall not contain <Art> parentStandardType != 'BibEntry' @@ -16350,7 +16350,7 @@ - + <BibEntry> shall not contain <Sect> parentStandardType != 'BibEntry' @@ -16362,7 +16362,7 @@ - + <BibEntry> shall not contain <TOC> parentStandardType != 'BibEntry' @@ -16374,7 +16374,7 @@ - + <BibEntry> shall not contain <TOCI> parentStandardType != 'BibEntry' @@ -16386,7 +16386,7 @@ - + <BibEntry> shall not contain <Aside> parentStandardType != 'BibEntry' @@ -16398,7 +16398,7 @@ - + <BibEntry> shall not contain <BlockQuote> parentStandardType != 'BibEntry' @@ -16410,7 +16410,7 @@ - + <BibEntry> shall not contain <Code> parentStandardType != 'BibEntry' @@ -16422,7 +16422,7 @@ - + <BibEntry> shall not contain <Hn> parentStandardType != 'BibEntry' @@ -16434,7 +16434,7 @@ - + <BibEntry> shall not contain <H> parentStandardType != 'BibEntry' @@ -16446,7 +16446,7 @@ - + <BibEntry> shall not contain <Title> parentStandardType != 'BibEntry' @@ -16458,7 +16458,7 @@ - + <BibEntry> shall not contain <Sub> parentStandardType != 'BibEntry' @@ -16470,7 +16470,7 @@ - + <BibEntry> shall not contain <Quote> parentStandardType != 'BibEntry' @@ -16482,7 +16482,7 @@ - + <BibEntry> shall not contain <Form> parentStandardType != 'BibEntry' @@ -16494,7 +16494,7 @@ - + <BibEntry> shall not contain <Ruby> parentStandardType != 'BibEntry' @@ -16506,7 +16506,7 @@ - + <BibEntry> shall not contain <RB> parentStandardType != 'BibEntry' @@ -16518,7 +16518,7 @@ - + <BibEntry> shall not contain <RT> parentStandardType != 'BibEntry' @@ -16530,7 +16530,7 @@ - + <BibEntry> shall not contain <RP> parentStandardType != 'BibEntry' @@ -16542,7 +16542,7 @@ - + <BibEntry> shall not contain <Warichu> parentStandardType != 'BibEntry' @@ -16554,7 +16554,7 @@ - + <BibEntry> shall not contain <WT> parentStandardType != 'BibEntry' @@ -16566,7 +16566,7 @@ - + <BibEntry> shall not contain <WP> parentStandardType != 'BibEntry' @@ -16578,7 +16578,7 @@ - + <BibEntry> shall not contain <Index> parentStandardType != 'BibEntry' @@ -16590,7 +16590,7 @@ - + <BibEntry> shall not contain <L> parentStandardType != 'BibEntry' @@ -16602,7 +16602,7 @@ - + <BibEntry> shall not contain <LI> parentStandardType != 'BibEntry' @@ -16614,7 +16614,7 @@ - + <BibEntry> shall not contain <LBody> parentStandardType != 'BibEntry' @@ -16626,7 +16626,7 @@ - + <BibEntry> shall not contain <BibEntry> parentStandardType != 'BibEntry' @@ -16638,7 +16638,7 @@ - + <BibEntry> shall not contain <Table> parentStandardType != 'BibEntry' @@ -16650,7 +16650,7 @@ - + <BibEntry> shall not contain <TR> parentStandardType != 'BibEntry' @@ -16662,7 +16662,7 @@ - + <BibEntry> shall not contain <TH> parentStandardType != 'BibEntry' @@ -16674,7 +16674,7 @@ - + <BibEntry> shall not contain <TD> parentStandardType != 'BibEntry' @@ -16686,7 +16686,7 @@ - + <BibEntry> shall not contain <THead> parentStandardType != 'BibEntry' @@ -16698,7 +16698,7 @@ - + <BibEntry> shall not contain <TBody> parentStandardType != 'BibEntry' @@ -16710,7 +16710,7 @@ - + <BibEntry> shall not contain <TFoot> parentStandardType != 'BibEntry' @@ -16722,7 +16722,7 @@ - + <BibEntry> shall not contain <Caption> parentStandardType != 'BibEntry' @@ -16734,7 +16734,7 @@ - + <BibEntry> shall not contain <Formula> parentStandardType != 'BibEntry' @@ -16746,7 +16746,7 @@ - + <Table> shall not contain <Document> parentStandardType != 'Table' @@ -16758,7 +16758,7 @@ - + <Table> shall not contain <DocumentFragment> parentStandardType != 'Table' @@ -16770,7 +16770,7 @@ - + <Table> shall not contain <Part> parentStandardType != 'Table' @@ -16782,7 +16782,7 @@ - + <Table> shall not contain <Art> parentStandardType != 'Table' @@ -16794,7 +16794,7 @@ - + <Table> shall not contain <Div> parentStandardType != 'Table' @@ -16806,7 +16806,7 @@ - + <Table> shall not contain <Sect> parentStandardType != 'Table' @@ -16818,7 +16818,7 @@ - + <Table> shall not contain <TOC> parentStandardType != 'Table' @@ -16830,7 +16830,7 @@ - + <Table> shall not contain <TOCI> parentStandardType != 'Table' @@ -16842,7 +16842,7 @@ - + <Table> shall not contain <Aside> parentStandardType != 'Table' @@ -16854,7 +16854,7 @@ - + <Table> shall not contain <BlockQuote> parentStandardType != 'Table' @@ -16866,7 +16866,7 @@ - + <Table> shall not contain <P> parentStandardType != 'Table' @@ -16878,7 +16878,7 @@ - + <Table> shall not contain <Note> parentStandardType != 'Table' @@ -16890,7 +16890,7 @@ - + <Table> shall not contain <Code> parentStandardType != 'Table' @@ -16902,7 +16902,7 @@ - + <Table> shall not contain <Hn> parentStandardType != 'Table' @@ -16914,7 +16914,7 @@ - + <Table> shall not contain <H> parentStandardType != 'Table' @@ -16926,7 +16926,7 @@ - + <Table> shall not contain <Title> parentStandardType != 'Table' @@ -16938,7 +16938,7 @@ - + <Table> shall not contain <Sub> parentStandardType != 'Table' @@ -16950,7 +16950,7 @@ - + <Table> shall not contain <Lbl> parentStandardType != 'Table' @@ -16962,7 +16962,7 @@ - + <Table> shall not contain <Em> parentStandardType != 'Table' @@ -16974,7 +16974,7 @@ - + <Table> shall not contain <Strong> parentStandardType != 'Table' @@ -16986,7 +16986,7 @@ - + <Table> shall not contain <Span> parentStandardType != 'Table' @@ -16998,7 +16998,7 @@ - + <Table> shall not contain <Quote> parentStandardType != 'Table' @@ -17010,7 +17010,7 @@ - + <Table> shall not contain <Link> parentStandardType != 'Table' @@ -17022,7 +17022,7 @@ - + <Table> shall not contain <Reference> parentStandardType != 'Table' @@ -17034,7 +17034,7 @@ - + <Table> shall not contain <Annot> parentStandardType != 'Table' @@ -17046,7 +17046,7 @@ - + <Table> shall not contain <Form> parentStandardType != 'Table' @@ -17058,7 +17058,7 @@ - + <Table> shall not contain <Ruby> parentStandardType != 'Table' @@ -17070,7 +17070,7 @@ - + <Table> shall not contain <RB> parentStandardType != 'Table' @@ -17082,7 +17082,7 @@ - + <Table> shall not contain <RT> parentStandardType != 'Table' @@ -17094,7 +17094,7 @@ - + <Table> shall not contain <RP> parentStandardType != 'Table' @@ -17106,7 +17106,7 @@ - + <Table> shall not contain <Warichu> parentStandardType != 'Table' @@ -17118,7 +17118,7 @@ - + <Table> shall not contain <WT> parentStandardType != 'Table' @@ -17130,7 +17130,7 @@ - + <Table> shall not contain <WP> parentStandardType != 'Table' @@ -17142,7 +17142,7 @@ - + <Table> shall not contain <FENote> parentStandardType != 'Table' @@ -17154,7 +17154,7 @@ - + <Table> shall not contain <Index> parentStandardType != 'Table' @@ -17166,7 +17166,7 @@ - + <Table> shall not contain <L> parentStandardType != 'Table' @@ -17178,7 +17178,7 @@ - + <Table> shall not contain <LI> parentStandardType != 'Table' @@ -17190,7 +17190,7 @@ - + <Table> shall not contain <LBody> parentStandardType != 'Table' @@ -17202,7 +17202,7 @@ - + <Table> shall not contain <BibEntry> parentStandardType != 'Table' @@ -17214,7 +17214,7 @@ - + <Table> shall not contain <Table> parentStandardType != 'Table' @@ -17226,7 +17226,7 @@ - + <Table> shall not contain <TH> parentStandardType != 'Table' @@ -17238,7 +17238,7 @@ - + <Table> shall not contain <TD> parentStandardType != 'Table' @@ -17250,7 +17250,7 @@ - + <Table> shall contain at most one <THead> kidsStandardTypes.split('&').filter(elem => elem == 'THead').length <= 1 @@ -17262,7 +17262,7 @@ - + <Table> shall contain at most one <TFoot> kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length <= 1 @@ -17274,7 +17274,7 @@ - + <Table> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -17286,7 +17286,7 @@ - + <Table> shall not contain <Figure> parentStandardType != 'Table' @@ -17298,7 +17298,7 @@ - + <Table> shall not contain <Formula> parentStandardType != 'Table' @@ -17310,7 +17310,7 @@ - + <Table> shall not contain content items hasContentItems == false @@ -17322,7 +17322,7 @@ - + <TR> shall not contain <Document> parentStandardType != 'TR' @@ -17334,7 +17334,7 @@ - + <TR> shall not contain <DocumentFragment> parentStandardType != 'TR' @@ -17346,7 +17346,7 @@ - + <TR> shall not contain <Part> parentStandardType != 'TR' @@ -17358,7 +17358,7 @@ - + <TR> shall not contain <Art> parentStandardType != 'TR' @@ -17370,7 +17370,7 @@ - + <TR> shall not contain <Div> parentStandardType != 'TR' @@ -17382,7 +17382,7 @@ - + <TR> shall not contain <Sect> parentStandardType != 'TR' @@ -17394,7 +17394,7 @@ - + <TR> shall not contain <TOC> parentStandardType != 'TR' @@ -17406,7 +17406,7 @@ - + <TR> shall not contain <TOCI> parentStandardType != 'TR' @@ -17418,7 +17418,7 @@ - + <TR> shall not contain <Aside> parentStandardType != 'TR' @@ -17430,7 +17430,7 @@ - + <TR> shall not contain <BlockQuote> parentStandardType != 'TR' @@ -17442,7 +17442,7 @@ - + <TR> shall not contain <P> parentStandardType != 'TR' @@ -17454,7 +17454,7 @@ - + <TR> shall not contain <Note> parentStandardType != 'TR' @@ -17466,7 +17466,7 @@ - + <TR> shall not contain <Code> parentStandardType != 'TR' @@ -17478,7 +17478,7 @@ - + <TR> shall not contain <Hn> parentStandardType != 'TR' @@ -17490,7 +17490,7 @@ - + <TR> shall not contain <H> parentStandardType != 'TR' @@ -17502,7 +17502,7 @@ - + <TR> shall not contain <Title> parentStandardType != 'TR' @@ -17514,7 +17514,7 @@ - + <TR> shall not contain <Sub> parentStandardType != 'TR' @@ -17526,7 +17526,7 @@ - + <TR> shall not contain <Lbl> parentStandardType != 'TR' @@ -17538,7 +17538,7 @@ - + <TR> shall not contain <Em> parentStandardType != 'TR' @@ -17550,7 +17550,7 @@ - + <TR> shall not contain <Strong> parentStandardType != 'TR' @@ -17562,7 +17562,7 @@ - + <TR> shall not contain <Span> parentStandardType != 'TR' @@ -17574,7 +17574,7 @@ - + <TR> shall not contain <Quote> parentStandardType != 'TR' @@ -17586,7 +17586,7 @@ - + <TR> shall not contain <Link> parentStandardType != 'TR' @@ -17598,7 +17598,7 @@ - + <TR> shall not contain <Reference> parentStandardType != 'TR' @@ -17610,7 +17610,7 @@ - + <TR> shall not contain <Annot> parentStandardType != 'TR' @@ -17622,7 +17622,7 @@ - + <TR> shall not contain <Form> parentStandardType != 'TR' @@ -17634,7 +17634,7 @@ - + <TR> shall not contain <Ruby> parentStandardType != 'TR' @@ -17646,7 +17646,7 @@ - + <TR> shall not contain <RB> parentStandardType != 'TR' @@ -17658,7 +17658,7 @@ - + <TR> shall not contain <RT> parentStandardType != 'TR' @@ -17670,7 +17670,7 @@ - + <TR> shall not contain <RP> parentStandardType != 'TR' @@ -17682,7 +17682,7 @@ - + <TR> shall not contain <Warichu> parentStandardType != 'TR' @@ -17694,7 +17694,7 @@ - + <TR> shall not contain <WT> parentStandardType != 'TR' @@ -17706,7 +17706,7 @@ - + <TR> shall not contain <WP> parentStandardType != 'TR' @@ -17718,7 +17718,7 @@ - + <TR> shall not contain <FENote> parentStandardType != 'TR' @@ -17730,7 +17730,7 @@ - + <TR> shall not contain <Index> parentStandardType != 'TR' @@ -17742,7 +17742,7 @@ - + <TR> shall not contain <L> parentStandardType != 'TR' @@ -17754,7 +17754,7 @@ - + <TR> shall not contain <LI> parentStandardType != 'TR' @@ -17766,7 +17766,7 @@ - + <TR> shall not contain <LBody> parentStandardType != 'TR' @@ -17778,7 +17778,7 @@ - + <TR> shall not contain <BibEntry> parentStandardType != 'TR' @@ -17790,7 +17790,7 @@ - + <TR> shall not contain <Table> parentStandardType != 'TR' @@ -17802,7 +17802,7 @@ - + <TR> shall not contain <TR> parentStandardType != 'TR' @@ -17814,7 +17814,7 @@ - + <TR> shall not contain <THead> parentStandardType != 'TR' @@ -17826,7 +17826,7 @@ - + <TR> shall not contain <TBody> parentStandardType != 'TR' @@ -17838,7 +17838,7 @@ - + <TR> shall not contain <TFoot> parentStandardType != 'TR' @@ -17850,7 +17850,7 @@ - + <TR> shall not contain <Caption> parentStandardType != 'TR' @@ -17862,7 +17862,7 @@ - + <TR> shall not contain <Figure> parentStandardType != 'TR' @@ -17874,7 +17874,7 @@ - + <TR> shall not contain <Formula> parentStandardType != 'TR' @@ -17886,7 +17886,7 @@ - + <TR> shall not contain content items hasContentItems == false @@ -17898,7 +17898,7 @@ - + <TH> shall not contain <Document> parentStandardType != 'TH' @@ -17910,7 +17910,7 @@ - + <TH> shall not contain <DocumentFragment> parentStandardType != 'TH' @@ -17922,7 +17922,7 @@ - + <TH> shall not contain <Part> parentStandardType != 'TH' @@ -17934,7 +17934,7 @@ - + <TH> shall not contain <TOC> parentStandardType != 'TH' @@ -17946,7 +17946,7 @@ - + <TH> shall not contain <TOCI> parentStandardType != 'TH' @@ -17958,7 +17958,7 @@ - + <TH> shall not contain <Aside> parentStandardType != 'TH' @@ -17970,7 +17970,7 @@ - + <TH> shall not contain <BlockQuote> parentStandardType != 'TH' @@ -17982,7 +17982,7 @@ - + <TH> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -17994,7 +17994,7 @@ - + <TH> shall not contain <Title> parentStandardType != 'TH' @@ -18006,7 +18006,7 @@ - + <TH> shall not contain <Sub> parentStandardType != 'TH' @@ -18018,7 +18018,7 @@ - + <TH> shall not contain <RB> parentStandardType != 'TH' @@ -18030,7 +18030,7 @@ - + <TH> shall not contain <RT> parentStandardType != 'TH' @@ -18042,7 +18042,7 @@ - + <TH> shall not contain <RP> parentStandardType != 'TH' @@ -18054,7 +18054,7 @@ - + <TH> shall not contain <WT> parentStandardType != 'TH' @@ -18066,7 +18066,7 @@ - + <TH> shall not contain <WP> parentStandardType != 'TH' @@ -18078,7 +18078,7 @@ - + <TH> shall not contain <LI> parentStandardType != 'TH' @@ -18090,7 +18090,7 @@ - + <TH> shall not contain <LBody> parentStandardType != 'TH' @@ -18102,7 +18102,7 @@ - + <TH> shall not contain <TR> parentStandardType != 'TH' @@ -18114,7 +18114,7 @@ - + <TH> shall not contain <TH> parentStandardType != 'TH' @@ -18126,7 +18126,7 @@ - + <TH> shall not contain <TD> parentStandardType != 'TH' @@ -18138,7 +18138,7 @@ - + <TH> shall not contain <THead> parentStandardType != 'TH' @@ -18150,7 +18150,7 @@ - + <TH> shall not contain <TBody> parentStandardType != 'TH' @@ -18162,7 +18162,7 @@ - + <TH> shall not contain <TFoot> parentStandardType != 'TH' @@ -18174,7 +18174,7 @@ - + <TH> shall not contain <Caption> parentStandardType != 'TH' @@ -18186,7 +18186,7 @@ - + <TD> shall not contain <Document> parentStandardType != 'TD' @@ -18198,7 +18198,7 @@ - + <TD> shall not contain <DocumentFragment> parentStandardType != 'TD' @@ -18210,7 +18210,7 @@ - + <TD> shall not contain <Part> parentStandardType != 'TD' @@ -18222,7 +18222,7 @@ - + <TD> shall not contain <TOC> parentStandardType != 'TD' @@ -18234,7 +18234,7 @@ - + <TD> shall not contain <TOCI> parentStandardType != 'TD' @@ -18246,7 +18246,7 @@ - + <TD> shall not contain <Aside> parentStandardType != 'TD' @@ -18258,7 +18258,7 @@ - + <TD> shall not contain <BlockQuote> parentStandardType != 'TD' @@ -18270,7 +18270,7 @@ - + <TD> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -18282,7 +18282,7 @@ - + <TD> shall not contain <Title> parentStandardType != 'TD' @@ -18294,7 +18294,7 @@ - + <TD> shall not contain <Sub> parentStandardType != 'TD' @@ -18306,7 +18306,7 @@ - + <TD> shall not contain <RB> parentStandardType != 'TD' @@ -18318,7 +18318,7 @@ - + <TD> shall not contain <RT> parentStandardType != 'TD' @@ -18330,7 +18330,7 @@ - + <TD> shall not contain <RP> parentStandardType != 'TD' @@ -18342,7 +18342,7 @@ - + <TD> shall not contain <WT> parentStandardType != 'TD' @@ -18354,7 +18354,7 @@ - + <TD> shall not contain <WP> parentStandardType != 'TD' @@ -18366,7 +18366,7 @@ - + <TD> shall not contain <LI> parentStandardType != 'TD' @@ -18378,7 +18378,7 @@ - + <TD> shall not contain <LBody> parentStandardType != 'TD' @@ -18390,7 +18390,7 @@ - + <TD> shall not contain <TR> parentStandardType != 'TD' @@ -18402,7 +18402,7 @@ - + <TD> shall not contain <TH> parentStandardType != 'TD' @@ -18414,7 +18414,7 @@ - + <TD> shall not contain <TD> parentStandardType != 'TD' @@ -18426,7 +18426,7 @@ - + <TD> shall not contain <THead> parentStandardType != 'TD' @@ -18438,7 +18438,7 @@ - + <TD> shall not contain <TBody> parentStandardType != 'TD' @@ -18450,7 +18450,7 @@ - + <TD> shall not contain <TFoot> parentStandardType != 'TD' @@ -18462,7 +18462,7 @@ - + <TD> shall not contain <Caption> parentStandardType != 'TD' @@ -18474,7 +18474,7 @@ - + <THead> shall not contain <Document> parentStandardType != 'THead' @@ -18486,7 +18486,7 @@ - + <THead> shall not contain <DocumentFragment> parentStandardType != 'THead' @@ -18498,7 +18498,7 @@ - + <THead> shall not contain <Part> parentStandardType != 'THead' @@ -18510,7 +18510,7 @@ - + <THead> shall not contain <Art> parentStandardType != 'THead' @@ -18522,7 +18522,7 @@ - + <THead> shall not contain <Div> parentStandardType != 'THead' @@ -18534,7 +18534,7 @@ - + <THead> shall not contain <Sect> parentStandardType != 'THead' @@ -18546,7 +18546,7 @@ - + <THead> shall not contain <TOC> parentStandardType != 'THead' @@ -18558,7 +18558,7 @@ - + <THead> shall not contain <TOCI> parentStandardType != 'THead' @@ -18570,7 +18570,7 @@ - + <THead> shall not contain <Aside> parentStandardType != 'THead' @@ -18582,7 +18582,7 @@ - + <THead> shall not contain <BlockQuote> parentStandardType != 'THead' @@ -18594,7 +18594,7 @@ - + <THead> shall not contain <P> parentStandardType != 'THead' @@ -18606,7 +18606,7 @@ - + <THead> shall not contain <Note> parentStandardType != 'THead' @@ -18618,7 +18618,7 @@ - + <THead> shall not contain <Code> parentStandardType != 'THead' @@ -18630,7 +18630,7 @@ - + <THead> shall not contain <Hn> parentStandardType != 'THead' @@ -18642,7 +18642,7 @@ - + <THead> shall not contain <H> parentStandardType != 'THead' @@ -18654,7 +18654,7 @@ - + <THead> shall not contain <Title> parentStandardType != 'THead' @@ -18666,7 +18666,7 @@ - + <THead> shall not contain <Sub> parentStandardType != 'THead' @@ -18678,7 +18678,7 @@ - + <THead> shall not contain <Lbl> parentStandardType != 'THead' @@ -18690,7 +18690,7 @@ - + <THead> shall not contain <Em> parentStandardType != 'THead' @@ -18702,7 +18702,7 @@ - + <THead> shall not contain <Strong> parentStandardType != 'THead' @@ -18714,7 +18714,7 @@ - + <THead> shall not contain <Span> parentStandardType != 'THead' @@ -18726,7 +18726,7 @@ - + <THead> shall not contain <Quote> parentStandardType != 'THead' @@ -18738,7 +18738,7 @@ - + <THead> shall not contain <Link> parentStandardType != 'THead' @@ -18750,7 +18750,7 @@ - + <THead> shall not contain <Reference> parentStandardType != 'THead' @@ -18762,7 +18762,7 @@ - + <THead> shall not contain <Annot> parentStandardType != 'THead' @@ -18774,7 +18774,7 @@ - + <THead> shall not contain <Form> parentStandardType != 'THead' @@ -18786,7 +18786,7 @@ - + <THead> shall not contain <Ruby> parentStandardType != 'THead' @@ -18798,7 +18798,7 @@ - + <THead> shall not contain <RB> parentStandardType != 'THead' @@ -18810,7 +18810,7 @@ - + <THead> shall not contain <RT> parentStandardType != 'THead' @@ -18822,7 +18822,7 @@ - + <THead> shall not contain <RP> parentStandardType != 'THead' @@ -18834,7 +18834,7 @@ - + <THead> shall not contain <Warichu> parentStandardType != 'THead' @@ -18846,7 +18846,7 @@ - + <THead> shall not contain <WT> parentStandardType != 'THead' @@ -18858,7 +18858,7 @@ - + <THead> shall not contain <WP> parentStandardType != 'THead' @@ -18870,7 +18870,7 @@ - + <THead> shall not contain <FENote> parentStandardType != 'THead' @@ -18882,7 +18882,7 @@ - + <THead> shall not contain <Index> parentStandardType != 'THead' @@ -18894,7 +18894,7 @@ - + <THead> shall not contain <L> parentStandardType != 'THead' @@ -18906,7 +18906,7 @@ - + <THead> shall not contain <LI> parentStandardType != 'THead' @@ -18918,7 +18918,7 @@ - + <THead> shall not contain <LBody> parentStandardType != 'THead' @@ -18930,7 +18930,7 @@ - + <THead> shall not contain <BibEntry> parentStandardType != 'THead' @@ -18942,7 +18942,7 @@ - + <THead> shall not contain <Table> parentStandardType != 'THead' @@ -18954,7 +18954,7 @@ - + <THead> shall not contain <TH> parentStandardType != 'THead' @@ -18966,7 +18966,7 @@ - + <THead> shall not contain <TD> parentStandardType != 'THead' @@ -18978,7 +18978,7 @@ - + <THead> shall not contain <THead> parentStandardType != 'THead' @@ -18990,7 +18990,7 @@ - + <THead> shall not contain <TBody> parentStandardType != 'THead' @@ -19002,7 +19002,7 @@ - + <THead> shall not contain <TFoot> parentStandardType != 'THead' @@ -19014,7 +19014,7 @@ - + <THead> shall not contain <Caption> parentStandardType != 'THead' @@ -19026,7 +19026,7 @@ - + <THead> shall not contain <Figure> parentStandardType != 'THead' @@ -19038,7 +19038,7 @@ - + <THead> shall not contain <Formula> parentStandardType != 'THead' @@ -19050,7 +19050,7 @@ - + <THead> shall not contain content items hasContentItems == false @@ -19062,7 +19062,7 @@ - + <TBody> shall not contain <Document> parentStandardType != 'TBody' @@ -19074,7 +19074,7 @@ - + <TBody> shall not contain <DocumentFragment> parentStandardType != 'TBody' @@ -19086,7 +19086,7 @@ - + <TBody> shall not contain <Part> parentStandardType != 'TBody' @@ -19098,7 +19098,7 @@ - + <TBody> shall not contain <Art> parentStandardType != 'TBody' @@ -19110,7 +19110,7 @@ - + <TBody> shall not contain <Div> parentStandardType != 'TBody' @@ -19122,7 +19122,7 @@ - + <TBody> shall not contain <Sect> parentStandardType != 'TBody' @@ -19134,7 +19134,7 @@ - + <TBody> shall not contain <TOC> parentStandardType != 'TBody' @@ -19146,7 +19146,7 @@ - + <TBody> shall not contain <TOCI> parentStandardType != 'TBody' @@ -19158,7 +19158,7 @@ - + <TBody> shall not contain <Aside> parentStandardType != 'TBody' @@ -19170,7 +19170,7 @@ - + <TBody> shall not contain <BlockQuote> parentStandardType != 'TBody' @@ -19182,7 +19182,7 @@ - + <TBody> shall not contain <P> parentStandardType != 'TBody' @@ -19194,7 +19194,7 @@ - + <TBody> shall not contain <Note> parentStandardType != 'TBody' @@ -19206,7 +19206,7 @@ - + <TBody> shall not contain <Code> parentStandardType != 'TBody' @@ -19218,7 +19218,7 @@ - + <TBody> shall not contain <Hn> parentStandardType != 'TBody' @@ -19230,7 +19230,7 @@ - + <TBody> shall not contain <H> parentStandardType != 'TBody' @@ -19242,7 +19242,7 @@ - + <TBody> shall not contain <Title> parentStandardType != 'TBody' @@ -19254,7 +19254,7 @@ - + <TBody> shall not contain <Sub> parentStandardType != 'TBody' @@ -19266,7 +19266,7 @@ - + <TBody> shall not contain <Lbl> parentStandardType != 'TBody' @@ -19278,7 +19278,7 @@ - + <TBody> shall not contain <Em> parentStandardType != 'TBody' @@ -19290,7 +19290,7 @@ - + <TBody> shall not contain <Strong> parentStandardType != 'TBody' @@ -19302,7 +19302,7 @@ - + <TBody> shall not contain <Span> parentStandardType != 'TBody' @@ -19314,7 +19314,7 @@ - + <TBody> shall not contain <Quote> parentStandardType != 'TBody' @@ -19326,7 +19326,7 @@ - + <TBody> shall not contain <Link> parentStandardType != 'TBody' @@ -19338,7 +19338,7 @@ - + <TBody> shall not contain <Reference> parentStandardType != 'TBody' @@ -19350,7 +19350,7 @@ - + <TBody> shall not contain <Annot> parentStandardType != 'TBody' @@ -19362,7 +19362,7 @@ - + <TBody> shall not contain <Form> parentStandardType != 'TBody' @@ -19374,7 +19374,7 @@ - + <TBody> shall not contain <Ruby> parentStandardType != 'TBody' @@ -19386,7 +19386,7 @@ - + <TBody> shall not contain <RB> parentStandardType != 'TBody' @@ -19398,7 +19398,7 @@ - + <TBody> shall not contain <RT> parentStandardType != 'TBody' @@ -19410,7 +19410,7 @@ - + <TBody> shall not contain <RP> parentStandardType != 'TBody' @@ -19422,7 +19422,7 @@ - + <TBody> shall not contain <Warichu> parentStandardType != 'TBody' @@ -19434,7 +19434,7 @@ - + <TBody> shall not contain <WT> parentStandardType != 'TBody' @@ -19446,7 +19446,7 @@ - + <TBody> shall not contain <WP> parentStandardType != 'TBody' @@ -19458,7 +19458,7 @@ - + <TBody> shall not contain <FENote> parentStandardType != 'TBody' @@ -19470,7 +19470,7 @@ - + <TBody> shall not contain <Index> parentStandardType != 'TBody' @@ -19482,7 +19482,7 @@ - + <TBody> shall not contain <L> parentStandardType != 'TBody' @@ -19494,7 +19494,7 @@ - + <TBody> shall not contain <LI> parentStandardType != 'TBody' @@ -19506,7 +19506,7 @@ - + <TBody> shall not contain <LBody> parentStandardType != 'TBody' @@ -19518,7 +19518,7 @@ - + <TBody> shall not contain <BibEntry> parentStandardType != 'TBody' @@ -19530,7 +19530,7 @@ - + <TBody> shall not contain <Table> parentStandardType != 'TBody' @@ -19542,7 +19542,7 @@ - + <TBody> shall not contain <TH> parentStandardType != 'TBody' @@ -19554,7 +19554,7 @@ - + <TBody> shall not contain <TD> parentStandardType != 'TBody' @@ -19566,7 +19566,7 @@ - + <TBody> shall not contain <THead> parentStandardType != 'TBody' @@ -19578,7 +19578,7 @@ - + <TBody> shall not contain <TBody> parentStandardType != 'TBody' @@ -19590,7 +19590,7 @@ - + <TBody> shall not contain <TFoot> parentStandardType != 'TBody' @@ -19602,7 +19602,7 @@ - + <TBody> shall not contain <Caption> parentStandardType != 'TBody' @@ -19614,7 +19614,7 @@ - + <TBody> shall not contain <Figure> parentStandardType != 'TBody' @@ -19626,7 +19626,7 @@ - + <TBody> shall not contain <Formula> parentStandardType != 'TBody' @@ -19638,7 +19638,7 @@ - + <TBody> shall not contain content items hasContentItems == false @@ -19650,7 +19650,7 @@ - + <TFoot> shall not contain <Document> parentStandardType != 'TFoot' @@ -19662,7 +19662,7 @@ - + <TFoot> shall not contain <DocumentFragment> parentStandardType != 'TFoot' @@ -19674,7 +19674,7 @@ - + <TFoot> shall not contain <Part> parentStandardType != 'TFoot' @@ -19686,7 +19686,7 @@ - + <TFoot> shall not contain <Art> parentStandardType != 'TFoot' @@ -19698,7 +19698,7 @@ - + <TFoot> shall not contain <Div> parentStandardType != 'TFoot' @@ -19710,7 +19710,7 @@ - + <TFoot> shall not contain <Sect> parentStandardType != 'TFoot' @@ -19722,7 +19722,7 @@ - + <TFoot> shall not contain <TOC> parentStandardType != 'TFoot' @@ -19734,7 +19734,7 @@ - + <TFoot> shall not contain <TOCI> parentStandardType != 'TFoot' @@ -19746,7 +19746,7 @@ - + <TFoot> shall not contain <Aside> parentStandardType != 'TFoot' @@ -19758,7 +19758,7 @@ - + <TFoot> shall not contain <BlockQuote> parentStandardType != 'TFoot' @@ -19770,7 +19770,7 @@ - + <TFoot> shall not contain <P> parentStandardType != 'TFoot' @@ -19782,7 +19782,7 @@ - + <TFoot> shall not contain <Note> parentStandardType != 'TFoot' @@ -19794,7 +19794,7 @@ - + <TFoot> shall not contain <Code> parentStandardType != 'TFoot' @@ -19806,7 +19806,7 @@ - + <TFoot> shall not contain <Hn> parentStandardType != 'TFoot' @@ -19818,7 +19818,7 @@ - + <TFoot> shall not contain <H> parentStandardType != 'TFoot' @@ -19830,7 +19830,7 @@ - + <TFoot> shall not contain <Title> parentStandardType != 'TFoot' @@ -19842,7 +19842,7 @@ - + <TFoot> shall not contain <Sub> parentStandardType != 'TFoot' @@ -19854,7 +19854,7 @@ - + <TFoot> shall not contain <Lbl> parentStandardType != 'TFoot' @@ -19866,7 +19866,7 @@ - + <TFoot> shall not contain <Em> parentStandardType != 'TFoot' @@ -19878,7 +19878,7 @@ - + <TFoot> shall not contain <Strong> parentStandardType != 'TFoot' @@ -19890,7 +19890,7 @@ - + <TFoot> shall not contain <Span> parentStandardType != 'TFoot' @@ -19902,7 +19902,7 @@ - + <TFoot> shall not contain <Quote> parentStandardType != 'TFoot' @@ -19914,7 +19914,7 @@ - + <TFoot> shall not contain <Link> parentStandardType != 'TFoot' @@ -19926,7 +19926,7 @@ - + <TFoot> shall not contain <Reference> parentStandardType != 'TFoot' @@ -19938,7 +19938,7 @@ - + <TFoot> shall not contain <Annot> parentStandardType != 'TFoot' @@ -19950,7 +19950,7 @@ - + <TFoot> shall not contain <Form> parentStandardType != 'TFoot' @@ -19962,7 +19962,7 @@ - + <TFoot> shall not contain <Ruby> parentStandardType != 'TFoot' @@ -19974,7 +19974,7 @@ - + <TFoot> shall not contain <RB> parentStandardType != 'TFoot' @@ -19986,7 +19986,7 @@ - + <TFoot> shall not contain <RT> parentStandardType != 'TFoot' @@ -19998,7 +19998,7 @@ - + <TFoot> shall not contain <RP> parentStandardType != 'TFoot' @@ -20010,7 +20010,7 @@ - + <TFoot> shall not contain <Warichu> parentStandardType != 'TFoot' @@ -20022,7 +20022,7 @@ - + <TFoot> shall not contain <WT> parentStandardType != 'TFoot' @@ -20034,7 +20034,7 @@ - + <TFoot> shall not contain <WP> parentStandardType != 'TFoot' @@ -20046,7 +20046,7 @@ - + <TFoot> shall not contain <FENote> parentStandardType != 'TFoot' @@ -20058,7 +20058,7 @@ - + <TFoot> shall not contain <Index> parentStandardType != 'TFoot' @@ -20070,7 +20070,7 @@ - + <TFoot> shall not contain <L> parentStandardType != 'TFoot' @@ -20082,7 +20082,7 @@ - + <TFoot> shall not contain <LI> parentStandardType != 'TFoot' @@ -20094,7 +20094,7 @@ - + <TFoot> shall not contain <LBody> parentStandardType != 'TFoot' @@ -20106,7 +20106,7 @@ - + <TFoot> shall not contain <BibEntry> parentStandardType != 'TFoot' @@ -20118,7 +20118,7 @@ - + <TFoot> shall not contain <Table> parentStandardType != 'TFoot' @@ -20130,7 +20130,7 @@ - + <TFoot> shall not contain <TH> parentStandardType != 'TFoot' @@ -20142,7 +20142,7 @@ - + <TFoot> shall not contain <TD> parentStandardType != 'TFoot' @@ -20154,7 +20154,7 @@ - + <TFoot> shall not contain <THead> parentStandardType != 'TFoot' @@ -20166,7 +20166,7 @@ - + <TFoot> shall not contain <TBody> parentStandardType != 'TFoot' @@ -20178,7 +20178,7 @@ - + <TFoot> shall not contain <TFoot> parentStandardType != 'TFoot' @@ -20190,7 +20190,7 @@ - + <TFoot> shall not contain <Caption> parentStandardType != 'TFoot' @@ -20202,7 +20202,7 @@ - + <TFoot> shall not contain <Figure> parentStandardType != 'TFoot' @@ -20214,7 +20214,7 @@ - + <TFoot> shall not contain <Formula> parentStandardType != 'TFoot' @@ -20226,7 +20226,7 @@ - + <TFoot> shall not contain content items hasContentItems == false @@ -20238,7 +20238,7 @@ - + <Caption> shall not contain <Document> parentStandardType != 'Caption' @@ -20250,7 +20250,7 @@ - + <Caption> shall not contain <TOC> parentStandardType != 'Caption' @@ -20262,7 +20262,7 @@ - + <Caption> shall not contain <TOCI> parentStandardType != 'Caption' @@ -20274,7 +20274,7 @@ - + <Caption> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -20286,7 +20286,7 @@ - + <Caption> shall not contain <Title> parentStandardType != 'Caption' @@ -20298,7 +20298,7 @@ - + <Caption> shall not contain <RB> parentStandardType != 'Caption' @@ -20310,7 +20310,7 @@ - + <Caption> shall not contain <RT> parentStandardType != 'Caption' @@ -20322,7 +20322,7 @@ - + <Caption> shall not contain <RP> parentStandardType != 'Caption' @@ -20334,7 +20334,7 @@ - + <Caption> shall not contain <WT> parentStandardType != 'Caption' @@ -20346,7 +20346,7 @@ - + <Caption> shall not contain <WP> parentStandardType != 'Caption' @@ -20358,7 +20358,7 @@ - + <Caption> shall not contain <LI> parentStandardType != 'Caption' @@ -20370,7 +20370,7 @@ - + <Caption> shall not contain <LBody> parentStandardType != 'Caption' @@ -20382,7 +20382,7 @@ - + <Caption> shall not contain <TR> parentStandardType != 'Caption' @@ -20394,7 +20394,7 @@ - + <Caption> shall not contain <TH> parentStandardType != 'Caption' @@ -20406,7 +20406,7 @@ - + <Caption> shall not contain <TD> parentStandardType != 'Caption' @@ -20418,7 +20418,7 @@ - + <Caption> shall not contain <THead> parentStandardType != 'Caption' @@ -20430,7 +20430,7 @@ - + <Caption> shall not contain <TBody> parentStandardType != 'Caption' @@ -20442,7 +20442,7 @@ - + <Caption> shall not contain <TFoot> parentStandardType != 'Caption' @@ -20454,7 +20454,7 @@ - + <Caption> shall not contain <Caption> parentStandardType != 'Caption' @@ -20466,7 +20466,7 @@ - + <Figure> shall not contain <Document> parentStandardType != 'Figure' @@ -20478,7 +20478,7 @@ - + <Figure> shall not contain <DocumentFragment> parentStandardType != 'Figure' @@ -20490,7 +20490,7 @@ - + <Figure> shall not contain <TOC> parentStandardType != 'Figure' @@ -20502,7 +20502,7 @@ - + <Figure> shall not contain <TOCI> parentStandardType != 'Figure' @@ -20514,7 +20514,7 @@ - + <Figure> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -20526,7 +20526,7 @@ - + <Figure> shall not contain <Title> parentStandardType != 'Figure' @@ -20538,7 +20538,7 @@ - + <Figure> shall not contain <RB> parentStandardType != 'Figure' @@ -20550,7 +20550,7 @@ - + <Figure> shall not contain <RT> parentStandardType != 'Figure' @@ -20562,7 +20562,7 @@ - + <Figure> shall not contain <RP> parentStandardType != 'Figure' @@ -20574,7 +20574,7 @@ - + <Figure> shall not contain <WT> parentStandardType != 'Figure' @@ -20586,7 +20586,7 @@ - + <Figure> shall not contain <WP> parentStandardType != 'Figure' @@ -20598,7 +20598,7 @@ - + <Figure> shall not contain <LI> parentStandardType != 'Figure' @@ -20610,7 +20610,7 @@ - + <Figure> shall not contain <LBody> parentStandardType != 'Figure' @@ -20622,7 +20622,7 @@ - + <Figure> shall not contain <TR> parentStandardType != 'Figure' @@ -20634,7 +20634,7 @@ - + <Figure> shall not contain <TH> parentStandardType != 'Figure' @@ -20646,7 +20646,7 @@ - + <Figure> shall not contain <TD> parentStandardType != 'Figure' @@ -20658,7 +20658,7 @@ - + <Figure> shall not contain <THead> parentStandardType != 'Figure' @@ -20670,7 +20670,7 @@ - + <Figure> shall not contain <TBody> parentStandardType != 'Figure' @@ -20682,7 +20682,7 @@ - + <Figure> shall not contain <TFoot> parentStandardType != 'Figure' @@ -20694,7 +20694,7 @@ - + <Figure> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -20706,7 +20706,7 @@ - + <Formula> shall not contain <Document> parentStandardType != 'Formula' @@ -20718,7 +20718,7 @@ - + <Formula> shall not contain <DocumentFragment> parentStandardType != 'Formula' @@ -20730,7 +20730,7 @@ - + <Formula> shall not contain <Art> parentStandardType != 'Formula' @@ -20742,7 +20742,7 @@ - + <Formula> shall not contain <Sect> parentStandardType != 'Formula' @@ -20754,7 +20754,7 @@ - + <Formula> shall not contain <TOC> parentStandardType != 'Formula' @@ -20766,7 +20766,7 @@ - + <Formula> shall not contain <TOCI> parentStandardType != 'Formula' @@ -20778,7 +20778,7 @@ - + <Formula> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -20790,7 +20790,7 @@ - + <Formula> shall not contain <Title> parentStandardType != 'Formula' @@ -20802,7 +20802,7 @@ - + <Formula> shall not contain <RB> parentStandardType != 'Formula' @@ -20814,7 +20814,7 @@ - + <Formula> shall not contain <RT> parentStandardType != 'Formula' @@ -20826,7 +20826,7 @@ - + <Formula> shall not contain <RP> parentStandardType != 'Formula' @@ -20838,7 +20838,7 @@ - + <Formula> shall not contain <WT> parentStandardType != 'Formula' @@ -20850,7 +20850,7 @@ - + <Formula> shall not contain <WP> parentStandardType != 'Formula' @@ -20862,7 +20862,7 @@ - + <Formula> shall not contain <LI> parentStandardType != 'Formula' @@ -20874,7 +20874,7 @@ - + <Formula> shall not contain <LBody> parentStandardType != 'Formula' @@ -20886,7 +20886,7 @@ - + <Formula> shall not contain <TR> parentStandardType != 'Formula' @@ -20898,7 +20898,7 @@ - + <Formula> shall not contain <TH> parentStandardType != 'Formula' @@ -20910,7 +20910,7 @@ - + <Formula> shall not contain <TD> parentStandardType != 'Formula' @@ -20922,7 +20922,7 @@ - + <Formula> shall not contain <THead> parentStandardType != 'Formula' @@ -20934,7 +20934,7 @@ - + <Formula> shall not contain <TBody> parentStandardType != 'Formula' @@ -20946,7 +20946,7 @@ - + <Formula> shall not contain <TFoot> parentStandardType != 'Formula' @@ -20958,7 +20958,7 @@ - + <Formula> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -20970,7 +20970,7 @@ - + <Artifact> shall contain at most one <H> kidsStandardTypes.split('&').filter(elem => elem == 'H').length <= 1 @@ -20982,7 +20982,7 @@ - + <Artifact> shall contain at most one <Caption> kidsStandardTypes.split('&').filter(elem => elem == 'Caption').length <= 1 @@ -20994,7 +20994,7 @@ - + A circular mapping shall not exist circularMappingExist != true @@ -21008,7 +21008,7 @@ - + Standard tags shall not be remapped to a non-standard type remappedStandardType == null @@ -21022,7 +21022,7 @@ - + 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 StructTreeRoot_size == 1 @@ -21034,7 +21034,7 @@ - + Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true From 7ce90f30de54d092cc0d2a04cc18775769f7fb3d Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 23 Jan 2024 19:43:37 +0300 Subject: [PATCH 536/557] Update rules descriptions and error messages --- .../verapdf-profile-6-7-11-t03.xml | 4 ++-- .../verapdf-profile-6-7-11-t02.xml | 4 ++-- .../verapdf-profile-6-7-11-t03.xml | 4 ++-- .../verapdf-profile-6-7-11-t04.xml | 6 +++--- .../verapdf-profile-6-7-11-t05.xml | 6 +++--- .../verapdf-profile-6-7-11-t06.xml | 6 +++--- .../verapdf-profile-6-7-3-t01.xml | 6 +++--- .../verapdf-profile-6-7-3-t02.xml | 6 +++--- .../verapdf-profile-6-7-3-t03.xml | 6 +++--- .../verapdf-profile-6-7-3-t04.xml | 6 +++--- .../verapdf-profile-6-7-3-t05.xml | 6 +++--- .../verapdf-profile-6-7-3-t06.xml | 6 +++--- .../verapdf-profile-6-7-3-t07.xml | 6 +++--- .../verapdf-profile-6-7-3-t08.xml | 6 +++--- .../verapdf-profile-6-6-4-t03.xml | 8 ++++---- .../verapdf-profile-6-6-4-t02.xml | 4 ++-- .../verapdf-profile-6-6-4-t03.xml | 8 ++++---- .../verapdf-profile-6-6-4-t04.xml | 6 +++--- .../verapdf-profile-6-6-4-t05.xml | 6 +++--- .../verapdf-profile-6-6-4-t06.xml | 6 +++--- .../verapdf-profile-6-6-4-t07.xml | 6 +++--- .../verapdf-profile-6-6-4-t03.xml | 8 ++++---- .../verapdf-profile-6-6-4-t03.xml | 8 ++++---- .../verapdf-profile-6-6-4-t02.xml | 4 ++-- .../verapdf-profile-6-6-4-t03.xml | 8 ++++---- .../verapdf-profile-6-7-3-t02.xml | 4 ++-- .../verapdf-profile-6-7-3-t03.xml | 4 ++-- .../verapdf-profile-6-7-3-t04.xml | 6 +++--- .../verapdf-profile-6-7-3-t05.xml | 6 +++--- .../verapdf-profile-6-7-3-t06.xml | 6 +++--- .../verapdf-profile-6-7-3-t03.xml | 4 ++-- .../verapdf-profile-6-7-3-t03.xml | 4 ++-- .../5 Version identification/verapdf-profile-5-t02.xml | 4 ++-- .../5 Version identification/verapdf-profile-5-t03.xml | 6 +++--- .../5 Version identification/verapdf-profile-5-t04.xml | 6 +++--- .../5 Version identification/verapdf-profile-5-t05.xml | 6 +++--- PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml | 8 +++++--- .../5 Version identification/verapdf-profile-5-t02.xml | 4 ++-- .../5 Version identification/verapdf-profile-5-t03.xml | 6 +++--- .../5 Version identification/verapdf-profile-5-t04.xml | 6 +++--- .../5 Version identification/verapdf-profile-5-t05.xml | 6 +++--- .../8.2.1 General/verapdf-profile-8-2-1-t02.xml | 8 +++++--- .../verapdf-profile-8-2-5-14-t02.xml | 10 +++++----- .../verapdf-profile-8-2-5-8-t01.xml | 6 +++--- 44 files changed, 132 insertions(+), 128 deletions(-) diff --git a/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml b/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml index 04aad514..df1e519f 100644 --- a/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1a/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml @@ -2,13 +2,13 @@
ISO 19005-1:2005 - 6.7.11 XMP Package - PDF/A Identification Schema. - A Level A conforming file shall specify the value of pdfaid:conformance as A + A Level A conforming file shall specify the value of "pdfaid:conformance" as A
- A Level A conforming file shall specify the value of pdfaid:conformance as A + A Level A conforming file shall specify the value of "pdfaid:conformance" as A conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml index 8cf85c77..9538028d 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t02.xml @@ -2,13 +2,13 @@
ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - Part number. - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
- The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 1 The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml index f6b11163..97f581e6 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t03.xml @@ -2,13 +2,13 @@
ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - Conformance level. - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B
- A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B conformance == "B" || conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml index 3c065b72..d3eb1d3c 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t04.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema property part. - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
- Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t05.xml index 8f98774b..18511fd1 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t05.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t05.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema property conformance. - Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
- Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" conformancePrefix == null || conformancePrefix == "pdfaid" - Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1 conformancePrefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t06.xml index 96a0464f..4a63ede1 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t06.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.11 Version and conformance level identification/verapdf-profile-6-7-11-t06.xml @@ -2,16 +2,16 @@
ISO 19005-1:2005 - 6.7.11 Version and conformance level identification - PDF/A Identification Schema property amd. - Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
- Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" amdPrefix == null || amdPrefix == "pdfaid" - Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1 amdPrefix diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml index 275eab69..ea151f4c 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t01.xml @@ -3,18 +3,18 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - CreationDate and xmp:CreateDate The value of CreationDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreateDate shall be equivalent + analogous XMP property "xmp:CreateDate" shall be equivalent
The value of CreationDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreateDate shall be equivalent + analogous XMP property "xmp:CreateDate" shall be equivalent doCreationDatesMatch != false The value of CreationDate entry from the document Info dictionary and its matching XMP property - xmp:CreateDate are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) + "xmp:CreateDate" are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) CreationDate XMPCreateDate diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml index 54b4dedf..8fb9497c 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t02.xml @@ -3,18 +3,18 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Title and dc:title The value of Title entry from the document information dictionary, if present, and its - analogous XMP property dc:title['x-default'] shall be equivalent + analogous XMP property "dc:title['x-default']" shall be equivalent
The value of Title entry from the document information dictionary, if present, and its - analogous XMP property dc:title['x-default'] shall be equivalent + analogous XMP property "dc:title['x-default']" shall be equivalent Title == null || Title == XMPTitle The value of Title entry from the document Info dictionary and its matching XMP property - dc:title['x-default'] are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2) + "dc:title['x-default']" are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2) Title XMPTitle diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml index c4ebb57d..913671f9 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t03.xml @@ -3,18 +3,18 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Author and dc:creator The value of Author entry from the document information dictionary, if present, and its - analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry + analogous XMP property "dc:creator" shall be equivalent. dc:creator shall contain exactly one entry
The value of Author entry from the document information dictionary, if present, and its - analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry + analogous XMP property "dc:creator" shall be equivalent. dc:creator shall contain exactly one entry Author == null || (Author == XMPCreator && XMPCreatorSize == 1) The value of Author entry from the document Info dictionary and its matching XMP property - dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) + "dc:creator" are not equivalent (Info /Author = %1, XMP dc:creator = %2) Author XMPCreator diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml index 39f96452..5ac9ce8f 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t04.xml @@ -3,18 +3,18 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Subject and dc:description The value of Subject entry from the document information dictionary, if present, and its - analogous XMP property dc:description['x-default'] shall be equivalent + analogous XMP property "dc:description['x-default']" shall be equivalent
The value of Subject entry from the document information dictionary, if present, and its - analogous XMP property dc:description['x-default'] shall be equivalent + analogous XMP property "dc:description['x-default']" shall be equivalent Subject == null || Subject == XMPDescription The value of Subject entry from the document Info dictionary and its matching XMP property - dc:description['x-default'] are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) + "dc:description['x-default']" are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) Subject XMPDescription diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml index f74b81d5..7977650d 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t05.xml @@ -3,18 +3,18 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Keywords and pdf:Keywords The value of Keywords entry from the document information dictionary, if present, and its - analogous XMP property pdf:Keywords shall be equivalent + analogous XMP property "pdf:Keywords" shall be equivalent
The value of Keywords entry from the document information dictionary, if present, and its - analogous XMP property pdf:Keywords shall be equivalent + analogous XMP property "pdf:Keywords" shall be equivalent Keywords == null || Keywords == XMPKeywords The value of Keywords entry from the document Info dictionary and its matching XMP property - pdf:Keywords are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) + "pdf:Keywords" are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) Keywords XMPKeywords diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml index 9c032222..deb74e4b 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t06.xml @@ -3,18 +3,18 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Creator and xmp:CreatorTool The value of Creator entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreatorTool shall be equivalent + analogous XMP property "xmp:CreatorTool" shall be equivalent
The value of Creator entry from the document information dictionary, if present, and its - analogous XMP property xmp:CreatorTool shall be equivalent + analogous XMP property "xmp:CreatorTool" shall be equivalent Creator == null || Creator == XMPCreatorTool The value of Creator entry from the document Info dictionary and its matching XMP property - xmp:CreatorTool are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) + "xmp:CreatorTool" are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) Creator XMPCreatorTool diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml index c13ca9d3..f6ae80ee 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t07.xml @@ -3,18 +3,18 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - Producer and pdf:Producer The value of Producer entry from the document information dictionary, if present, and its - analogous XMP property pdf:Producer shall be equivalent + analogous XMP property "pdf:Producer" shall be equivalent
The value of Producer entry from the document information dictionary, if present, and its - analogous XMP property pdf:Producer shall be equivalent + analogous XMP property "pdf:Producer" shall be equivalent Producer == null || Producer == XMPProducer The value of Producer entry from the document Info dictionary and its matching XMP property - pdf:Producer are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) + "pdf:Producer" are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) Producer XMPProducer diff --git a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml index c7dfd9de..a3306c92 100644 --- a/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml +++ b/PDF_A/1b/6.7 Metadata/6.7.3 Document information dictionary/verapdf-profile-6-7-3-t08.xml @@ -3,18 +3,18 @@
ISO 19005-1:2005 - 6.7.3 Document Information Dictionary - ModDate and xmp:ModifyDate The value of ModDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:ModifyDate shall be equivalent + analogous XMP property "xmp:ModifyDate" shall be equivalent
The value of ModDate entry from the document information dictionary, if present, and its - analogous XMP property xmp:ModifyDate shall be equivalent + analogous XMP property "xmp:ModifyDate" shall be equivalent doModDatesMatch != false The value of ModDate entry from the document Info dictionary and its matching XMP property - xmp:ModifyDate are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) + "xmp:ModifyDate" are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) ModDate XMPModifyDate diff --git a/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index bfa53a13..aeb59533 100644 --- a/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/2a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -2,15 +2,15 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of + "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
- A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of + "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-2A conforming file diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml index 2dfb17b2..96ac25c4 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Part number. - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
- The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 2 The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 4deb2317..29d71fe8 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -2,15 +2,15 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of + "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
- A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of + "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U conformance == "B" || conformance == "U" || conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml index 28bf7515..f100ed6c 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t04.xml @@ -2,16 +2,16 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property part. - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
- Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t05.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t05.xml index 8d290c74..d8d59509 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t05.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t05.xml @@ -2,16 +2,16 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property conformance. - Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
- Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" conformancePrefix == null || conformancePrefix == "pdfaid" - Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1 conformancePrefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t06.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t06.xml index 9928941e..b6e1d047 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t06.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t06.xml @@ -2,16 +2,16 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property amd. - Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
- Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" amdPrefix == null || amdPrefix == "pdfaid" - Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1 amdPrefix diff --git a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t07.xml b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t07.xml index 6d81ed55..db8092d8 100644 --- a/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t07.xml +++ b/PDF_A/2b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t07.xml @@ -2,16 +2,16 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - PDF/A Identification Schema property corr. - Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
- Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" corrPrefix == null || corrPrefix == "pdfaid" - Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1 corrPrefix diff --git a/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 362fcd12..78eef3a6 100644 --- a/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/2u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -2,15 +2,15 @@
ISO 19005-2:2011 - 6.6.4 Version and conformance level identification - Conformance level. - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of + "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
- A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of + "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U conformance == "U" || conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file diff --git a/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index eb4a6fc8..e422b420 100644 --- a/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/3a/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -2,15 +2,15 @@
ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Conformance level. - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of + "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
- A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of + "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-3A conforming file diff --git a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml index d79fe3e0..6717e645 100644 --- a/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml +++ b/PDF_A/3b/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t02.xml @@ -2,13 +2,13 @@
ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Part number. - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
- The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 3 The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file diff --git a/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml index 24285de0..ac1b5478 100644 --- a/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml +++ b/PDF_A/3u/6.6 Metadata/6.6.4 Version and conformance level identification/verapdf-profile-6-6-4-t03.xml @@ -2,15 +2,15 @@
ISO 19005-3:2012 - 6.6.4 Version and conformance level identification - Conformance level. - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of + "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U
- A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of - pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of + "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U conformance == "U" || conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-3U conforming file diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml index f459a7fc..03044678 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t02.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.7.3 Version identification - Part number. - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms
- The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 4 The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml index 32867992..2297705e 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.7.3 Version identification - Conformance level. - A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance + A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any "pdfaid:conformance"
- A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance + A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any "pdfaid:conformance" conformance == null The "conformance" property of the PDF/A Identification Schema is %1 instead of null for PDF/A-4 conforming file diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml index 411833f0..393e864c 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t04.xml @@ -2,16 +2,16 @@
ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema property part. - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
- Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml index d681e7ba..bc50be09 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml @@ -2,16 +2,16 @@
ISO 19005-4:2020 - 6.7.3 Version identification - rev property - The value of pdfaid:rev shall be the four digit year + The value of "pdfaid:rev" shall be the four digit year
- The value of pdfaid:rev shall be the four digit year + The value of "pdfaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of pdfaid:rev (%1) not the four digit year + The value of "pdfaid:rev" (%1) not the four digit year rev diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t06.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t06.xml index 7222a2d0..a2e7efaa 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t06.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t06.xml @@ -2,16 +2,16 @@
ISO 19005-4:2020 - 6.7.3 Version identification - PDF/A Identification Schema property rev. - Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "rev" of the PDF/A Identification Schema shall have namespace prefix "pdfaid"
- Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "rev" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" revPrefix == null || revPrefix == "pdfaid" - Property rev of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "rev" of the PDF/A Identification Schema has invalid namespace prefix %1 revPrefix diff --git a/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml index 68373524..e7bd738a 100644 --- a/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/4e/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.7.3 Version and conformance level identification - Conformance level. - A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E + A PDF/A-4e conforming file (as described in Annex B) shall specify the value of "pdfaid:conformance" as E
- A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E + A PDF/A-4e conforming file (as described in Annex B) shall specify the value of "pdfaid:conformance" as E conformance == "E" The "conformance" property of the PDF/A Identification Schema is %1 instead of "E" for PDF/A-4E conforming file diff --git a/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml b/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml index a36c458f..0e46ac99 100644 --- a/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml +++ b/PDF_A/4f/6.7.3 Version identification/verapdf-profile-6-7-3-t03.xml @@ -2,13 +2,13 @@
ISO 19005-4:2020 - 6.7.3 Version and conformance level identification - Conformance level. - A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F + A PDF/A-4f conforming file (as described in Annex A) shall specify the value of "pdfaid:conformance" as F
- A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F + A PDF/A-4f conforming file (as described in Annex A) shall specify the value of "pdfaid:conformance" as F conformance == "F" The "conformance" property of the PDF/A Identification Schema is %1 instead of "F" for PDF/A-4F conforming file diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml index 1d52a880..7f9c31ec 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t02.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 5 Version identification - Part number - The value of pdfuaid:part shall be the part number of the International Standard to which the file + The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms
- The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms + The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms part == 1 The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml index a752a143..9d1a6ce6 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t03.xml @@ -2,16 +2,16 @@
ISO 14289-1:2014 - 5 Version identification - part prefix - Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
- Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" partPrefix == null || partPrefix == "pdfuaid" - Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/UA Identification Schema has invalid namespace prefix %1 partPrefix diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml index 8114796d..94589b4b 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t04.xml @@ -2,16 +2,16 @@
ISO 14289-1:2014 - 5 Version identification - amd prefix - Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "amd" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
- Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "amd" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" amdPrefix == null || amdPrefix == "pdfuaid" - Property amd of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/UA Identification Schema has invalid namespace prefix %1 amdPrefix diff --git a/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml b/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml index 7dd9e45a..bcd58d55 100644 --- a/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml +++ b/PDF_UA/1/5 Version identification/verapdf-profile-5-t05.xml @@ -2,16 +2,16 @@
ISO 14289-1:2014 - 5 Version identification - corr prefix - Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "corr" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
- Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "corr" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" corrPrefix == null || corrPrefix == "pdfuaid" - Property corr of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "corr" of the PDF/UA Identification Schema has invalid namespace prefix %1 corrPrefix diff --git a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml index 9d69f805..bbfcd108 100644 --- a/PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml +++ b/PDF_UA/1/7.1 General/verapdf-profile-7-1-t12.xml @@ -2,16 +2,18 @@
ISO 14289-1:2014 - 7.1 General - Struct element parent - Struct element shall contain the P entry according to ISO 32000-1:2008, 14.7.2, Table 355 + A structure element dictionary shall contain the P (parent) entry according to ISO 32000-1:2008, + 14.7.2, Table 355
- A struct element shall contain the P entry according to ISO 32000-1:2008, 14.7.2, Table 355 + A structure element dictionary shall contain the P (parent) entry according to ISO 32000-1:2008, + 14.7.2, Table 355 containsParent == true - A struct element does not contain the P entry + A structure element dictionary does not contain the P (parent) entry diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml index d166ea8a..bcc7f4de 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml @@ -2,14 +2,14 @@
ISO 14289-2:202x - 5 Version identification - Part number - The value of pdfuaid:part shall be the part number of the International Standard to which the file + The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms
- The value of pdfuaid:part shall be the part number of the International Standard to which the + The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms part == 2 diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml index 5d4ceeb6..e50fb58d 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml @@ -2,16 +2,16 @@
ISO 14289-2:202x - 5 Version identification - part prefix - Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
- Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" partPrefix == null || partPrefix == "pdfuaid" - Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/UA Identification Schema has invalid namespace prefix %1 partPrefix diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml index a5a9ae9c..c31f0bb6 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml @@ -2,16 +2,16 @@
ISO 14289-2:202x - 5 Version identification - rev prefix - Property rev of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "rev" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
- Property rev of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "rev" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" revPrefix == null || revPrefix == "pdfuaid" - Property rev of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "rev" of the PDF/UA Identification Schema has invalid namespace prefix %1 revPrefix diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml index 86cddbf1..ff2b4453 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml @@ -2,16 +2,16 @@
ISO 14289-2:202x - 5 Version identification - rev property - The value of pdfuaid:rev shall be the four digit year + The value of "pdfuaid:rev" shall be the four digit year
- The value of pdfuaid:rev shall be the four digit year + The value of "pdfuaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of pdfuaid:rev (%1) not the four digit year + The value of "pdfuaid:rev" (%1) not the four digit year rev diff --git a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml index a1b1eabc..71b49596 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml @@ -2,16 +2,18 @@
ISO 14289-2:202x - 8.2 Logical structure - 8.2.1 General - Struct element parent - Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 + A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, + 14.7.2, Table 323
- Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 + A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, + 14.7.2, Table 323 containsParent == true - A struct element does not contain the P entry + A structure element dictionary does not contain the P (parent) entry diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml index 08abc837..e16d6ff0 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml @@ -2,17 +2,17 @@
ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Ref entry - Real content that refers to footnotes or endnotes (real content enclosed in FENote structure - elements) shall use the Ref entry as specified in 8.8 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 + 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
Real content that refers to footnotes or endnotes (real content enclosed in FENote structure - elements) shall use the Ref entry as specified in 8.8 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 + 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
orphanRefs == null Ref entry in the FENote does not reference structure elements with object numbers %1, while diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml index 3f45345a..4567aafb 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml @@ -2,15 +2,15 @@
ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.8 Table of Contents (TOC/TOCI) - Reference in TOCI - 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 a child structure element contained within + 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
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 a child structure element contained within + either directly on the TOCI structure element itself or on one of its child structure elements containsRef == true TOCI in the TOC does not contain the Ref entry, neither directly on the TOCI structure element From cb959cd1b56c8014ddf1b46c6602aea664ace9f2 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 26 Jan 2024 09:24:19 +0000 Subject: [PATCH 537/557] Update rules descriptions and error messages --- PDF_A/PDFA-1A.xml | 48 +++++++++++++++++++++++------------------------ PDF_A/PDFA-1B.xml | 48 +++++++++++++++++++++++------------------------ PDF_A/PDFA-2A.xml | 20 ++++++++++---------- PDF_A/PDFA-2B.xml | 20 ++++++++++---------- PDF_A/PDFA-2U.xml | 20 ++++++++++---------- PDF_A/PDFA-3A.xml | 20 ++++++++++---------- PDF_A/PDFA-3B.xml | 18 +++++++++--------- PDF_A/PDFA-3U.xml | 20 ++++++++++---------- PDF_A/PDFA-4.xml | 16 ++++++++-------- PDF_A/PDFA-4E.xml | 16 ++++++++-------- PDF_A/PDFA-4F.xml | 16 ++++++++-------- 11 files changed, 131 insertions(+), 131 deletions(-) diff --git a/PDF_A/PDFA-1A.xml b/PDF_A/PDFA-1A.xml index c3e9d142..d4fb6b7f 100644 --- a/PDF_A/PDFA-1A.xml +++ b/PDF_A/PDFA-1A.xml @@ -1117,10 +1117,10 @@ - The value of CreationDate entry from the document information dictionary, if present, and its analogous XMP property xmp:CreateDate shall be equivalent + The value of CreationDate entry from the document information dictionary, if present, and its analogous XMP property "xmp:CreateDate" shall be equivalent doCreationDatesMatch != false - The value of CreationDate entry from the document Info dictionary and its matching XMP property xmp:CreateDate are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) + The value of CreationDate entry from the document Info dictionary and its matching XMP property "xmp:CreateDate" are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) CreationDate XMPCreateDate @@ -1132,10 +1132,10 @@ - The value of Title entry from the document information dictionary, if present, and its analogous XMP property dc:title['x-default'] shall be equivalent + The value of Title entry from the document information dictionary, if present, and its analogous XMP property "dc:title['x-default']" shall be equivalent Title == null || Title == XMPTitle - The value of Title entry from the document Info dictionary and its matching XMP property dc:title['x-default'] are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2) + The value of Title entry from the document Info dictionary and its matching XMP property "dc:title['x-default']" are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2) Title XMPTitle @@ -1147,10 +1147,10 @@ - The value of Author entry from the document information dictionary, if present, and its analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry + The value of Author entry from the document information dictionary, if present, and its analogous XMP property "dc:creator" shall be equivalent. dc:creator shall contain exactly one entry Author == null || (Author == XMPCreator && XMPCreatorSize == 1) - The value of Author entry from the document Info dictionary and its matching XMP property dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) + The value of Author entry from the document Info dictionary and its matching XMP property "dc:creator" are not equivalent (Info /Author = %1, XMP dc:creator = %2) Author XMPCreator @@ -1162,10 +1162,10 @@ - The value of Subject entry from the document information dictionary, if present, and its analogous XMP property dc:description['x-default'] shall be equivalent + The value of Subject entry from the document information dictionary, if present, and its analogous XMP property "dc:description['x-default']" shall be equivalent Subject == null || Subject == XMPDescription - The value of Subject entry from the document Info dictionary and its matching XMP property dc:description['x-default'] are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) + The value of Subject entry from the document Info dictionary and its matching XMP property "dc:description['x-default']" are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) Subject XMPDescription @@ -1177,10 +1177,10 @@ - The value of Keywords entry from the document information dictionary, if present, and its analogous XMP property pdf:Keywords shall be equivalent + The value of Keywords entry from the document information dictionary, if present, and its analogous XMP property "pdf:Keywords" shall be equivalent Keywords == null || Keywords == XMPKeywords - The value of Keywords entry from the document Info dictionary and its matching XMP property pdf:Keywords are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) + The value of Keywords entry from the document Info dictionary and its matching XMP property "pdf:Keywords" are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) Keywords XMPKeywords @@ -1192,10 +1192,10 @@ - The value of Creator entry from the document information dictionary, if present, and its analogous XMP property xmp:CreatorTool shall be equivalent + The value of Creator entry from the document information dictionary, if present, and its analogous XMP property "xmp:CreatorTool" shall be equivalent Creator == null || Creator == XMPCreatorTool - The value of Creator entry from the document Info dictionary and its matching XMP property xmp:CreatorTool are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) + The value of Creator entry from the document Info dictionary and its matching XMP property "xmp:CreatorTool" are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) Creator XMPCreatorTool @@ -1207,10 +1207,10 @@ - The value of Producer entry from the document information dictionary, if present, and its analogous XMP property pdf:Producer shall be equivalent + The value of Producer entry from the document information dictionary, if present, and its analogous XMP property "pdf:Producer" shall be equivalent Producer == null || Producer == XMPProducer - The value of Producer entry from the document Info dictionary and its matching XMP property pdf:Producer are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) + The value of Producer entry from the document Info dictionary and its matching XMP property "pdf:Producer" are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) Producer XMPProducer @@ -1222,10 +1222,10 @@ - The value of ModDate entry from the document information dictionary, if present, and its analogous XMP property xmp:ModifyDate shall be equivalent + The value of ModDate entry from the document information dictionary, if present, and its analogous XMP property "xmp:ModifyDate" shall be equivalent doModDatesMatch != false - The value of ModDate entry from the document Info dictionary and its matching XMP property xmp:ModifyDate are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) + The value of ModDate entry from the document Info dictionary and its matching XMP property "xmp:ModifyDate" are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) ModDate XMPModifyDate @@ -1564,7 +1564,7 @@ - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 1 The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file @@ -1576,7 +1576,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A + A Level A conforming file shall specify the value of "pdfaid:conformance" as A conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-1a conforming file @@ -1588,10 +1588,10 @@ - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix @@ -1600,10 +1600,10 @@ - Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" conformancePrefix == null || conformancePrefix == "pdfaid" - Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1 conformancePrefix @@ -1612,10 +1612,10 @@ - Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" amdPrefix == null || amdPrefix == "pdfaid" - Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1 amdPrefix diff --git a/PDF_A/PDFA-1B.xml b/PDF_A/PDFA-1B.xml index a4ce32ec..897ad393 100644 --- a/PDF_A/PDFA-1B.xml +++ b/PDF_A/PDFA-1B.xml @@ -1107,10 +1107,10 @@ - The value of CreationDate entry from the document information dictionary, if present, and its analogous XMP property xmp:CreateDate shall be equivalent + The value of CreationDate entry from the document information dictionary, if present, and its analogous XMP property "xmp:CreateDate" shall be equivalent doCreationDatesMatch != false - The value of CreationDate entry from the document Info dictionary and its matching XMP property xmp:CreateDate are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) + The value of CreationDate entry from the document Info dictionary and its matching XMP property "xmp:CreateDate" are not equivalent (Info /CreationDate = %1, XMP xmp:CreateDate = %2) CreationDate XMPCreateDate @@ -1122,10 +1122,10 @@ - The value of Title entry from the document information dictionary, if present, and its analogous XMP property dc:title['x-default'] shall be equivalent + The value of Title entry from the document information dictionary, if present, and its analogous XMP property "dc:title['x-default']" shall be equivalent Title == null || Title == XMPTitle - The value of Title entry from the document Info dictionary and its matching XMP property dc:title['x-default'] are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2) + The value of Title entry from the document Info dictionary and its matching XMP property "dc:title['x-default']" are not equivalent (Info /Title = %1, XMP dc:title['x-default'] = %2) Title XMPTitle @@ -1137,10 +1137,10 @@ - The value of Author entry from the document information dictionary, if present, and its analogous XMP property dc:creator shall be equivalent. dc:creator shall contain exactly one entry + The value of Author entry from the document information dictionary, if present, and its analogous XMP property "dc:creator" shall be equivalent. dc:creator shall contain exactly one entry Author == null || (Author == XMPCreator && XMPCreatorSize == 1) - The value of Author entry from the document Info dictionary and its matching XMP property dc:creator are not equivalent (Info /Author = %1, XMP dc:creator = %2) + The value of Author entry from the document Info dictionary and its matching XMP property "dc:creator" are not equivalent (Info /Author = %1, XMP dc:creator = %2) Author XMPCreator @@ -1152,10 +1152,10 @@ - The value of Subject entry from the document information dictionary, if present, and its analogous XMP property dc:description['x-default'] shall be equivalent + The value of Subject entry from the document information dictionary, if present, and its analogous XMP property "dc:description['x-default']" shall be equivalent Subject == null || Subject == XMPDescription - The value of Subject entry from the document Info dictionary and its matching XMP property dc:description['x-default'] are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) + The value of Subject entry from the document Info dictionary and its matching XMP property "dc:description['x-default']" are not equivalent (Info /Subject = %1, XMP dc:description['x-default'] = %2) Subject XMPDescription @@ -1167,10 +1167,10 @@ - The value of Keywords entry from the document information dictionary, if present, and its analogous XMP property pdf:Keywords shall be equivalent + The value of Keywords entry from the document information dictionary, if present, and its analogous XMP property "pdf:Keywords" shall be equivalent Keywords == null || Keywords == XMPKeywords - The value of Keywords entry from the document Info dictionary and its matching XMP property pdf:Keywords are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) + The value of Keywords entry from the document Info dictionary and its matching XMP property "pdf:Keywords" are not equivalent (Info /Keywords = %1, XMP pdf:Keywords = %2) Keywords XMPKeywords @@ -1182,10 +1182,10 @@ - The value of Creator entry from the document information dictionary, if present, and its analogous XMP property xmp:CreatorTool shall be equivalent + The value of Creator entry from the document information dictionary, if present, and its analogous XMP property "xmp:CreatorTool" shall be equivalent Creator == null || Creator == XMPCreatorTool - The value of Creator entry from the document Info dictionary and its matching XMP property xmp:CreatorTool are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) + The value of Creator entry from the document Info dictionary and its matching XMP property "xmp:CreatorTool" are not equivalent (Info /Creator = %1, XMP xmp:CreatorTool = %2) Creator XMPCreatorTool @@ -1197,10 +1197,10 @@ - The value of Producer entry from the document information dictionary, if present, and its analogous XMP property pdf:Producer shall be equivalent + The value of Producer entry from the document information dictionary, if present, and its analogous XMP property "pdf:Producer" shall be equivalent Producer == null || Producer == XMPProducer - The value of Producer entry from the document Info dictionary and its matching XMP property pdf:Producer are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) + The value of Producer entry from the document Info dictionary and its matching XMP property "pdf:Producer" are not equivalent (Info /Producer = %1, XMP pdf:Producer = %2) Producer XMPProducer @@ -1212,10 +1212,10 @@ - The value of ModDate entry from the document information dictionary, if present, and its analogous XMP property xmp:ModifyDate shall be equivalent + The value of ModDate entry from the document information dictionary, if present, and its analogous XMP property "xmp:ModifyDate" shall be equivalent doModDatesMatch != false - The value of ModDate entry from the document Info dictionary and its matching XMP property xmp:ModifyDate are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) + The value of ModDate entry from the document Info dictionary and its matching XMP property "xmp:ModifyDate" are not equivalent (Info /ModDate = %1, XMP xmp:ModifyDate = %2) ModDate XMPModifyDate @@ -1554,7 +1554,7 @@ - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 1 The "part" property of the PDF/A Identification Schema is %1 instead of 1 for PDF/A-1 conforming file @@ -1566,7 +1566,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B conformance == "B" || conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-1b conforming file @@ -1578,10 +1578,10 @@ - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix @@ -1590,10 +1590,10 @@ - Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" conformancePrefix == null || conformancePrefix == "pdfaid" - Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1 conformancePrefix @@ -1602,10 +1602,10 @@ - Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" amdPrefix == null || amdPrefix == "pdfaid" - Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1 amdPrefix diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 75e19aae..32bdc13d 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1619,7 +1619,7 @@ - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 2 The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file @@ -1631,7 +1631,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-2A conforming file @@ -1643,10 +1643,10 @@ - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix @@ -1655,10 +1655,10 @@ - Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" conformancePrefix == null || conformancePrefix == "pdfaid" - Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1 conformancePrefix @@ -1667,10 +1667,10 @@ - Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" amdPrefix == null || amdPrefix == "pdfaid" - Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1 amdPrefix @@ -1679,10 +1679,10 @@ - Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" corrPrefix == null || corrPrefix == "pdfaid" - Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1 corrPrefix diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 0f7a8c14..602d9d15 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1585,7 +1585,7 @@ - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 2 The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file @@ -1597,7 +1597,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U conformance == "B" || conformance == "U" || conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "B" for PDF/A-2B conforming file @@ -1609,10 +1609,10 @@ - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix @@ -1621,10 +1621,10 @@ - Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" conformancePrefix == null || conformancePrefix == "pdfaid" - Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1 conformancePrefix @@ -1633,10 +1633,10 @@ - Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" amdPrefix == null || amdPrefix == "pdfaid" - Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1 amdPrefix @@ -1645,10 +1645,10 @@ - Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" corrPrefix == null || corrPrefix == "pdfaid" - Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1 corrPrefix diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index 61345d89..e323e5e6 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1607,7 +1607,7 @@ - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 2 The "part" property of the PDF/A Identification Schema is %1 instead of 2 for PDF/A-2 conforming file @@ -1619,7 +1619,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U conformance == "U" || conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-2U conforming file @@ -1631,10 +1631,10 @@ - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix @@ -1643,10 +1643,10 @@ - Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" conformancePrefix == null || conformancePrefix == "pdfaid" - Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1 conformancePrefix @@ -1655,10 +1655,10 @@ - Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" amdPrefix == null || amdPrefix == "pdfaid" - Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1 amdPrefix @@ -1667,10 +1667,10 @@ - Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" corrPrefix == null || corrPrefix == "pdfaid" - Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1 corrPrefix diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index aa0b489b..6bb38063 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1619,7 +1619,7 @@ - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 3 The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file @@ -1631,7 +1631,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "A" for PDF/A-3A conforming file @@ -1643,10 +1643,10 @@ - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix @@ -1655,10 +1655,10 @@ - Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" conformancePrefix == null || conformancePrefix == "pdfaid" - Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1 conformancePrefix @@ -1667,10 +1667,10 @@ - Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" amdPrefix == null || amdPrefix == "pdfaid" - Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1 amdPrefix @@ -1679,10 +1679,10 @@ - Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" corrPrefix == null || corrPrefix == "pdfaid" - Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1 corrPrefix diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index d1844859..5f6e5a03 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1585,7 +1585,7 @@ - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 3 The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file @@ -1609,10 +1609,10 @@ - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix @@ -1621,10 +1621,10 @@ - Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" conformancePrefix == null || conformancePrefix == "pdfaid" - Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1 conformancePrefix @@ -1633,10 +1633,10 @@ - Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" amdPrefix == null || amdPrefix == "pdfaid" - Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1 amdPrefix @@ -1645,10 +1645,10 @@ - Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" corrPrefix == null || corrPrefix == "pdfaid" - Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1 corrPrefix diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 87060e8b..7070f7ad 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1607,7 +1607,7 @@ - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 3 The "part" property of the PDF/A Identification Schema is %1 instead of 3 for PDF/A-3 conforming file @@ -1619,7 +1619,7 @@ - A Level A conforming file shall specify the value of pdfaid:conformance as A. A Level B conforming file shall specify the value of pdfaid:conformance as B. A Level U conforming file shall specify the value of pdfaid:conformance as U + A Level A conforming file shall specify the value of "pdfaid:conformance" as A. A Level B conforming file shall specify the value of "pdfaid:conformance" as B. A Level U conforming file shall specify the value of "pdfaid:conformance" as U conformance == "U" || conformance == "A" The "conformance" property of the PDF/A Identification Schema is %1 instead of "U" for PDF/A-3U conforming file @@ -1631,10 +1631,10 @@ - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix @@ -1643,10 +1643,10 @@ - Property conformance of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "conformance" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" conformancePrefix == null || conformancePrefix == "pdfaid" - Property conformance of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "conformance" of the PDF/A Identification Schema has invalid namespace prefix %1 conformancePrefix @@ -1655,10 +1655,10 @@ - Property amd of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "amd" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" amdPrefix == null || amdPrefix == "pdfaid" - Property amd of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/A Identification Schema has invalid namespace prefix %1 amdPrefix @@ -1667,10 +1667,10 @@ - Property corr of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "corr" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" corrPrefix == null || corrPrefix == "pdfaid" - Property corr of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "corr" of the PDF/A Identification Schema has invalid namespace prefix %1 corrPrefix diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index abe2c0d9..101f77f9 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -1148,7 +1148,7 @@ - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 4 The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file @@ -1160,7 +1160,7 @@ - A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any pdfaid:conformance + A file that does not conform to either PDF/A-4e or PDF/A-4f shall not provide any "pdfaid:conformance" conformance == null The "conformance" property of the PDF/A Identification Schema is %1 instead of null for PDF/A-4 conforming file @@ -1172,10 +1172,10 @@ - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix @@ -1184,10 +1184,10 @@ - The value of pdfaid:rev shall be the four digit year + The value of "pdfaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of pdfaid:rev (%1) not the four digit year + The value of "pdfaid:rev" (%1) not the four digit year rev @@ -1196,10 +1196,10 @@ - Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "rev" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" revPrefix == null || revPrefix == "pdfaid" - Property rev of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "rev" of the PDF/A Identification Schema has invalid namespace prefix %1 revPrefix diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index dfb3514f..b1a8c3e7 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1162,7 +1162,7 @@ - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 4 The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file @@ -1174,7 +1174,7 @@ - A PDF/A-4e conforming file (as described in Annex B) shall specify the value of pdfaid:conformance as E + A PDF/A-4e conforming file (as described in Annex B) shall specify the value of "pdfaid:conformance" as E conformance == "E" The "conformance" property of the PDF/A Identification Schema is %1 instead of "E" for PDF/A-4E conforming file @@ -1188,10 +1188,10 @@ - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix @@ -1200,10 +1200,10 @@ - The value of pdfaid:rev shall be the four digit year + The value of "pdfaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of pdfaid:rev (%1) not the four digit year + The value of "pdfaid:rev" (%1) not the four digit year rev @@ -1212,10 +1212,10 @@ - Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "rev" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" revPrefix == null || revPrefix == "pdfaid" - Property rev of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "rev" of the PDF/A Identification Schema has invalid namespace prefix %1 revPrefix diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 1c93c909..81c1584c 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -1148,7 +1148,7 @@ - The value of pdfaid:part shall be the part number of ISO 19005 to which the file conforms + The value of "pdfaid:part" shall be the part number of ISO 19005 to which the file conforms part == 4 The "part" property of the PDF/A Identification Schema is %1 instead of 4 for PDF/A-4 conforming file @@ -1160,7 +1160,7 @@ - A PDF/A-4f conforming file (as described in Annex A) shall specify the value of pdfaid:conformance as F + A PDF/A-4f conforming file (as described in Annex A) shall specify the value of "pdfaid:conformance" as F conformance == "F" The "conformance" property of the PDF/A Identification Schema is %1 instead of "F" for PDF/A-4F conforming file @@ -1174,10 +1174,10 @@ - Property part of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "part" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" partPrefix == null || partPrefix == "pdfaid" - Property part of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/A Identification Schema has invalid namespace prefix %1 partPrefix @@ -1186,10 +1186,10 @@ - The value of pdfaid:rev shall be the four digit year + The value of "pdfaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of pdfaid:rev (%1) not the four digit year + The value of "pdfaid:rev" (%1) not the four digit year rev @@ -1198,10 +1198,10 @@ - Property rev of the PDF/A Identification Schema shall have namespace prefix pdfaid + Property "rev" of the PDF/A Identification Schema shall have namespace prefix "pdfaid" revPrefix == null || revPrefix == "pdfaid" - Property rev of the PDF/A Identification Schema has invalid namespace prefix %1 + Property "rev" of the PDF/A Identification Schema has invalid namespace prefix %1 revPrefix From d5ec3d080f5e1e0d980bb8822f254abb2344d65e Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 26 Jan 2024 10:07:24 +0000 Subject: [PATCH 538/557] Update rules descriptions and error messages --- PDF_UA/PDFUA-1.xml | 18 +++++++++--------- PDF_UA/PDFUA-2-ISO32005.xml | 22 +++++++++++----------- PDF_UA/PDFUA-2.xml | 22 +++++++++++----------- PDF_UA/WCAG-2-2-Complete.xml | 4 ++-- PDF_UA/WCAG-2-2-Machine.xml | 4 ++-- 5 files changed, 35 insertions(+), 35 deletions(-) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index e1f769ff..37726e0e 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -18,7 +18,7 @@ - The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms + The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms part == 1 The "part" property of the PDF/UA Identification Schema is %1 instead of 1 for PDF/UA-1 conforming file @@ -30,10 +30,10 @@ - Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" partPrefix == null || partPrefix == "pdfuaid" - Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/UA Identification Schema has invalid namespace prefix %1 partPrefix @@ -42,10 +42,10 @@ - Property amd of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "amd" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" amdPrefix == null || amdPrefix == "pdfuaid" - Property amd of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "amd" of the PDF/UA Identification Schema has invalid namespace prefix %1 amdPrefix @@ -54,10 +54,10 @@ - Property corr of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "corr" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" corrPrefix == null || corrPrefix == "pdfuaid" - Property corr of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "corr" of the PDF/UA Identification Schema has invalid namespace prefix %1 corrPrefix @@ -199,10 +199,10 @@ - A struct element shall contain the P entry according to ISO 32000-1:2008, 14.7.2, Table 355 + A structure element dictionary shall contain the P (parent) entry according to ISO 32000-1:2008, 14.7.2, Table 355 containsParent == true - A struct element does not contain the P entry + A structure element dictionary does not contain the P (parent) entry diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 3b62f27f..6ce98a32 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -18,7 +18,7 @@ - The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms + The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms part == 2 The "part" property of the PDF/UA Identification Schema is %1 instead of 2 for PDF/UA-2 conforming file @@ -30,10 +30,10 @@ - Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" partPrefix == null || partPrefix == "pdfuaid" - Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/UA Identification Schema has invalid namespace prefix %1 partPrefix @@ -42,10 +42,10 @@ - Property rev of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "rev" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" revPrefix == null || revPrefix == "pdfuaid" - Property rev of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "rev" of the PDF/UA Identification Schema has invalid namespace prefix %1 revPrefix @@ -54,10 +54,10 @@ - The value of pdfuaid:rev shall be the four digit year + The value of "pdfuaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of pdfuaid:rev (%1) not the four digit year + The value of "pdfuaid:rev" (%1) not the four digit year rev @@ -78,10 +78,10 @@ - Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 + A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true - A struct element does not contain the P entry + A structure element dictionary does not contain the P (parent) entry @@ -186,7 +186,7 @@ - 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 a child structure element contained within + 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 containsRef == true TOCI in the TOC does not contain the Ref entry, neither directly on the TOCI structure element itself nor on its descendant structure elements @@ -216,7 +216,7 @@ - Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry as specified in 8.8 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 + 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 orphanRefs == null Ref entry in the FENote does not reference structure elements with object numbers %1, while these structure elements reference this FENote diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index e2f97663..c5cb3a1d 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -18,7 +18,7 @@ - The value of pdfuaid:part shall be the part number of the International Standard to which the file conforms + The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms part == 2 The "part" property of the PDF/UA Identification Schema is %1 instead of 2 for PDF/UA-2 conforming file @@ -30,10 +30,10 @@ - Property part of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" partPrefix == null || partPrefix == "pdfuaid" - Property part of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "part" of the PDF/UA Identification Schema has invalid namespace prefix %1 partPrefix @@ -42,10 +42,10 @@ - Property rev of the PDF/UA Identification Schema shall have namespace prefix pdfuaid + Property "rev" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid" revPrefix == null || revPrefix == "pdfuaid" - Property rev of the PDF/UA Identification Schema has invalid namespace prefix %1 + Property "rev" of the PDF/UA Identification Schema has invalid namespace prefix %1 revPrefix @@ -54,10 +54,10 @@ - The value of pdfuaid:rev shall be the four digit year + The value of "pdfuaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of pdfuaid:rev (%1) not the four digit year + The value of "pdfuaid:rev" (%1) not the four digit year rev @@ -78,10 +78,10 @@ - Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 + A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true - A struct element does not contain the P entry + A structure element dictionary does not contain the P (parent) entry @@ -186,7 +186,7 @@ - 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 a child structure element contained within + 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 containsRef == true TOCI in the TOC does not contain the Ref entry, neither directly on the TOCI structure element itself nor on its descendant structure elements @@ -216,7 +216,7 @@ - Real content that refers to footnotes or endnotes (real content enclosed in FENote structure elements) shall use the Ref entry as specified in 8.8 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 + 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 orphanRefs == null Ref entry in the FENote does not reference structure elements with object numbers %1, while these structure elements reference this FENote diff --git a/PDF_UA/WCAG-2-2-Complete.xml b/PDF_UA/WCAG-2-2-Complete.xml index 30d4bfcb..0795c5a8 100644 --- a/PDF_UA/WCAG-2-2-Complete.xml +++ b/PDF_UA/WCAG-2-2-Complete.xml @@ -141,10 +141,10 @@ - A struct element shall contain the P entry according to ISO 32000-1:2008, 14.7.2, Table 355 + A structure element dictionary shall contain the P (parent) entry according to ISO 32000-1:2008, 14.7.2, Table 355 containsParent == true - A struct element does not contain the P entry + A structure element dictionary does not contain the P (parent) entry diff --git a/PDF_UA/WCAG-2-2-Machine.xml b/PDF_UA/WCAG-2-2-Machine.xml index 8456e9de..a2f81762 100644 --- a/PDF_UA/WCAG-2-2-Machine.xml +++ b/PDF_UA/WCAG-2-2-Machine.xml @@ -141,10 +141,10 @@ - A struct element shall contain the P entry according to ISO 32000-1:2008, 14.7.2, Table 355 + A structure element dictionary shall contain the P (parent) entry according to ISO 32000-1:2008, 14.7.2, Table 355 containsParent == true - A struct element does not contain the P entry + A structure element dictionary does not contain the P (parent) entry From 1d3bdaa0a662abb0ee1c6ec57d8c789396a468f7 Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 30 Jan 2024 16:15:46 +0300 Subject: [PATCH 539/557] PDF/UA-2. Update rules 8.2.4-3, 8.9.2.1-1 and 8.9.2.4.9-1 --- .../verapdf-profile-8-2-4-t03.xml | 6 ++++-- .../8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml | 10 +++++----- .../8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml index 12e3c609..7cc50adf 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml @@ -2,13 +2,15 @@
ISO 14289-2:202x - 8.2 Logical structure - 8.2.4 Structure types - Same namespace mapping - Structure types shall not be role mapped to other structure types in the same namespace + Within a given explicitly provided namespace, structure types shall not be role mapped to other + structure types in the same namespace
- Structure types shall not be role mapped to other structure types in the same namespace + Within a given explicitly provided namespace, structure types shall not be role mapped to other + structure types in the same namespace roleMapToSameNamespaceTag == null Structure type %1 is role mapped to other structure type in the same namespace diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml index 1fe4af3e..2d489902 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml @@ -2,20 +2,20 @@
ISO 14289-2:202x - 8.9 Annotations - 8.9.2 Semantics and content - Annotations in structure tree - Annotations shall be included in the structure tree unless explicitly excluded by the following - subclauses + Annotations shall be included in the structure tree unless explicitly excluded by the specification + (popups, printer marks, invisible annotations)
- Annotations shall be included in the structure tree unless explicitly excluded by the following - subclauses + Annotations shall be included in the structure tree unless explicitly excluded by the + specification (popups, printer marks, invisible annotations) (structParentType != null && isArtifact == false) || (Subtype == "Popup") || (Subtype == "PrinterMark") || (Subtype == "Widget" && width == 0 && height == 0) || - ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) + ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) Annotation is not included in the structure tree diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml index 93133824..cd204f97 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml @@ -9,7 +9,7 @@ Popup annotations shall not be present in the structure tree - structParentType == null || isArtifact == true + structParentType == null A Popup annotation is included in logical structure with tag %1 (standard type = %2) From b8fa264346b4953e1a21a0f8c78b1d0106831349 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Wed, 31 Jan 2024 12:59:55 +0000 Subject: [PATCH 540/557] PDF/UA-2. Update rules 8.2.4-3, 8.9.2.1-1 and 8.9.2.4.9-1 --- PDF_UA/WCAG-2-2-Machine.xml | 628 ------------------------------------ 1 file changed, 628 deletions(-) diff --git a/PDF_UA/WCAG-2-2-Machine.xml b/PDF_UA/WCAG-2-2-Machine.xml index a2f81762..bdfce4a7 100644 --- a/PDF_UA/WCAG-2-2-Machine.xml +++ b/PDF_UA/WCAG-2-2-Machine.xml @@ -1299,26 +1299,6 @@ - - - Underlined text - isUnderlined == false || parentsStandardTypes.split('&').filter(elem => (elem == 'Link' || elem == 'Reference')).length > 0 - - Underlined text is detected - - - - - - - If text has a different style, it shall be tagged as Span, Em, Strong or other appropriate inline element - hasSpecialStyle == false || parentsStandardTypes.split('&').filter(elem => elem == 'Figure').length > 0 - - Text has a different style and not tagged as Span, Em, Strong or other appropriate inline element - - - - Pages shall have the same orientation @@ -1355,16 +1335,6 @@ - - - Document should not contain illegible font - fontName != null && fontName.indexOf('AdobeDevanagari') == -1 && fontName.indexOf('AgencyFB') == -1 && fontName.indexOf('BlackadderITC') == -1 && fontName.indexOf('BodoniMTPosterCompressed') == -1 && fontName.indexOf('BradleyHandITC') == -1 && fontName.indexOf('BrushScriptMT') == -1 && fontName.indexOf('Chiller') == -1 && fontName.indexOf('ColonnaMT') == -1 && fontName.indexOf('CurlzMT') == -1 && fontName.indexOf('EdwardianScriptITC') == -1 && fontName.indexOf('ESRIArcGISTDN') == -1 && fontName.indexOf('FreestyleScript') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('Gigi') == -1 && fontName.indexOf('GillSansMT-ExtraCondensedBold') == -1 && fontName.indexOf('HarlowSolidItalic') == -1 && fontName.indexOf('Harrington') == -1 && fontName.indexOf('InformalRoman') == -1 && fontName.indexOf('Jokerman') == -1 && fontName.indexOf('FrenchScriptMT') == -1 && fontName.indexOf('Gabriola') == -1 && fontName.indexOf('JuiceITC') == -1 && fontName.indexOf('KunstlerScript') == -1 && fontName.indexOf('Magneto') == -1 && fontName.indexOf('MaturaMTScriptCapitals') == -1 && fontName.indexOf('MicrosoftUighur') == -1 && fontName.indexOf('Mistral') == -1 && fontName.indexOf('OldEnglishTextMT') == -1 && fontName.indexOf('Onyx') == -1 && fontName.indexOf('PalaceScriptMT') == -1 && fontName.indexOf('Parchment') == -1 && fontName.indexOf('Playbill') == -1 && fontName.indexOf('Pristina') == -1 && fontName.indexOf('RageItalic') == -1 && fontName.indexOf('Ravie') == -1 && fontName.indexOf('SegoeScript') == -1 && fontName.indexOf('ShowcardGothic') == -1 && fontName.indexOf('SnapITC') == -1 && fontName.indexOf('Vivaldi') == -1 && fontName.indexOf('VladimirScript') == -1 && (fontName.indexOf('HarlowSolid') == -1 || isItalic != true) - - Document contains illegible font - - - - Bounding box should be present for a figure appearing in its entirety on a single page to indicate the area of the figure on the page @@ -1409,178 +1379,6 @@
- - - Table shouldn't have merged cells - colSpan == 1 && rowSpan == 1 - - Table has merged cells - - - - structureID - - - - - - - Incorrect use of a paragraph - correctSemanticScore >= 0.75 || correctType == null || correctType == 'H' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Incorrect use of a span - correctSemanticScore >= 0.75 || correctType == null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Incorrect use of a heading - correctSemanticScore >= 0.75 || correctType == null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Incorrect use of a numbered heading - correctSemanticScore >= 0.75 || correctType == null - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - Incorrect table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem != true) || ((correctType != 'TD' || standardType == 'TH') && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) - - score = %1, correct type = %2, structure id = %3 - - correctSemanticScore - correctType - structureID - - - - - - - Missing table element - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (isTableElem == true) || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType == 'L' || parentsStandardTypes.split('&').filter(elem => elem == 'L').length > 0) - - score = %1, correct type = %2, structure id = %3 - - correctSemanticScore - correctType - structureID - - - - - - - This structure element should be a heading instead of a paragraph - correctType != 'H' && correctType != 'Hn' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a span instead of a paragraph - correctType != 'Span' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a paragraph instead of a span - correctType != 'P' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a heading instead of a span - correctType != 'H' && correctType != 'Hn' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a paragraph instead of a heading - correctType != 'P' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a paragraph instead of a numbered heading - correctType != 'P' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - Redundant paragraph @@ -1633,112 +1431,6 @@
- - - This structure element should be a caption instead of a paragraph - correctType != 'Caption' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of list elements shall be semantically appropriate - hasLowestDepthError == false || (correctSemanticScore >= 0.75 && standardType == correctType) || (correctType != 'LI' && correctType != 'Lbl' && correctType != 'LBody' && correctType != 'L') || (isTableElem == true) - - score = %1, correct type = %2, structure id = %3 - - correctSemanticScore - correctType - structureID - - - - - - - The structure type and attributes of a list shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'L' && correctSemanticScore >= 0.75) || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list item shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'LI' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'Lbl' || correctType == 'LBody' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a list body shall be semantically appropriate - hasLowestDepthError == false || (correctType == 'LBody' && correctSemanticScore >= 0.75) || correctType == 'L' || correctType == 'LI' || correctType == 'Lbl' || correctType == 'TR' || correctType == 'TD' || correctType == 'TH' || correctType == 'TBody' || correctType == 'THead' || correctType == 'TFoot' || correctType == 'Table' || correctType == 'TOC' || correctType == 'TOCI' - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - A table element is incorrectly tagged as a list element or a list has the wrong numbering - hasLowestDepthError == false || (correctType != 'TD' && correctType != 'TR' && correctType != 'TH' && correctType != 'TBody' && correctType != 'THead' && correctType != 'TFoot' && correctType != 'Table') || (standardType != 'L' && standardType != 'LI' && standardType != 'Lbl' && standardType != 'LBody') - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - This structure element should be a part or several different paragraphs instead of a paragraph - correctType != 'Part' || correctSemanticScore < 0.75 - - score = %1, correct type = %2 - - correctSemanticScore - correctType - - - - - - - The structure type and attributes of a TOCI shall be semantically appropriate - correctType != 'TOCI' || standardType == 'TOCI' - - score = %1, correct type = %2, structure id = %3 - - correctSemanticScore - correctType - structureID - - - - TOCI shall contain one or more text lines @@ -1753,326 +1445,6 @@
- - - TOCI page label shall match the destination page - errorCodes.split(',').filter(elem => elem == 1002).length == 0 - - TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1002)] - - structureID - - - - - - - TOCI shall have a right alignment that matches a right alignment of other TOCIs - errorCodes.split(',').filter(elem => elem == 1003).length == 0 - - TOCI has a bad right alignment - - - - structureID - - - - - - - This list and neighbor list(s) should be tagged as one list - errorCodes.split(',').filter(elem => elem == 1200).length == 0 - - This list and neighbor list(s) should be tagged as one list - - - - structureID - - - - - - - This TOC and neighbor TOC(s) should be tagged as one TOC - errorCodes.split(',').filter(elem => elem == 1006).length == 0 - - This TOC and neighbor TOC(s) should be tagged as one TOC - - - - structureID - - - - - - - The number of rows of this table does not match the number of rows of the visual representation of this table - errorCodes.split(',').filter(elem => elem == 1104).length == 0 - - The number of rows %1 of this table does not match the number of rows %2 of the visual representation of this table - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1104)].split(';')[1] - structureID - - - - - - - The number of columns of this table does not match the number of columns of the visual representation of this table - errorCodes.split(',').filter(elem => elem == 1105).length == 0 - - The number of columns %1 of this table does not match the number of columns %2 of the visual representation of this table - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1105)].split(';')[1] - structureID - - - - - - - The row span of this table cell does not match the row span of the visual representation of this table cell - errorCodes.split(',').filter(elem => elem == 1106).length == 0 - - The row span %1 of this table cell does not match the row span %2 of the visual representation of this table cell - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1106)].split(';')[1] - structureID - - - - - - - The column span of this table cell does not match the column span of the visual representation of this table cell - errorCodes.split(',').filter(elem => elem == 1107).length == 0 - - The column span %1 of this table cell does not match the column span %2 of the visual representation of this table cell - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1107)].split(';')[1] - structureID - - - - - - - This content should be tagged as a list item - false - - This content should be tagged as a list item - - - - structureID - - - - - - - This cell is below than some cells in the next row - errorCodes.split(',').filter(elem => elem == 1100).length == 0 - - This cell is below than some cells in the next row - - - - structureID - - - - - - - This cell is above than some cells in the previous row - errorCodes.split(',').filter(elem => elem == 1101).length == 0 - - This cell is above than some cells in the previous row - - - - structureID - - - - - - - This cell is to the right of some cells in the next column - errorCodes.split(',').filter(elem => elem == 1102).length == 0 - - This cell is to the right of some cells in the next column - - - - structureID - - - - - - - This cell is to the left of some cells in the previous column - errorCodes.split(',').filter(elem => elem == 1103).length == 0 - - This cell is to the left of some cells in the previous column - - - - structureID - - - - - - - This structure element should be a table cell instead of a table header - correctType != 'TD' - - score = %1, correct type = %2, id = %3 - - correctSemanticScore - correctType - structureID - - - - - - - TOCI text should be presented in the document - errorCodes.split(',').filter(elem => elem == 1007).length == 0 - - TOCI text is not found in the document - - - - structureID - - - - - - - TOCI text should be presented on a destination page - errorCodes.split(',').filter(elem => elem == 1008).length == 0 - - TOCI text is not found on a destination page %wrongDestinationPage%. Possible destination page number(s): %possiblePageNumbers% - - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1008)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1008)].split(';')[1] - structureID - - - - - - - TOCI should have a destination - errorCodes.split(',').filter(elem => elem == 1009).length == 0 - - TOCI doesn't have a destination. Possible destination page number(s): %1 - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1009)] - - structureID - - - - - - - TOCI should have a correct page label - errorCodes.split(',').filter(elem => elem == 1010).length == 0 - - TOCI has a wrong page label. Possible page number(s), which page label could be used: %1 - - errorArguments.split(';;')[errorCodes.split(',').findIndex(elem => elem == 1010)] - - structureID - - - - - - - TOCI should have a correct numbering - errorCodes.split(',').filter(elem => elem == 1011).length == 0 - - TOCI has a wrong numbering. The heading number cannot start with %wrongNumbering% - - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1011)].split(';')[0] - errorArguments.split(';;')[errorCodes.split(',') - .findIndex(elem => elem == 1011)].split(';')[1] - structureID - - - - - - - List should contain list items - errorCodes.split(',').filter(elem => elem == 1201).length == 0 - - List contains only one child - list - - - - - - - The structure type and attributes of a list item shall be semantically appropriate - errorCodes.split(',').filter(elem => elem == 1202).length == 0 - - This list item should be tagged as several different list items - - - - - - - This structure element should be a note instead of a span - correctType != 'Note' - - This structure element should be a note instead of a span - - - - - - - This structure element should be a note instead of a paragraph - correctType != 'Note' - - This structure element should be a note instead of a paragraph - - - - - - - The structure type and attributes of a heading shall be semantically appropriate - errorCodes.split(',').filter(elem => elem == 1300).length == 0 - - This node is the single child with content. One of its ancestor nodes should be tagged as heading instead of this one - - - -
From 1ef78b04cbfba2f0140348440d3cbdfe2966f3bc Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 15 Feb 2024 11:36:02 +0300 Subject: [PATCH 541/557] Update error messages in PDF/A and PDF/UA profiles. PDF/UA-2 (8.2.5.26-2, 8.4.3-2, 8.4.3-3, 8.4.5.7-1, 8.4.5.8-2, 8.9.2.2-2, 8.10.2.3-2), PDF/UA-1 (7.2-13, 7.2-14, 7.21.7-2), PDF/A-4 (6.2.10.6-1, 6.2.10.7-1, 6.2.10.8-1), PDF/A-2 (6.4.1-1, 6.4.1-2), PDF/A-2U (6.2.11.7.2-2). Update readme --- .../6.4.1 General/verapdf-profile-6-4-1-t01.xml | 4 ++-- .../6.4.1 General/verapdf-profile-6-4-1-t02.xml | 4 ++-- .../verapdf-profile-6-2-11-7-2-t02.xml | 2 +- .../verapdf-profile-6-2-10-6-t01.xml | 2 +- .../verapdf-profile-6-2-10-7-t01.xml | 2 +- .../verapdf-profile-6-2-10-8-t01.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml | 2 +- .../verapdf-profile-7-21-7-t02.xml | 2 +- .../8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml | 2 +- .../verapdf-profile-8-2-5-26-t02.xml | 2 +- .../verapdf-profile-8-4-3-t02.xml | 2 +- .../verapdf-profile-8-4-3-t03.xml | 2 +- .../verapdf-profile-8-4-5-7-t01.xml | 2 +- .../verapdf-profile-8-4-5-8-t02.xml | 2 +- .../verapdf-profile-8-9-2-2-t02.xml | 2 +- PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml | 2 +- PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml | 2 +- README.md | 2 +- 19 files changed, 21 insertions(+), 21 deletions(-) diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml index 06d090f1..9be673df 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t01.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.4 Interactive Fields - 6.4.1 General - Widget annotation actions - A Widget annotation dictionary shall not contains the A or AA keys + A Widget annotation dictionary shall not contain the A or AA keys
- A Widget annotation dictionary shall not contains the A or AA keys + A Widget annotation dictionary shall not contain the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) diff --git a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml index cbb1eb29..477d308c 100644 --- a/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml +++ b/PDF_A/2b/6.4 Interactive Forms/6.4.1 General/verapdf-profile-6-4-1-t02.xml @@ -2,13 +2,13 @@
ISO 19005-2:2011 - 6.4 Interactive forms - 6.4.1 General - Form field actions - A Field dictionary shall not contains the A or AA keys + A Field dictionary shall not contain the A or AA keys
- A Field dictionary shall not contains the A or AA keys + A Field dictionary shall not contain the A or AA keys containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml index 34bf98a2..ff105594 100644 --- a/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml +++ b/PDF_A/2u/6.2 Graphics/6.2.11 Fonts/6.2.11.7 Unicode character maps/6.2.11.7.2 Level A and Level U conformance/verapdf-profile-6-2-11-7-2-t02.xml @@ -11,7 +11,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml index fdcc04e7..0993a8dc 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.6 Character encodings/verapdf-profile-6-2-10-6-t01.xml @@ -16,7 +16,7 @@ isSymbolic == true || cmap31Present == true || cmap10Present == true The embedded font program for a non-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 + Symbol (3,1 – Platform ID=3, Encoding ID=1) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml index 00b3d2a5..b9c3cfc4 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.7 Unicode character maps/verapdf-profile-6-2-10-7-t01.xml @@ -13,7 +13,7 @@ zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard diff --git a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml index a115669f..6d330fa4 100644 --- a/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml +++ b/PDF_A/4/6.2 Graphics/6.2.10 Fonts/6.2.10.8 Use of ActualText/verapdf-profile-6-2-10-8-t01.xml @@ -11,7 +11,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicode Area value + The ActualText entry contains Unicode PUA (Private Use Area) code points diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml index c4fd4b4c..045c181e 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t13.xml @@ -12,7 +12,7 @@ kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table element contains TFoot kid, but not contains TBody kids + Table element contains TFoot kid, but does not contain TBody kids diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml index 4fdaaa08..680d2757 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t14.xml @@ -12,7 +12,7 @@ kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table element contains THead kid, but not contains TBody kids + Table element contains THead kid, but does not contain TBody kids diff --git a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml index 712ae239..6a2adfde 100644 --- a/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml +++ b/PDF_UA/1/7.21 Fonts/7.21.7 Unicode character maps/verapdf-profile-7-21-7-t02.xml @@ -11,7 +11,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard diff --git a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml index 070f309c..5873d731 100644 --- a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml +++ b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml @@ -13,7 +13,7 @@ widget's Contents entry shall be present containsAA == false || Contents != null - Widget annotation dictionary contains an AA entry, but not contains the Contents entry + Widget annotation dictionary contains an AA entry, but does not contain the Contents entry diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml index b1703451..a9f9d232 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml @@ -15,7 +15,7 @@ table and each row groupings formed by THead, TBody and TFoot structure elements numberOfColumnWithWrongRowSpan == null - Columns 1 and %1 span different number of rows in table or one of row groupings formed by THead, + Columns 1 and %1 span different number of rows in table, or within one of row groupings formed by THead, TBody and TFoot structure elements numberOfColumnWithWrongRowSpan + 1 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml index 93038cd7..bdefa20f 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml @@ -11,7 +11,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicode Area value + The ActualText entry contains Unicode PUA (Private Use Area) code points diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml index aa1b2a96..d3d6d6d5 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml @@ -11,7 +11,7 @@ The Alt entry shall not contain any PUA values containsPUA == false - The Alt entry contains a Private Unicode Area value + The Alt entry contains Unicode PUA (Private Use Area) code points diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml index 0523b1ab..d9873daf 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml @@ -16,7 +16,7 @@ isSymbolic == true || cmap31Present == true || cmap10Present == true The embedded font program for a non-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 + Symbol (3,1 – Platform ID=3, Encoding ID=1) or the Mac Roman (1,0 – Platform ID=1, Encoding ID=0) encoding diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml index 7c06b4fb..f87ecb44 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml @@ -14,7 +14,7 @@ toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml index dd8a3e09..7bc7f936 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml @@ -13,7 +13,7 @@ in accordance with ISO 32000-2:2020, Table 167 structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 1) - An invisible annotation is included in logical structure with tag %1 (standard type = %2, + A no-view annotation is included in logical structure with tag %1 (standard type = %2, NoView = %3, ToggleNoView = %4) structParentType diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml index bd31d94e..02177aa3 100644 --- a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t13.xml @@ -11,7 +11,7 @@ If Table element contains TFoot kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table element contains TFoot kid, but not contains TBody kids + Table element contains TFoot kid, but does not contain TBody kids diff --git a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml index 6bcb3b0f..66916297 100644 --- a/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml +++ b/PDF_UA/WCAG/PDF_UA/1/verapdf-profile-7-2-t14.xml @@ -11,7 +11,7 @@ If Table element contains THead kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table element contains THead kid, but not contains TBody kids + Table element contains THead kid, but does not contain TBody kids diff --git a/README.md b/README.md index fe9edde6..74439a56 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ The repository contains all validation profiles supported by veraPDF. They are s The [PDF_A](https://github.com/veraPDF/veraPDF-validation-profiles/tree/integration/PDF_A) folder contains all rules for PDF/A validation against all PDF/A parts (ISO 19005) and conformance levels. -The [PDF_UA](https://github.com/veraPDF/veraPDF-validation-profiles/tree/integration/PDF_UA) folder holds all rules and validation profiles for PDF/UA-1 validation, as well as validation of parent-child relationships in Tagged PDF structure tree for ISO 32000-1, ISO 32000-2 and ISO 32005. Finally, this folder also contains rules and validation profiles for WCAG 2.2. This is work in progress and is in the experimental stage. +The [PDF_UA](https://github.com/veraPDF/veraPDF-validation-profiles/tree/integration/PDF_UA) folder holds all rules and validation profiles for PDF/UA-1 and PDF/UA-2 validation, as well as validation of parent-child relationships in Tagged PDF structure tree for ISO 32000-1, ISO 32000-2 and ISO 32005. Finally, this folder also contains rules and validation profiles for WCAG 2.2. This is work in progress and is in the experimental stage. See [Wiki pages](https://github.com/veraPDF/veraPDF-validation-profiles/wiki) for the documentation on the profile syntax and the details for each rule. From 3cd4a309806c2e4169bf92baf257b44983d51830 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 20 Feb 2024 10:40:58 +0000 Subject: [PATCH 542/557] Update error messages in PDF/A and PDF/UA profiles. PDF/UA-2 (8.2.5.26-2, 8.4.3-2, 8.4.3-3, 8.4.5.7-1, 8.4.5.8-2, 8.9.2.2-2, 8.10.2.3-2), PDF/UA-1 (7.2-13, 7.2-14, 7.21.7-2), PDF/A-4 (6.2.10.6-1, 6.2.10.7-1, 6.2.10.8-1), PDF/A-2 (6.4.1-1, 6.4.1-2), PDF/A-2U (6.2.11.7.2-2). Update readme --- PDF_UA/PDFUA-1.xml | 6 +++--- PDF_UA/PDFUA-2-ISO32005.xml | 20 ++++++++++---------- PDF_UA/PDFUA-2.xml | 20 ++++++++++---------- PDF_UA/WCAG-2-2-Complete.xml | 20 +++----------------- PDF_UA/WCAG-2-2-Machine.xml | 20 +++----------------- 5 files changed, 29 insertions(+), 57 deletions(-) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 37726e0e..c465b5d4 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -361,7 +361,7 @@ If Table element contains TFoot kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table element contains TFoot kid, but not contains TBody kids + Table element contains TFoot kid, but does not contain TBody kids @@ -373,7 +373,7 @@ If Table element contains THead kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table element contains THead kid, but not contains TBody kids + Table element contains THead kid, but does not contain TBody kids @@ -1272,7 +1272,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 6ce98a32..33f955bc 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -126,7 +126,7 @@ - Structure types shall not be role mapped to other structure types in the same namespace + Within a given explicitly provided namespace, structure types shall not be role mapped to other structure types in the same namespace roleMapToSameNamespaceTag == null Structure type %1 is role mapped to other structure type in the same namespace @@ -339,7 +339,7 @@ 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 numberOfColumnWithWrongRowSpan == null - Columns 1 and %1 span different number of rows in table or one of row groupings formed by THead, TBody and TFoot structure elements + Columns 1 and %1 span different number of rows in table, or within one of row groupings formed by THead, TBody and TFoot structure elements numberOfColumnWithWrongRowSpan + 1 @@ -452,7 +452,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicode Area value + The ActualText entry contains Unicode PUA (Private Use Area) code points @@ -462,7 +462,7 @@ The Alt entry shall not contain any PUA values containsPUA == false - The Alt entry contains a Private Unicode Area value + The Alt entry contains Unicode PUA (Private Use Area) code points @@ -605,7 +605,7 @@ 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 isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-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 + 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 @@ -662,7 +662,7 @@ 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 toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard @@ -755,7 +755,7 @@ - Annotations shall be included in the structure tree unless explicitly excluded by the following subclauses + Annotations shall be included in the structure tree unless explicitly excluded by the specification (popups, printer marks, invisible annotations) (structParentType != null && isArtifact == false) || (Subtype == "Popup") || (Subtype == "PrinterMark") || (Subtype == "Widget" && width == 0 && height == 0) || ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) Annotation is not included in the structure tree @@ -790,7 +790,7 @@ 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 structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 1) - An invisible annotation is included in logical structure with tag %1 (standard type = %2, NoView = %3, ToggleNoView = %4) + A no-view annotation is included in logical structure with tag %1 (standard type = %2, NoView = %3, ToggleNoView = %4) structParentType structParentStandardType @@ -853,7 +853,7 @@ Popup annotations shall not be present in the structure tree - structParentType == null || isArtifact == true + structParentType == null A Popup annotation is included in logical structure with tag %1 (standard type = %2) @@ -1062,7 +1062,7 @@ If an additional action (AA) entry is present in a widget annotation dictionary, the respective widget's Contents entry shall be present containsAA == false || Contents != null - Widget annotation dictionary contains an AA entry, but not contains the Contents entry + Widget annotation dictionary contains an AA entry, but does not contain the Contents entry diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index c5cb3a1d..5f85bd42 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -126,7 +126,7 @@ - Structure types shall not be role mapped to other structure types in the same namespace + Within a given explicitly provided namespace, structure types shall not be role mapped to other structure types in the same namespace roleMapToSameNamespaceTag == null Structure type %1 is role mapped to other structure type in the same namespace @@ -339,7 +339,7 @@ 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 numberOfColumnWithWrongRowSpan == null - Columns 1 and %1 span different number of rows in table or one of row groupings formed by THead, TBody and TFoot structure elements + Columns 1 and %1 span different number of rows in table, or within one of row groupings formed by THead, TBody and TFoot structure elements numberOfColumnWithWrongRowSpan + 1 @@ -452,7 +452,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicode Area value + The ActualText entry contains Unicode PUA (Private Use Area) code points @@ -462,7 +462,7 @@ The Alt entry shall not contain any PUA values containsPUA == false - The Alt entry contains a Private Unicode Area value + The Alt entry contains Unicode PUA (Private Use Area) code points @@ -605,7 +605,7 @@ 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 isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-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 + 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 @@ -662,7 +662,7 @@ 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 toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard @@ -755,7 +755,7 @@ - Annotations shall be included in the structure tree unless explicitly excluded by the following subclauses + Annotations shall be included in the structure tree unless explicitly excluded by the specification (popups, printer marks, invisible annotations) (structParentType != null && isArtifact == false) || (Subtype == "Popup") || (Subtype == "PrinterMark") || (Subtype == "Widget" && width == 0 && height == 0) || ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) Annotation is not included in the structure tree @@ -790,7 +790,7 @@ 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 structParentType == null || isArtifact == true || ((F & 32) == 0 || (F & 256) == 1) - An invisible annotation is included in logical structure with tag %1 (standard type = %2, NoView = %3, ToggleNoView = %4) + A no-view annotation is included in logical structure with tag %1 (standard type = %2, NoView = %3, ToggleNoView = %4) structParentType structParentStandardType @@ -853,7 +853,7 @@ Popup annotations shall not be present in the structure tree - structParentType == null || isArtifact == true + structParentType == null A Popup annotation is included in logical structure with tag %1 (standard type = %2) @@ -1062,7 +1062,7 @@ If an additional action (AA) entry is present in a widget annotation dictionary, the respective widget's Contents entry shall be present containsAA == false || Contents != null - Widget annotation dictionary contains an AA entry, but not contains the Contents entry + Widget annotation dictionary contains an AA entry, but does not contain the Contents entry diff --git a/PDF_UA/WCAG-2-2-Complete.xml b/PDF_UA/WCAG-2-2-Complete.xml index 0795c5a8..fc833642 100644 --- a/PDF_UA/WCAG-2-2-Complete.xml +++ b/PDF_UA/WCAG-2-2-Complete.xml @@ -327,7 +327,7 @@ If Table element contains TFoot kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table element contains TFoot kid, but not contains TBody kids + Table element contains TFoot kid, but does not contain TBody kids @@ -343,7 +343,7 @@ If Table element contains THead kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table element contains THead kid, but not contains TBody kids + Table element contains THead kid, but does not contain TBody kids @@ -747,20 +747,6 @@ - - - For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it - hasCorrectNestingLevel == true - - Heading level %1 is skipped in a descending sequence of header levels - - nestingLevel - 1 - - - - - - Each node in the tag tree shall contain at most one child H tag @@ -1260,7 +1246,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard diff --git a/PDF_UA/WCAG-2-2-Machine.xml b/PDF_UA/WCAG-2-2-Machine.xml index bdfce4a7..b5786013 100644 --- a/PDF_UA/WCAG-2-2-Machine.xml +++ b/PDF_UA/WCAG-2-2-Machine.xml @@ -327,7 +327,7 @@ If Table element contains TFoot kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'TFoot').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table element contains TFoot kid, but not contains TBody kids + Table element contains TFoot kid, but does not contain TBody kids @@ -343,7 +343,7 @@ If Table element contains THead kid, Table element should contain one or more TBody kids kidsStandardTypes.split('&').filter(elem => elem == 'THead').length == 0 || kidsStandardTypes.split('&').filter(elem => elem == 'TBody').length > 0 - Table element contains THead kid, but not contains TBody kids + Table element contains THead kid, but does not contain TBody kids @@ -747,20 +747,6 @@ - - - For documents that are not strongly structured, as described in ISO 32000-1:2008, 14.8.4.3.5, heading tags shall be used as follows: (*) If any heading tags are used, H1 shall be the first. (*) A document may use more than one instance of any specific tag level. For example, a tag level may be repeated if document content requires it. (*) If document semantics require a descending sequence of headers, such a sequence shall proceed in strict numerical order and shall not skip an intervening heading level. (*) A document may increment its heading sequence without restarting at H1 if document semantics require it - hasCorrectNestingLevel == true - - Heading level %1 is skipped in a descending sequence of header levels - - nestingLevel - 1 - - - - - - Each node in the tag tree shall contain at most one child H tag @@ -1260,7 +1246,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard From 1a27ddbafb858ae456686386d05d71bb62a1925c Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Tue, 20 Feb 2024 10:41:03 +0000 Subject: [PATCH 543/557] Update error messages in PDF/A and PDF/UA profiles. PDF/UA-2 (8.2.5.26-2, 8.4.3-2, 8.4.3-3, 8.4.5.7-1, 8.4.5.8-2, 8.9.2.2-2, 8.10.2.3-2), PDF/UA-1 (7.2-13, 7.2-14, 7.21.7-2), PDF/A-4 (6.2.10.6-1, 6.2.10.7-1, 6.2.10.8-1), PDF/A-2 (6.4.1-1, 6.4.1-2), PDF/A-2U (6.2.11.7.2-2). Update readme --- PDF_A/PDFA-2A.xml | 6 +++--- PDF_A/PDFA-2B.xml | 4 ++-- PDF_A/PDFA-2U.xml | 6 +++--- PDF_A/PDFA-3A.xml | 6 +++--- PDF_A/PDFA-3B.xml | 4 ++-- PDF_A/PDFA-3U.xml | 6 +++--- PDF_A/PDFA-4.xml | 6 +++--- PDF_A/PDFA-4E.xml | 6 +++--- PDF_A/PDFA-4F.xml | 6 +++--- 9 files changed, 25 insertions(+), 25 deletions(-) diff --git a/PDF_A/PDFA-2A.xml b/PDF_A/PDFA-2A.xml index 32bdc13d..ec953699 100644 --- a/PDF_A/PDFA-2A.xml +++ b/PDF_A/PDFA-2A.xml @@ -1018,7 +1018,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard @@ -1137,7 +1137,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys + A Widget annotation dictionary shall not contain the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1149,7 +1149,7 @@ - A Field dictionary shall not contains the A or AA keys + A Field dictionary shall not contain the A or AA keys containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-2B.xml b/PDF_A/PDFA-2B.xml index 602d9d15..bdf6aa62 100644 --- a/PDF_A/PDFA-2B.xml +++ b/PDF_A/PDFA-2B.xml @@ -1103,7 +1103,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys + A Widget annotation dictionary shall not contain the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1115,7 +1115,7 @@ - A Field dictionary shall not contains the A or AA keys + A Field dictionary shall not contain the A or AA keys containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-2U.xml b/PDF_A/PDFA-2U.xml index e323e5e6..1297e030 100644 --- a/PDF_A/PDFA-2U.xml +++ b/PDF_A/PDFA-2U.xml @@ -1018,7 +1018,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard @@ -1125,7 +1125,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys + A Widget annotation dictionary shall not contain the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1137,7 +1137,7 @@ - A Field dictionary shall not contains the A or AA keys + A Field dictionary shall not contain the A or AA keys containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-3A.xml b/PDF_A/PDFA-3A.xml index 6bb38063..e4e3be24 100644 --- a/PDF_A/PDFA-3A.xml +++ b/PDF_A/PDFA-3A.xml @@ -1018,7 +1018,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard @@ -1137,7 +1137,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys + A Widget annotation dictionary shall not contain the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1149,7 +1149,7 @@ - A Field dictionary shall not contains the A or AA keys + A Field dictionary shall not contain the A or AA keys containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-3B.xml b/PDF_A/PDFA-3B.xml index 5f6e5a03..bac86a9e 100644 --- a/PDF_A/PDFA-3B.xml +++ b/PDF_A/PDFA-3B.xml @@ -1103,7 +1103,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys + A Widget annotation dictionary shall not contain the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1115,7 +1115,7 @@ - A Field dictionary shall not contains the A or AA keys + A Field dictionary shall not contain the A or AA keys containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-3U.xml b/PDF_A/PDFA-3U.xml index 7070f7ad..58708227 100644 --- a/PDF_A/PDFA-3U.xml +++ b/PDF_A/PDFA-3U.xml @@ -1018,7 +1018,7 @@ The Unicode values specified in the ToUnicode CMap shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard @@ -1125,7 +1125,7 @@ - A Widget annotation dictionary shall not contains the A or AA keys + A Widget annotation dictionary shall not contain the A or AA keys containsA == false && containsAA == false A Widget annotation contains %1 key(s) @@ -1137,7 +1137,7 @@ - A Field dictionary shall not contains the A or AA keys + A Field dictionary shall not contain the A or AA keys containsAA == false A Form field dictionary contains the AA entry diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 101f77f9..1b40dcba 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -836,7 +836,7 @@ 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 that all necessary glyph lookups are able to be carried out isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-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 + 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 @@ -880,7 +880,7 @@ If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard @@ -890,7 +890,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicode Area value + The ActualText entry contains Unicode PUA (Private Use Area) code points diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index b1a8c3e7..73a32682 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -850,7 +850,7 @@ 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 that all necessary glyph lookups are able to be carried out isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-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 + 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 @@ -894,7 +894,7 @@ If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard @@ -904,7 +904,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicode Area value + The ActualText entry contains Unicode PUA (Private Use Area) code points diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index 81c1584c..f9a4ddff 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -836,7 +836,7 @@ 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 that all necessary glyph lookups are able to be carried out isSymbolic == true || cmap31Present == true || cmap10Present == true - The embedded font program for a non-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 + 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 @@ -880,7 +880,7 @@ If a ToUnicode CMap is present, the Unicode values specified there shall all be greater than zero (0), but not equal to either U+FEFF or U+FFFE toUnicode == null || (toUnicode.indexOf("\u0000") == -1 && toUnicode.indexOf("\uFFFE") == -1 && toUnicode.indexOf("\uFEFF") == -1) - The glyph has an invalid Unicode value, which is either 0, or is equal to U+FEFF or U+FFFE + The glyph has Unicode value 0, U+FEFF or U+FFFE, which is invalid by Unicode standard @@ -890,7 +890,7 @@ The ActualText entry shall not contain any PUA values containsPUA == false - The ActualText entry contains a Private Unicode Area value + The ActualText entry contains Unicode PUA (Private Use Area) code points From 2386e3d25a8b38d3b7ae3b9303a9ce1f5c314c60 Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 20 Feb 2024 14:21:59 +0300 Subject: [PATCH 544/557] Fix update-library-PDFA-profiles-workflow.yml --- .github/workflows/update-library-PDFA-profiles-workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-library-PDFA-profiles-workflow.yml b/.github/workflows/update-library-PDFA-profiles-workflow.yml index 5cde474c..26731717 100644 --- a/.github/workflows/update-library-PDFA-profiles-workflow.yml +++ b/.github/workflows/update-library-PDFA-profiles-workflow.yml @@ -41,7 +41,7 @@ jobs: git-user: "Git User" git-commit-message: ${{ github.event.head_commit.message }} git-commit-sign-off: "false" - excludes: 1a:1b:2a:2b:2u:3a:3b:3u:4:4e:4f:PDFUA-1.xml:validationProfile.xsd + excludes: 1a:1b:2a:2b:2u:3a:3b:3u:4:4e:4f:PDFUA-1.xml:PDFUA-2.xml:validationProfile.xsd - name: Notify slack if library wasn't updated if: failure() From e37b437e9ba65130290c0610bfdc2cf2290b72c6 Mon Sep 17 00:00:00 2001 From: Maxim Date: Fri, 23 Feb 2024 12:34:02 +0300 Subject: [PATCH 545/557] Update PDF/UA-2 and Tagged profiles --- .../verapdf-profile-6-7-3-t05.xml | 2 +- PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml | 4 ++-- .../verapdf-profile-5-t05.xml | 2 +- .../verapdf-profile-8-2-5-14-t03.xml | 19 +++++++++------ .../verapdf-profile-8-2-5-14-t04.xml | 23 +++++++++++++++++++ .../verapdf-profile-8-2-5-26-t01.xml | 4 ++-- PDF_UA/ISO-32005-Tagged.xml | 20 +++++++++++++--- 7 files changed, 58 insertions(+), 16 deletions(-) create mode 100644 PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t04.xml diff --git a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml index bc50be09..7e89ceae 100644 --- a/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml +++ b/PDF_A/4/6.7 Metadata/6.7.3 Version identification/verapdf-profile-6-7-3-t05.xml @@ -11,7 +11,7 @@ The value of "pdfaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of "pdfaid:rev" (%1) not the four digit year + The value of "pdfaid:rev" (%1) is not the four digit year rev diff --git a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml index d44c566f..7a5fc809 100644 --- a/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml +++ b/PDF_UA/1/7.2 Text/verapdf-profile-7-2-t15.xml @@ -2,13 +2,13 @@
ISO 14289-1:2014 - 7.2 Text - Intersections of cells - Table cell shall not have intersection with other cells + A table cell shall not have intersection with other cells
- Table cell shall not have intersection with other cells + A table cell shall not have intersection with other cells hasIntersection != true Table cell has intersection with other cells diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml index ff2b4453..86df4b6f 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml @@ -11,7 +11,7 @@ The value of "pdfuaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of "pdfuaid:rev" (%1) not the four digit year + The value of "pdfuaid:rev" (%1) is not the four digit year rev diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml index 68f9f04b..368045b3 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml @@ -1,19 +1,24 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - NoteType - The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None + ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Ref entry + 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
- + - The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None - NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None' + 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 + ghostRefs == null - NoteType attribute of the FENote structure element has value %1 instead of Footnote, Endnote or None + Ref entry in the FENote reference structure elements with object numbers %1, while + these structure elements do not reference this FENote - NoteType + ghostRefs diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t04.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t04.xml new file mode 100644 index 00000000..8f208bd6 --- /dev/null +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t04.xml @@ -0,0 +1,23 @@ + + +
+ ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - NoteType + The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None +
+ + + + + The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None + NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None' + + NoteType attribute of the FENote structure element has value %1 instead of Footnote, Endnote or None + + NoteType + + + + + + +
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml index f33e608d..143f08f6 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml @@ -2,13 +2,13 @@
ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Regular Table - Tables shall be regular. Table cell shall not have intersection with other cells + Tables shall be regular. A table cell shall not have intersection with other cells
- Tables shall be regular. Table cell shall not have intersection with other cells + Tables shall be regular. A table cell shall not have intersection with other cells hasIntersection != true Table cell has intersection with other cells diff --git a/PDF_UA/ISO-32005-Tagged.xml b/PDF_UA/ISO-32005-Tagged.xml index 5315a015..6428d424 100644 --- a/PDF_UA/ISO-32005-Tagged.xml +++ b/PDF_UA/ISO-32005-Tagged.xml @@ -1,5 +1,5 @@ - +
Tagged PDF profile for ISO 32005 specification Profile for validation of Tagged PDF structure tree relations for PDF 1.7 and PDF 2.0 standard structure types @@ -19910,16 +19910,30 @@ - Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 + A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true - A struct element does not contain the P entry + A structure element dictionary does not contain the P (parent) entry + + + The math structure type shall occur only as a child of a Formula structure element + parentStandardType == 'Formula' || parentStandardType == 'MathML' + + The math structure type is nested within %1 tag instead of Formula + + parentStandardType + + + + + + From dda76b0993df3705c6c214ee0bcc0a3cef0d15c8 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 23 Feb 2024 12:13:06 +0000 Subject: [PATCH 546/557] Update PDF/UA-2 and Tagged profiles --- PDF_A/PDFA-4.xml | 2 +- PDF_A/PDFA-4E.xml | 2 +- PDF_A/PDFA-4F.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PDF_A/PDFA-4.xml b/PDF_A/PDFA-4.xml index 1b40dcba..3c7abe4c 100644 --- a/PDF_A/PDFA-4.xml +++ b/PDF_A/PDFA-4.xml @@ -1187,7 +1187,7 @@ The value of "pdfaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of "pdfaid:rev" (%1) not the four digit year + The value of "pdfaid:rev" (%1) is not the four digit year rev diff --git a/PDF_A/PDFA-4E.xml b/PDF_A/PDFA-4E.xml index 73a32682..411f7fd1 100644 --- a/PDF_A/PDFA-4E.xml +++ b/PDF_A/PDFA-4E.xml @@ -1203,7 +1203,7 @@ The value of "pdfaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of "pdfaid:rev" (%1) not the four digit year + The value of "pdfaid:rev" (%1) is not the four digit year rev diff --git a/PDF_A/PDFA-4F.xml b/PDF_A/PDFA-4F.xml index f9a4ddff..b40fba90 100644 --- a/PDF_A/PDFA-4F.xml +++ b/PDF_A/PDFA-4F.xml @@ -1189,7 +1189,7 @@ The value of "pdfaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of "pdfaid:rev" (%1) not the four digit year + The value of "pdfaid:rev" (%1) is not the four digit year rev From 7abbc71dd12f10e8b988a1bb463957a7e4f26f64 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 14 Mar 2024 20:42:09 +0300 Subject: [PATCH 547/557] PDF/UA-2. Remove rules 8.5.1-1, 8.9.2.1-1. Update error message for rule 8.8-1 --- .../verapdf-profile-8-5-1-t01.xml | 28 --------------- .../verapdf-profile-8-8-t01.xml | 2 +- .../verapdf-profile-8-9-2-1-t01.xml | 34 ------------------- 3 files changed, 1 insertion(+), 63 deletions(-) delete mode 100644 PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml delete mode 100644 PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml diff --git a/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml b/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml deleted file mode 100644 index dfcc4d08..00000000 --- a/PDF_UA/2/8.5 Real content without textual semantics/8.5.1 General/verapdf-profile-8-5-1-t01.xml +++ /dev/null @@ -1,28 +0,0 @@ - - -
- ISO 14289-2:202x - 8.5 Real content without textual semantics - 8.5.1 General - Figure and Formula - Real content that does not possess the semantics of text objects and does not have an alternate - textual representation shall be enclosed within Figure or Formula structure elements as appropriate -
- - - - - Real content that does not possess the semantics of text objects and does not have an alternate - textual representation shall be enclosed within Figure or Formula structure elements as appropriate - itemType == 'text' || isTaggedContent == false || ActualText != null || - isArtifact == true || isFigure == true || isFormula == true - - Real content that does not possess the semantics of text objects and does not have an alternate - textual representation is not enclosed within Figure or Formula structure elements - - - - - - - - - -
diff --git a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml index 9f30bd34..86e7c50d 100644 --- a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml +++ b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml @@ -11,7 +11,7 @@ All destinations whose target lies within the current document shall be structure destinations isStructDestination == true - Destination in Outline item or Link annotation is not a structure destination + Destination in Outline item, OpenAction or Link annotation is not a structure destination diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml deleted file mode 100644 index 2d489902..00000000 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.1 General/verapdf-profile-8-9-2-1-t01.xml +++ /dev/null @@ -1,34 +0,0 @@ - - -
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2 Semantics and content - Annotations in structure tree - Annotations shall be included in the structure tree unless explicitly excluded by the specification - (popups, printer marks, invisible annotations) -
- - - - - Annotations shall be included in the structure tree unless explicitly excluded by the - specification (popups, printer marks, invisible annotations) - (structParentType != null && isArtifact == false) || - (Subtype == "Popup") || - (Subtype == "PrinterMark") || - (Subtype == "Widget" && width == 0 && height == 0) || - ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) - - - Annotation is not included in the structure tree - - - - - - - - - - - - -
From bef0e020de9b71872db1ba4cbcecb6320f03582e Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Sat, 16 Mar 2024 20:38:48 +0000 Subject: [PATCH 548/557] PDF/UA-2. Remove rules 8.5.1-1, 8.9.2.1-1. Update error message for rule 8.8-1 --- PDF_UA/PDFUA-1.xml | 2 +- PDF_UA/PDFUA-2-ISO32005.xml | 67 +++++++++++++++++------------------- PDF_UA/PDFUA-2.xml | 49 +++++++++----------------- PDF_UA/WCAG-2-2-Complete.xml | 2 +- PDF_UA/WCAG-2-2-Machine.xml | 2 +- 5 files changed, 51 insertions(+), 71 deletions(-) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index c465b5d4..7c7fd92f 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -382,7 +382,7 @@ - Table cell shall not have intersection with other cells + A table cell shall not have intersection with other cells hasIntersection != true Table cell has intersection with other cells diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 33f955bc..c5b6a009 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -57,7 +57,7 @@ The value of "pdfuaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of "pdfuaid:rev" (%1) not the four digit year + The value of "pdfuaid:rev" (%1) is not the four digit year rev @@ -226,8 +226,20 @@ - + + 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 + ghostRefs == null + + Ref entry in the FENote reference structure elements with object numbers %1, while these structure elements do not reference this FENote + + ghostRefs + + + + + + The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None' @@ -326,7 +338,7 @@ - Tables shall be regular. Table cell shall not have intersection with other cells + Tables shall be regular. A table cell shall not have intersection with other cells hasIntersection != true Table cell has intersection with other cells @@ -679,19 +691,6 @@
- - - Real content that does not possess the semantics of text objects and does not have an alternate textual representation shall be enclosed within Figure or Formula structure elements as appropriate - itemType == 'text' || isTaggedContent == false || ActualText != null || isArtifact == true || isFigure == true || isFormula == true - - Real content that does not possess the semantics of text objects and does not have an alternate textual representation is not enclosed within Figure or Formula structure elements - - - - - - - Text strings intended to be human readable shall not use the Unicode PUA @@ -732,7 +731,7 @@ All destinations whose target lies within the current document shall be structure destinations isStructDestination == true - Destination in Outline item or Link annotation is not a structure destination + Destination in Outline item, OpenAction or Link annotation is not a structure destination @@ -753,22 +752,6 @@ - - - Annotations shall be included in the structure tree unless explicitly excluded by the specification (popups, printer marks, invisible annotations) - (structParentType != null && isArtifact == false) || (Subtype == "Popup") || (Subtype == "PrinterMark") || (Subtype == "Widget" && width == 0 && height == 0) || ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) - - Annotation is not included in the structure tree - - - - - - - - - - Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, Table 167 @@ -21036,16 +21019,30 @@ - Struct element shall contain the P entry according to ISO 32000-2:2020, 14.7.2, Table 323 + A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, 14.7.2, Table 323 containsParent == true - A struct element does not contain the P entry + A structure element dictionary does not contain the P (parent) entry + + + The math structure type shall occur only as a child of a Formula structure element + parentStandardType == 'Formula' || parentStandardType == 'MathML' + + The math structure type is nested within %1 tag instead of Formula + + parentStandardType + + + + + + diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 5f85bd42..1bb419f4 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -57,7 +57,7 @@ The value of "pdfuaid:rev" shall be the four digit year /^\d{4}$/.test(rev) - The value of "pdfuaid:rev" (%1) not the four digit year + The value of "pdfuaid:rev" (%1) is not the four digit year rev @@ -226,8 +226,20 @@ - + + 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 + ghostRefs == null + + Ref entry in the FENote reference structure elements with object numbers %1, while these structure elements do not reference this FENote + + ghostRefs + + + + + + The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None NoteType == 'Footnote' || NoteType == 'Endnote' || NoteType == 'None' @@ -326,7 +338,7 @@ - Tables shall be regular. Table cell shall not have intersection with other cells + Tables shall be regular. A table cell shall not have intersection with other cells hasIntersection != true Table cell has intersection with other cells @@ -679,19 +691,6 @@ - - - Real content that does not possess the semantics of text objects and does not have an alternate textual representation shall be enclosed within Figure or Formula structure elements as appropriate - itemType == 'text' || isTaggedContent == false || ActualText != null || isArtifact == true || isFigure == true || isFormula == true - - Real content that does not possess the semantics of text objects and does not have an alternate textual representation is not enclosed within Figure or Formula structure elements - - - - - - - Text strings intended to be human readable shall not use the Unicode PUA @@ -732,7 +731,7 @@ All destinations whose target lies within the current document shall be structure destinations isStructDestination == true - Destination in Outline item or Link annotation is not a structure destination + Destination in Outline item, OpenAction or Link annotation is not a structure destination @@ -753,22 +752,6 @@ - - - Annotations shall be included in the structure tree unless explicitly excluded by the specification (popups, printer marks, invisible annotations) - (structParentType != null && isArtifact == false) || (Subtype == "Popup") || (Subtype == "PrinterMark") || (Subtype == "Widget" && width == 0 && height == 0) || ((F & 1) == 1) || ((F & 32) == 1 && (F & 256) == 0) - - Annotation is not included in the structure tree - - - - - - - - - - Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, Table 167 diff --git a/PDF_UA/WCAG-2-2-Complete.xml b/PDF_UA/WCAG-2-2-Complete.xml index fc833642..e92401e3 100644 --- a/PDF_UA/WCAG-2-2-Complete.xml +++ b/PDF_UA/WCAG-2-2-Complete.xml @@ -356,7 +356,7 @@ - Table cell shall not have intersection with other cells + A table cell shall not have intersection with other cells hasIntersection != true Table cell has intersection with other cells diff --git a/PDF_UA/WCAG-2-2-Machine.xml b/PDF_UA/WCAG-2-2-Machine.xml index b5786013..905879a4 100644 --- a/PDF_UA/WCAG-2-2-Machine.xml +++ b/PDF_UA/WCAG-2-2-Machine.xml @@ -356,7 +356,7 @@ - Table cell shall not have intersection with other cells + A table cell shall not have intersection with other cells hasIntersection != true Table cell has intersection with other cells From ff9dc74c938241e96d0fad3cd55eaee262f99623 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 18 Mar 2024 19:11:29 +0300 Subject: [PATCH 549/557] Update workflow for update PDF/UA-2 profile in library --- .github/workflows/update-library-PDFUA-profiles-workflow.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-library-PDFUA-profiles-workflow.yml b/.github/workflows/update-library-PDFUA-profiles-workflow.yml index be3ceac2..421cf664 100644 --- a/.github/workflows/update-library-PDFUA-profiles-workflow.yml +++ b/.github/workflows/update-library-PDFUA-profiles-workflow.yml @@ -6,7 +6,7 @@ on: [ integration ] paths: - 'PDF_UA/PDFUA-1.xml' - - 'PDF_UA/PDFUA-2.xml' + - 'PDF_UA/PDFUA-2-ISO32005.xml' jobs: update-files: @@ -31,7 +31,7 @@ jobs: git-user: "Git User" git-commit-message: ${{ github.event.head_commit.message }} git-commit-sign-off: "false" - excludes: 1:2:WCAG:ISO-32000-1-Tagged.xml:ISO-32000-2-Tagged.xml:PDFUA-2-ISO32005.xml:ISO-32005-Tagged.xml:WCAG-2-2.xml:WCAG-2-2-Machine.xml:WCAG-2-2-Complete.xml:WCAG-2-2-Dev.xml:PDFA-1A.xml:PDFA-1B.xml:PDFA-2A.xml:PDFA-2B.xml:PDFA-2U.xml:PDFA-3A.xml:PDFA-3B.xml:PDFA-3U.xml:PDFA-4.xml:PDFA-4E.xml:PDFA-4F.xml:validationProfile.xsd + excludes: 1:2:WCAG:ISO-32000-1-Tagged.xml:ISO-32000-2-Tagged.xml:PDFUA-2.xml:ISO-32005-Tagged.xml:WCAG-2-2.xml:WCAG-2-2-Machine.xml:WCAG-2-2-Complete.xml:WCAG-2-2-Dev.xml:PDFA-1A.xml:PDFA-1B.xml:PDFA-2A.xml:PDFA-2B.xml:PDFA-2U.xml:PDFA-3A.xml:PDFA-3B.xml:PDFA-3U.xml:PDFA-4.xml:PDFA-4E.xml:PDFA-4F.xml:validationProfile.xsd - name: Notify slack if library wasn't updated if: failure() From bcc1207a85c474424faf2cf64e2ee09e7dd449a0 Mon Sep 17 00:00:00 2001 From: Maxim Date: Sat, 23 Mar 2024 13:59:07 +0300 Subject: [PATCH 550/557] PDF/UA-2. Update rule 8.4.3-1 --- .../verapdf-profile-8-4-3-t01.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml index c45ed8b0..116d52ba 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml @@ -9,7 +9,7 @@ In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present - unicodePUA == false || actualTextPresent == true || altPresent == true + isRealContent == false || unicodePUA == false || actualTextPresent == true || altPresent == true Real content maps to Unicode PUA values, but ActualText and Alt entry are not present From 68a790f8c8c8619729e5f7b53a1c68d7055e2f90 Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Mon, 25 Mar 2024 15:49:41 +0000 Subject: [PATCH 551/557] PDF/UA-2. Update rule 8.4.3-1 --- PDF_UA/PDFUA-2-ISO32005.xml | 2 +- PDF_UA/PDFUA-2.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index c5b6a009..e62809fe 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -452,7 +452,7 @@ In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present - unicodePUA == false || actualTextPresent == true || altPresent == true + isRealContent == false || unicodePUA == false || actualTextPresent == true || altPresent == true Real content maps to Unicode PUA values, but ActualText and Alt entry are not present diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 1bb419f4..82ed9659 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -452,7 +452,7 @@ In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present - unicodePUA == false || actualTextPresent == true || altPresent == true + isRealContent == false || unicodePUA == false || actualTextPresent == true || altPresent == true Real content maps to Unicode PUA values, but ActualText and Alt entry are not present From 808250ac6d78bda3790f23d47352efc1d7979a39 Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 27 Mar 2024 13:29:21 +0300 Subject: [PATCH 552/557] PDF/UA-2 with Tagged profile. Remove duplicated rules --- PDF_UA/PDFUA-2-ISO32005.xml | 80 ------------------------------------- 1 file changed, 80 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index e62809fe..cbda0269 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -1115,20 +1115,6 @@ - - - Every structure type should be mapped to a standard structure type - isNotMappedToStandardType == false - - Non-standard structure type %1 is not mapped to a standard type - - valueS - - - - - - StructTreeRoot shall contain exactly one <Document> @@ -20977,72 +20963,6 @@ - - - A circular mapping shall not exist - circularMappingExist != true - - A circular mapping exists for %1 structure type - - valueS - - - - - - - - - Standard tags shall not be remapped to a non-standard type - remappedStandardType == null - - The standard structure type %1 is remapped to a non-standard type - - remappedStandardType - - - - - - - - - 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 - StructTreeRoot_size == 1 - - StructTreeRoot entry is not present in the document catalog - - - - - - - - - A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, 14.7.2, Table 323 - containsParent == true - - A structure element dictionary does not contain the P (parent) entry - - - - - - - - - The math structure type shall occur only as a child of a Formula structure element - parentStandardType == 'Formula' || parentStandardType == 'MathML' - - The math structure type is nested within %1 tag instead of Formula - - parentStandardType - - - - - - From 318fcbdbf59f4fcb35b1580e531b1393ba0050bb Mon Sep 17 00:00:00 2001 From: Maxim Date: Wed, 27 Mar 2024 14:40:48 +0300 Subject: [PATCH 553/557] Fix update-library-PDFA-profiles-workflow.yml --- .github/workflows/update-library-PDFA-profiles-workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-library-PDFA-profiles-workflow.yml b/.github/workflows/update-library-PDFA-profiles-workflow.yml index 26731717..1d519530 100644 --- a/.github/workflows/update-library-PDFA-profiles-workflow.yml +++ b/.github/workflows/update-library-PDFA-profiles-workflow.yml @@ -41,7 +41,7 @@ jobs: git-user: "Git User" git-commit-message: ${{ github.event.head_commit.message }} git-commit-sign-off: "false" - excludes: 1a:1b:2a:2b:2u:3a:3b:3u:4:4e:4f:PDFUA-1.xml:PDFUA-2.xml:validationProfile.xsd + excludes: 1a:1b:2a:2b:2u:3a:3b:3u:4:4e:4f:PDFUA-1.xml:PDFUA-2-ISO32005.xml:validationProfile.xsd - name: Notify slack if library wasn't updated if: failure() From 5070abb9f3e1134b47f3565514af5f213881a348 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 1 Apr 2024 21:13:44 +0300 Subject: [PATCH 554/557] Update ISO 14289-2 and ISO 32005 publication years --- PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml | 2 +- PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml | 2 +- PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml | 2 +- PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml | 2 +- PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml | 2 +- .../8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml | 2 +- .../8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml | 2 +- .../8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml | 2 +- .../8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml | 2 +- .../8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml | 2 +- .../8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml | 2 +- .../verapdf-profile-8-10-3-5-t01.xml | 2 +- .../8.11.1 General/verapdf-profile-8-11-1-t01.xml | 2 +- .../8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml | 2 +- .../verapdf-profile-8-14-1-t01.xml | 2 +- .../8.2.1 General/verapdf-profile-8-2-1-t01.xml | 2 +- .../8.2.1 General/verapdf-profile-8-2-1-t02.xml | 2 +- .../8.2.2 Real content/verapdf-profile-8-2-2-t01.xml | 2 +- .../8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml | 2 +- .../8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml | 2 +- .../8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml | 2 +- .../8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml | 2 +- .../verapdf-profile-8-2-5-12-t01.xml | 2 +- .../verapdf-profile-8-2-5-14-t01.xml | 2 +- .../verapdf-profile-8-2-5-14-t02.xml | 2 +- .../verapdf-profile-8-2-5-14-t03.xml | 2 +- .../verapdf-profile-8-2-5-14-t04.xml | 2 +- .../verapdf-profile-8-2-5-2-t01.xml | 2 +- .../verapdf-profile-8-2-5-2-t02.xml | 2 +- .../verapdf-profile-8-2-5-20-t01.xml | 2 +- .../verapdf-profile-8-2-5-20-t02.xml | 2 +- .../verapdf-profile-8-2-5-20-t03.xml | 2 +- .../verapdf-profile-8-2-5-23-t01.xml | 2 +- .../verapdf-profile-8-2-5-24-t01.xml | 2 +- .../verapdf-profile-8-2-5-25-t01.xml | 4 ++-- .../verapdf-profile-8-2-5-25-t02.xml | 2 +- .../verapdf-profile-8-2-5-26-t01.xml | 2 +- .../verapdf-profile-8-2-5-26-t02.xml | 2 +- .../verapdf-profile-8-2-5-26-t03.xml | 2 +- .../verapdf-profile-8-2-5-26-t04.xml | 2 +- .../verapdf-profile-8-2-5-26-t05.xml | 2 +- .../verapdf-profile-8-2-5-26-t06.xml | 2 +- .../8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml | 2 +- .../verapdf-profile-8-2-5-28-2-t01.xml | 2 +- .../8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml | 2 +- .../verapdf-profile-8-2-5-8-t01.xml | 2 +- .../verapdf-profile-8-4-3-t01.xml | 2 +- .../verapdf-profile-8-4-3-t02.xml | 2 +- .../verapdf-profile-8-4-3-t03.xml | 2 +- .../verapdf-profile-8-4-4-t01.xml | 2 +- .../verapdf-profile-8-4-4-t02.xml | 2 +- .../8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml | 2 +- .../8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml | 2 +- .../8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml | 2 +- .../8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml | 2 +- .../8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml | 2 +- .../8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml | 2 +- .../8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml | 2 +- .../8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml | 2 +- .../verapdf-profile-8-4-5-7-t01.xml | 2 +- .../verapdf-profile-8-4-5-7-t02.xml | 2 +- .../verapdf-profile-8-4-5-7-t03.xml | 2 +- .../verapdf-profile-8-4-5-7-t04.xml | 2 +- .../verapdf-profile-8-4-5-8-t01.xml | 2 +- .../verapdf-profile-8-4-5-8-t02.xml | 2 +- .../verapdf-profile-8-4-5-9-t01.xml | 2 +- PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml | 2 +- PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml | 2 +- PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml | 2 +- .../verapdf-profile-8-8-t01.xml | 2 +- .../verapdf-profile-8-8-t02.xml | 2 +- .../verapdf-profile-8-9-2-2-t01.xml | 2 +- .../verapdf-profile-8-9-2-2-t02.xml | 2 +- .../verapdf-profile-8-9-2-3-t01.xml | 2 +- .../verapdf-profile-8-9-2-3-t02.xml | 2 +- .../verapdf-profile-8-9-2-4-10-t01.xml | 2 +- .../8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml | 2 +- .../8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml | 2 +- .../8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml | 2 +- .../8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml | 2 +- .../verapdf-profile-8-9-2-4-14-t01.xml | 2 +- .../verapdf-profile-8-9-2-4-15-t01.xml | 2 +- .../8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml | 2 +- .../verapdf-profile-8-9-2-4-19-t01.xml | 2 +- .../verapdf-profile-8-9-2-4-19-t02.xml | 2 +- .../8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml | 2 +- .../8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml | 2 +- .../8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml | 2 +- .../8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml | 2 +- .../8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml | 2 +- PDF_UA/PDFUA-2-ISO32005.xml | 2 +- PDF_UA/PDFUA-2.xml | 2 +- 92 files changed, 93 insertions(+), 93 deletions(-) diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml index 2fa3cf2e..6fe17ba2 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 5 Version identification - PDF/UA Identification Schema + ISO 14289-2:2024 - 5 Version identification - PDF/UA Identification Schema The PDF/UA version of a file shall be specified in the value of the Metadata entry in the document catalog using the PDF/UA identification schema
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml index bcc7f4de..e86c79ff 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 5 Version identification - Part number + ISO 14289-2:2024 - 5 Version identification - Part number The value of "pdfuaid:part" shall be the part number of the International Standard to which the file conforms
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml index e50fb58d..48e23b66 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t03.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 5 Version identification - part prefix + ISO 14289-2:2024 - 5 Version identification - part prefix Property "part" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml index c31f0bb6..684cb11b 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t04.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 5 Version identification - rev prefix + ISO 14289-2:2024 - 5 Version identification - rev prefix Property "rev" of the PDF/UA Identification Schema shall have namespace prefix "pdfuaid"
diff --git a/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml index 86df4b6f..5459760b 100644 --- a/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml +++ b/PDF_UA/2/5 Version identification/verapdf-profile-5-t05.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 5 Version identification - rev property + ISO 14289-2:2024 - 5 Version identification - rev property The value of "pdfuaid:rev" shall be the four digit year
diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml index ea36f403..1a7f69ae 100644 --- a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml +++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.10 Forms - 8.10.1 General - Form structure element + ISO 14289-2:2024 - 8.10 Forms - 8.10.1 General - Form structure element Each widget annotation shall be enclosed by a Form structure element unless the widget annotation is an artifact
diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml index 099d2ea1..fd2809bc 100644 --- a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml +++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.10 Forms - 8.10.1 General - Widget annotations count + ISO 14289-2:2024 - 8.10 Forms - 8.10.1 General - Widget annotations count A Form structure element shall contain at most one widget annotation
diff --git a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml index 401427cb..52bb9361 100644 --- a/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml +++ b/PDF_UA/2/8.10 Forms/8.10.1 General/verapdf-profile-8-10-1-t03.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.10 Forms - 8.10.1 General - XFA form + ISO 14289-2:2024 - 8.10 Forms - 8.10.1 General - XFA form XFA forms shall not be present
diff --git a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml index 3ab7e915..7b082d61 100644 --- a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml +++ b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.10 Forms - 8.10.2.3 Contents entry - Lbl + ISO 14289-2:2024 - 8.10 Forms - 8.10.2.3 Contents entry - Lbl If a label for a widget annotation is not present, a Contents entry shall be provided to supply description and context for the widget
diff --git a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml index 5873d731..34b4f21e 100644 --- a/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml +++ b/PDF_UA/2/8.10 Forms/8.10.2 Context/8.10.2.3 Contents entry/verapdf-profile-8-10-2-3-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.10 Forms - 8.10.2.3 Contents entry - AA and Contents + ISO 14289-2:2024 - 8.10 Forms - 8.10.2.3 Contents entry - AA and Contents If an additional action (AA) entry is present in a widget annotation dictionary, the respective widget's Contents entry shall be present
diff --git a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml index 7c95632c..f623d136 100644 --- a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml +++ b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.3 Text fields/verapdf-profile-8-10-3-3-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.10 Forms - 8.10.3.3 Text fields - RV and V entries + ISO 14289-2:2024 - 8.10 Forms - 8.10.3.3 Text fields - RV and V entries For text fields, when an RV entry is present a V entry shall also be present, and they shall be textually equivalent
diff --git a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml index c32baf34..c5f4a016 100644 --- a/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml +++ b/PDF_UA/2/8.10 Forms/8.10.3 Fields/8.10.3.5 Signature fields/verapdf-profile-8-10-3-5-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.10 Forms - 8.10.3.5 Signature fields - Alt for the graphic + ISO 14289-2:2024 - 8.10 Forms - 8.10.3.5 Signature fields - Alt for the graphic If a portion of the appearance of a signature is represented by a graphic, alternative text shall be provided for that graphic
diff --git a/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml b/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml index dd4e0599..7988117a 100644 --- a/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml +++ b/PDF_UA/2/8.11 Metadata/8.11.1 General/verapdf-profile-8-11-1-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.11 Metadata - 8.11.1 General - Dc title + ISO 14289-2:2024 - 8.11 Metadata - 8.11.1 General - Dc title The Metadata stream as specified in ISO 32000-2:2020, 14.3 in the document catalog dictionary shall contain a dc:title entry
diff --git a/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml b/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml index a35d7640..55ab9749 100644 --- a/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml +++ b/PDF_UA/2/8.11 Metadata/8.11.2 Interactive aspects/verapdf-profile-8-11-2-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.11 Metadata - 8.11.2 Interactive aspects - DisplayDocTitle + ISO 14289-2:2024 - 8.11 Metadata - 8.11.2 Interactive aspects - DisplayDocTitle 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
diff --git a/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml b/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml index 58ffe2a0..69e29a03 100644 --- a/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml +++ b/PDF_UA/2/8.14 Use of embedded files/8.14.1 Descriptions for embedded files/verapdf-profile-8-14-1-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.14 Use of embedded files - 8.14.1 Descriptions for embedded files - Desc entry + ISO 14289-2:2024 - 8.14 Use of embedded files - 8.14.1 Descriptions for embedded files - Desc entry The Desc entry shall be present on all file specification dictionaries present in the EmbeddedFiles name tree of a conforming document
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml index af87a7af..a93adc9b 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.1 General - StructureTreeRoot + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.1 General - StructureTreeRoot 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
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml index 71b49596..2ec5f774 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.1 General/verapdf-profile-8-2-1-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.1 General - Struct element parent + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.1 General - Struct element parent A structure element dictionary shall contain the P (parent) entry according to ISO 32000-2:2020, 14.7.2, Table 323
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml index 01da480c..a2cf1f3c 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.2 Real content/verapdf-profile-8-2-2-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.2 Real content - Artifact or real content + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.2 Real content - Artifact or real content Content that is not considered real shall be an artifact
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml index 7f45146a..91fd393e 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.4 Structure types - Standard roles + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.4 Structure types - Standard roles 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; diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml index 3fd92b8e..a6c2af86 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.4 Structure types - Circular mapping + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.4 Structure types - Circular mapping A circular mapping shall not exist
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml index 7cc50adf..4201c177 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t03.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.4 Structure types - Same namespace mapping + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.4 Structure types - Same namespace mapping Within a given explicitly provided namespace, structure types shall not be role mapped to other structure types in the same namespace
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml index eec9403d..fdae67d8 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.4 Structure types/verapdf-profile-8-2-4-t04.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.4 Structure types - Remapped standard types + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.4 Structure types - Remapped standard types 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; diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml index f7d92d16..7b70bb42 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.12 Heading (Hn) and (H)/verapdf-profile-8-2-5-12-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.12 Heading (Hn) and (H) - H + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.12 Heading (Hn) and (H) - H Conforming files shall not use the H structure type
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml index 826e933b..399dc91e 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Note + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Note 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
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml index e16d6ff0..99e5e7b8 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Ref entry + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Ref entry 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml index 368045b3..017d2045 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t03.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Ref entry + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - Ref entry 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t04.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t04.xml index 8f208bd6..e6e2ebba 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t04.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.14 Footnotes and Endnotes (FENote)/verapdf-profile-8-2-5-14-t04.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - NoteType + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.14 Footnotes and Endnotes (FENote) - NoteType The value of the NoteType attribute of the FENote structure element shall be Footnote, Endnote or None
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml index 47597882..e32a1622 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.2 Document and DocumentFragment - Struct tree root child + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.2 Document and DocumentFragment - Struct tree root child 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
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml index 00cc0de9..3245a2b3 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.2 Document and DocumentFragment/verapdf-profile-8-2-5-2-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.2 Document and DocumentFragment - Struct tree root child + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.2 Document and DocumentFragment - Struct tree root child 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
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml index 114563ab..ebcde68c 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.20 Link and Reference - Link annotation + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.20 Link and Reference - Link annotation A link annotation and its associated content shall be enclosed in either a Link or Reference structure element
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml index c0046fa5..48c82d56 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.20 Link and Reference - Different locations + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.20 Link and Reference - Different locations Link annotations that target different locations shall be in separate Link or Reference structure elements
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml index e3c59bad..32e1f7ba 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.20 Link and Reference/verapdf-profile-8-2-5-20-t03.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.20 Link and Reference - Same locations + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.20 Link and Reference - Same locations Multiple link annotations shall be included in a single Link or Reference structure element if they target the same location and are semantically perceived to be a single link
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml index d9a2378a..d2b00609 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.23 Ruby (Ruby, RB, RT, RP)/verapdf-profile-8-2-5-23-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.23 Ruby (Ruby, RB, RT, RP) - Ruby's children + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.23 Ruby (Ruby, RB, RT, RP) - Ruby's children 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
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml index 4cc9a9e4..47e5ddd5 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.24 Warichu (WT, WP)/verapdf-profile-8-2-5-24-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.24 Warichu (WT, WP) - Warichu's children + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.24 Warichu (WT, WP) - Warichu's children 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
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml index b5099b5f..0ea21b6a 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 logical structure - 8.2.5.25 List (L, LI, LBody) - ListNumbering attribute + ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.25 List (L, LI, LBody) - ListNumbering attribute 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
@@ -18,7 +18,7 @@ - + diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml index e35c70fa..da226b7f 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.25 List (L, LI, LBody)/verapdf-profile-8-2-5-25-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 logical structure - 8.2.5.25 List (L, LI, LBody) - Real content within LI + ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.25 List (L, LI, LBody) - Real content within LI 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
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml index 143f08f6..f7d453d5 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Regular Table + ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Regular Table Tables shall be regular. A table cell shall not have intersection with other cells
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml index a9f9d232..87a96ecd 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Regular Table + ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Regular Table 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml index c81d96da..90c52ad2 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t03.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Regular Table + ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Regular Table Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans)
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml index e18a1839..2ce079d9 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t04.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Regular Table + ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Regular Table Tables shall be regular. Table rows shall have the same number of columns (taking into account column spans)
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml index 4b6159a3..bd909b60 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t05.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Headers, IDs and Scope + ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Headers, IDs and Scope 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml index 4270e0ab..63f1db36 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.26 Table (Table, TR, TH, TD, THead, TBody, TFoot)/verapdf-profile-8-2-5-26-t06.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 logical structure - 8.2.5.26 Table - Headers, IDs and Scope + ISO 14289-2:2024 - 8.2 logical structure - 8.2.5.26 Table - Headers, IDs and Scope 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml index 6362cc4d..ee890e1b 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.27 Caption/verapdf-profile-8-2-5-27-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.27 Caption - Caption index + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.27 Caption - Caption index When present, the Caption element shall be the first or the last child of the structure element
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml index 6984a47b..1347fb7c 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.28 Figure/8.2.5.28.2 Figure properties/verapdf-profile-8-2-5-28-2-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.28 Figure - Figure alternative and replacement text + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.28 Figure - Figure alternative and replacement text 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 diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml index 952b062c..33a5ae8c 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.29 Formula/verapdf-profile-8-2-5-29-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.29 Formula - Math structure type + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.29 Formula - Math structure type The math structure type shall occur only as a child of a Formula structure element
diff --git a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml index 4567aafb..6d29a58d 100644 --- a/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml +++ b/PDF_UA/2/8.2 Logical structure/8.2.5 Additional requirements for specific structure types/8.2.5.8 Table of Contents (TOC and TOCI)/verapdf-profile-8-2-5-8-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.2 Logical structure - 8.2.5.8 Table of Contents (TOC/TOCI) - Reference in TOCI + ISO 14289-2:2024 - 8.2 Logical structure - 8.2.5.8 Table of Contents (TOC/TOCI) - Reference in TOCI 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
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml index 116d52ba..808b654e 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4 Text representation for content - Unicode PUA + ISO 14289-2:2024 - 8.4 Text representation for content - Unicode PUA In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml index bdefa20f..055a6fd3 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4 Text representation for content - Unicode PUA in ActualText + ISO 14289-2:2024 - 8.4 Text representation for content - Unicode PUA in ActualText The ActualText entry shall not contain any PUA values
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml index d3d6d6d5..40b8e4a1 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.3 Replacements and alternatives for text/verapdf-profile-8-4-3-t03.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4 Text representation for content - Unicode PUA in Alt + ISO 14289-2:2024 - 8.4 Text representation for content - Unicode PUA in Alt The Alt entry shall not contain any PUA values
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml index f08fdd85..89e87edd 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4 Text representation for content - Lang in catalog + ISO 14289-2:2024 - 8.4 Text representation for content - Lang in catalog 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
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml index c7aae156..b039f6cf 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.4 Declaring natural language/verapdf-profile-8-4-4-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4 Text representation for content - Natural language specification + ISO 14289-2:2024 - 8.4 Text representation for content - Natural language specification 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml index 96e8a267..a797e92d 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.1 General/verapdf-profile-8-4-5-3-1-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.3 Composite fonts - CIDSystemInfo + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.3 Composite fonts - CIDSystemInfo 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml index 9068aa1d..4cffda0d 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.3 Composite fonts/8.4.5.3.2 CIDFonts/verapdf-profile-8-4-5-3-2-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.3 Composite fonts - CIDToGIDMap + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.3 Composite fonts - CIDToGIDMap 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
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml index 7f68c3fd..81a04111 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.4 Composite fonts - CMaps + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.4 Composite fonts - CMaps All CMaps used within a file that conforms to PDF/UA-2, 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
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml index 00770380..ed864a05 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.4 Composite fonts - WMode + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.4 Composite fonts - WMode 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
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml index 5387034e..73f45b47 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.4 CMaps/verapdf-profile-8-4-5-4-t03.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.4 Composite fonts - CMaps + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.4 Composite fonts - CMaps A CMap shall not reference any other CMap except those listed in ISO 32000-2:2020, 9.7.5.2 Table 116
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml index ce6bda66..6767c0e7 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.5 Embedding - General + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.5 Embedding - General 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
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml index 5afaf11a..b2cc998f 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.5 Embedding/8.4.5.5.1 General/verapdf-profile-8-4-5-5-1-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.5 Embedding - Glyphs + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.5 Embedding - Glyphs 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml index 259e223f..b1784fc4 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.6 Font metrics/verapdf-profile-8-4-5-6-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.6 Font metrics - Glyph width + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.6 Font metrics - Glyph width 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
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml index d9873daf..2b742601 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.7 Character encodings - cmaps for non-symbolic TrueType fonts + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.7 Character encodings - cmaps for non-symbolic TrueType fonts 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml index 74763d8a..b29a61f9 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.7 Character encodings - Non-symbolic TrueType fonts + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.7 Character encodings - Non-symbolic TrueType fonts 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 diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml index c480eeb1..1a6365c3 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t03.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.7 Character encodings - Symbolic TrueType fonts + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.7 Character encodings - Symbolic TrueType fonts Symbolic TrueType fonts shall not contain an Encoding entry in the font dictionary
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml index 484c3d10..a8d44259 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.7 Character encodings/verapdf-profile-8-4-5-7-t04.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.7 Character encodings - cmaps in the symbolic TrueType font program + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.7 Character encodings - cmaps in the symbolic TrueType font program 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
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml index 3bcd8ee4..469471a5 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.8 Unicode character maps - Unicode mapping + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.8 Unicode character maps - Unicode mapping 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 ISO 14289-2, 8.4.5.8
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml index f87ecb44..92b5a93a 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.8 Unicode character maps/verapdf-profile-8-4-5-8-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.8 Unicode character maps - Valid Unicode values + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.8 Unicode character maps - Valid Unicode values 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
diff --git a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml index 2ec9f5ff..e61f1ec1 100644 --- a/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml +++ b/PDF_UA/2/8.4 Text representation for content/8.4.5 Fonts/8.4.5.9 Use of .notdef glyph/verapdf-profile-8-4-5-9-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.4.5 Fonts - 8.4.5.9 Use of .notdef glyph - Use of .notdef glyph + ISO 14289-2:2024 - 8.4.5 Fonts - 8.4.5.9 Use of .notdef glyph - Use of .notdef glyph A file in conformance with PDF/UA-2 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
diff --git a/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml b/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml index 52a34510..9acbc594 100644 --- a/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml +++ b/PDF_UA/2/8.6 Text string objects/verapdf-profile-8-6-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.6 Text string objects - Unicode PUA + ISO 14289-2:2024 - 8.6 Text string objects - Unicode PUA Text strings intended to be human readable shall not use the Unicode PUA
diff --git a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml index d1823ea3..530a2bb7 100644 --- a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml +++ b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.7 Optional content - Name key present + ISO 14289-2:2024 - 8.7 Optional content - Name key present 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: diff --git a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml index 87f90c10..f35ee288 100644 --- a/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml +++ b/PDF_UA/2/8.7 Optional content/verapdf-profile-8-7-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.7 Optional content - AS key + ISO 14289-2:2024 - 8.7 Optional content - AS key The AS key shall not appear in any optional content configuration dictionary
diff --git a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml index 86e7c50d..4532bdd4 100644 --- a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml +++ b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.8 Intra-document destinations - Struct destination + ISO 14289-2:2024 - 8.8 Intra-document destinations - Struct destination All destinations whose target lies within the current document shall be structure destinations
diff --git a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml index ba1f6fd2..81391bd6 100644 --- a/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml +++ b/PDF_UA/2/8.8 Intra-document destinations/verapdf-profile-8-8-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.8 Intra-document destinations - Struct destination + ISO 14289-2:2024 - 8.8 Intra-document destinations - Struct destination All destinations whose target lies within the current document shall be structure destinations
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml index f863834f..ce875689 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.2 Annotations as artifacts - Invisible flag + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.2 Annotations as artifacts - Invisible flag Annotations shall be artifacts, if the Invisible flag is set in accordance with ISO 32000-2:2020, Table 167
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml index 7bc7f936..314d6632 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.2 Annotations as artifacts/verapdf-profile-8-9-2-2-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.2 Annotations as artifacts - NoView and ToggleNoView flags + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.2 Annotations as artifacts - NoView and ToggleNoView flags 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
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml index 4fd3cdbb..e1903c4a 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.3 Markup annotations - Annot structure element + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.3 Markup annotations - Annot structure element Markup annotations shall be enclosed within Annot structure elements
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml index b8ce7016..458d63a4 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.3 Markup annotations/verapdf-profile-8-9-2-3-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.3 Markup annotations - RC and Contents entries + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.3 Markup annotations - RC and Contents entries When both RC and Contents entries are present for markup annotation, they shall be textually equivalent
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml index d9d319a4..bc911738 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.10 File attachment/verapdf-profile-8-9-2-4-10-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - File attachment annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - File attachment annotation When a file attachment annotation references a file specification dictionary, the file specification dictionary shall include an AFRelationship entry
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml index 02a17dfb..141f4ead 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Sound annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Sound annotation Sound annotation cannot be used when conforming to PDF/UA-2
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml index 7f18e605..a877c497 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.11 Sound,movie/verapdf-profile-8-9-2-4-11-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Movie annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Movie annotation Movie annotation cannot be used when conforming to PDF/UA-2
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml index 7b8f25e3..5cbd5210 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.12 Screen/verapdf-profile-8-9-2-4-12-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Screen annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Screen annotation Screen annotations shall include a Contents entry
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml index 0b6dec28..8af2a006 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.13 Widget/verapdf-profile-8-9-2-4-13-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Widget annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Widget annotation A widget annotation of zero height and width shall be an artifact
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml index 0b6aa7e4..518e17ab 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.14 Printer's mark/verapdf-profile-8-9-2-4-14-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - PrinterMark annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - PrinterMark annotation A printer's mark annotation shall be an artifact
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml index ff4cee2a..81b552b1 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.15 Trap network/verapdf-profile-8-9-2-4-15-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Trap network annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Trap network annotation Trap network annotations shall not be used in files conforming to PDF/UA-2
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml index 6a5a2f0f..3332f14d 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.16 Watermark/verapdf-profile-8-9-2-4-16-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4.16 Watermark - Annot structure element + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4.16 Watermark - Annot structure element When used as real content, Watermark annotations shall be enclosed within Annot structure elements
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml index e0bb764b..3cb0ac8b 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - 3D annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - 3D annotation 3D annotation shall include alternate description in respective Contents entry
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml index 5e8d24bd..da9d5f76 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.19 3D and RichMedia/verapdf-profile-8-9-2-4-19-t02.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - RichMedia annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - RichMedia annotation RichMedia annotation shall include alternate description in respective Contents entry
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml index f3786c58..08ca5394 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.7 Rubber stamp/verapdf-profile-8-9-2-4-7-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Rubber stamp annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Rubber stamp annotation 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
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml index 399106a1..127257e6 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.8 Ink/verapdf-profile-8-9-2-4-8-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Ink annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Ink annotation A Contents entry describing the author’s intent shall be provided for Ink annotation
diff --git a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml index cd204f97..fc40ea98 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.2 Semantics and content/8.9.2.4 Annotation types/8.9.2.4.9 Popup/verapdf-profile-8-9-2-4-9-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.2.4 Annotation types - Popup annotation + ISO 14289-2:2024 - 8.9 Annotations - 8.9.2.4 Annotation types - Popup annotation Popup annotations shall not be present in the structure tree
diff --git a/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml index 77456463..4aa06b13 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.3 Order/8.9.3.3 Tab order/verapdf-profile-8-9-3-3-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.3.3 Tab order - Tabs in page with annotations + ISO 14289-2:2024 - 8.9 Annotations - 8.9.3.3 Tab order - Tabs in page with annotations 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
diff --git a/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml index 706a73cb..ec703ac5 100644 --- a/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml +++ b/PDF_UA/2/8.9 Annotations/8.9.4 Alternative descriptions/8.9.4.2 Alt properties/verapdf-profile-8-9-4-2-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-2:202x - 8.9 Annotations - 8.9.4.2 Alt properties - Alt and Contents + ISO 14289-2:2024 - 8.9 Annotations - 8.9.4.2 Alt properties - Alt and Contents 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
diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index cbda0269..2f331d9b 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -2,7 +2,7 @@
PDF/UA-2 + Tagged PDF validation profile - Validation rules against ISO 14289-2:202x and ISO 32005 + Validation rules against ISO 14289-2:2024 and ISO 32005
diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 82ed9659..279eb970 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -2,7 +2,7 @@
PDF/UA-2 validation profile - Validation rules against ISO 14289-2:202x + Validation rules against ISO 14289-2:2024
From 77a38a73f7b97f755290776375b7d7e64e830fcd Mon Sep 17 00:00:00 2001 From: MaximPlusov Date: Tue, 2 Apr 2024 07:14:02 +0000 Subject: [PATCH 555/557] Update ISO 14289-2 and ISO 32005 publication years --- PDF_UA/PDFUA-2-ISO32005.xml | 2 +- PDF_UA/PDFUA-2.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PDF_UA/PDFUA-2-ISO32005.xml b/PDF_UA/PDFUA-2-ISO32005.xml index 2f331d9b..73381c8a 100644 --- a/PDF_UA/PDFUA-2-ISO32005.xml +++ b/PDF_UA/PDFUA-2-ISO32005.xml @@ -323,7 +323,7 @@ - + diff --git a/PDF_UA/PDFUA-2.xml b/PDF_UA/PDFUA-2.xml index 279eb970..737217c1 100644 --- a/PDF_UA/PDFUA-2.xml +++ b/PDF_UA/PDFUA-2.xml @@ -323,7 +323,7 @@ - + From bc2d9195dc54016ff4156a4df03f218af8cdc3d4 Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 9 Apr 2024 14:13:06 +0300 Subject: [PATCH 556/557] PDF/UA-1. Update rules 7.18.1-1 - 7.18.1-3 --- .../7.18.1 General/verapdf-profile-7-18-1-t01.xml | 6 +++--- .../7.18.1 General/verapdf-profile-7-18-1-t02.xml | 7 +++---- .../7.18.1 General/verapdf-profile-7-18-1-t03.xml | 15 ++++++--------- .../verapdf-profile-7-4-4-t01.xml | 2 +- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml index a67748d3..9e98a618 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t01.xml @@ -2,14 +2,14 @@
ISO 14289-1:2014 - 7.18 Annotations - 7.18.1 General - Annot tag - An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag + An annotation, excluding annotations of subtype Widget, PrinterMark or Link, shall be nested within an Annot tag
- An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || + An annotation, excluding annotations of subtype Widget, PrinterMark or Link, shall be nested within an Annot tag + Subtype == 'Widget' || Subtype == 'PrinterMark' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml index 07b620cf..b75377c4 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t02.xml @@ -2,7 +2,7 @@
ISO 14289-1:2014 - 7.18 Annotation - 7.18.1 General - Alt in annotation - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, + An annotation (except Widget annotations or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element
@@ -10,11 +10,10 @@ - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, + An annotation (except Widget annotations or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' - || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || + Subtype == 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box diff --git a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml index a5f3993c..189866af 100644 --- a/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml +++ b/PDF_UA/1/7.18 Annotations/7.18.1 General/verapdf-profile-7-18-1-t03.xml @@ -2,22 +2,19 @@
ISO 14289-1:2014 - 7.18 Annotation - 7.18.1 General - Alt in form field - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - shall have a TU key present or all its Widget annotations shall have alternative descriptions - (in the form of an Alt entry in the enclosing structure elements) + A form field shall have a TU key present or all its Widget annotations shall have alternative + descriptions (in the form of an Alt entry in the enclosing structure elements)
- A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - shall have a TU key present or all its Widget annotations shall have alternative descriptions - (in the form of an Alt entry in the enclosing structure elements) + A form field shall have a TU key present or all its Widget annotations shall have alternative + descriptions (in the form of an Alt entry in the enclosing structure elements) isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box - neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt - entry in the enclosing structure element) + A form field neither has TU key nor its Widget annotations have alternative descriptions + (in the form of an Alt entry in the enclosing structure element) diff --git a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml index 3dc9e7bc..44faf7b3 100644 --- a/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml +++ b/PDF_UA/1/7.4 Headings/7.4.4 Unnumbered headings/verapdf-profile-7-4-4-t01.xml @@ -1,7 +1,7 @@
- ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - Number of H + ISO 14289-1:2014 - 7.4 Headings - 7.4.4 Unnumbered headings - Number of H Each node in the tag tree shall contain at most one child H tag
From c013c5e582c4a1c2ca64700cd240b732781c59a8 Mon Sep 17 00:00:00 2001 From: bdoubrov Date: Fri, 12 Apr 2024 08:16:03 +0000 Subject: [PATCH 557/557] PDF/UA-1. Update rules 7.18.1-1 - 7.18.1-3 --- PDF_UA/PDFUA-1.xml | 12 ++++++------ PDF_UA/WCAG-2-2-Complete.xml | 12 ++++++------ PDF_UA/WCAG-2-2-Machine.xml | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/PDF_UA/PDFUA-1.xml b/PDF_UA/PDFUA-1.xml index 7c7fd92f..dec82aa2 100644 --- a/PDF_UA/PDFUA-1.xml +++ b/PDF_UA/PDFUA-1.xml @@ -911,8 +911,8 @@
- An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' + An annotation, excluding annotations of subtype Widget, PrinterMark or Link, shall be nested within an Annot tag + Subtype == 'Widget' || Subtype == 'PrinterMark' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot @@ -925,8 +925,8 @@ - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') + An annotation (except Widget annotations or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element + Subtype == 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element @@ -937,10 +937,10 @@ - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) + A form field shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) + A form field neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) diff --git a/PDF_UA/WCAG-2-2-Complete.xml b/PDF_UA/WCAG-2-2-Complete.xml index e92401e3..2b8bd4af 100644 --- a/PDF_UA/WCAG-2-2-Complete.xml +++ b/PDF_UA/WCAG-2-2-Complete.xml @@ -897,8 +897,8 @@ - An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' + An annotation, excluding annotations of subtype Widget, PrinterMark or Link, shall be nested within an Annot tag + Subtype == 'Widget' || Subtype == 'PrinterMark' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot @@ -911,8 +911,8 @@ - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') + An annotation (except Widget annotations or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element + Subtype == 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element @@ -923,10 +923,10 @@ - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) + A form field shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) + A form field neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) diff --git a/PDF_UA/WCAG-2-2-Machine.xml b/PDF_UA/WCAG-2-2-Machine.xml index 905879a4..4759b281 100644 --- a/PDF_UA/WCAG-2-2-Machine.xml +++ b/PDF_UA/WCAG-2-2-Machine.xml @@ -897,8 +897,8 @@ - An annotation, excluding annotations of subtype Widget, Popup or Link, shall be nested within an Annot tag - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' + An annotation, excluding annotations of subtype Widget, PrinterMark or Link, shall be nested within an Annot tag + Subtype == 'Widget' || Subtype == 'PrinterMark' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || structParentStandardType == 'Annot' %1 annotation is an Artifact or is nested within %2 tag (standard type = %3) instead of Annot @@ -911,8 +911,8 @@ - An annotation (except annotations of type Link, Widget or Popup, or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element - Subtype == 'Widget' || Subtype == 'Popup' || Subtype == 'Link' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') + An annotation (except Widget annotations or hidden annotations, or those having rectangle outside the crop-box) shall have either Contents key or an Alt entry in the enclosing structure element + Subtype == 'Widget' || isOutsideCropBox == true || (F & 2) == 2 || (Contents != null && Contents != '') || (Alt != null && Alt != '') %1 annotation whose hidden flag is not set and whose rectangle is not outside the crop-box has neither Contents key nor an Alt entry in the enclosing structure element @@ -923,10 +923,10 @@ - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) + A form field shall have a TU key present or all its Widget annotations shall have alternative descriptions (in the form of an Alt entry in the enclosing structure elements) isOutsideCropBox == true || (F & 2) == 2 || (TU != null && TU != '') || (Alt != null && Alt != '') - A form field whose hidden flag is not set and whose rectangle is not outside the crop-box neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element) + A form field neither has TU key nor its Widget annotations have alternative descriptions (in the form of an Alt entry in the enclosing structure element)